{

술어 : predicate 란 true/false 로 리턴하는 함수 객체를 말한다.

왜 순수한 함수로 만들어야 하는가?
 알고리즘 속으로 들어간 함수 객체는 그 값이 복사에 의해서 구현부 쪽으로 전달 되어 진다. 이 과정에서 함수 객체의 상태의 현재 상태가 유지되며 전달되기가 어렵기 때문에, 아예 순수하게 만들어서, 사용하는게 더 편하다는 의미에서 순수한 함수로 만들어야 한다는 것이다.

몇가지 술어 함수 만드는 일반론이 있는데, operator() 를 const 로 만들고, 가상 함수가 없도록 하고, 내부 데이터를 쓰지 않는다 라는 일반론이다.  이 이야기는 pimple 이디엄과 맞물리면서 꽤 좋게 생각된다. ^^

반드시 상태를 가지는 함수 객체여야 한다면, 내부 데이터가 포인터로 유지되게 하면 된다. 문제는 메모리 해제에 대해서 각별히 주의를 해야 한다는 것이다.

}

'책 정리 > C++ Coding Standards : C++ 코딩의 정석' 카테고리의 다른 글

항목 92 : reinterpret_cast 사용을 자제하라. ( Avoid using reinterpret_cast. )  (0) 2009.04.16
항목 91 : 표현 방식이 아닌 타입에 의존하라. ( Rely on types, not on representations. )  (0) 2009.04.16
항목 90 : 타입의 변환을 피하고, 다형성을 활용하라. ( Avoid type switching; prefer polymorphism. )  (0) 2009.04.16
항목 89 : 올바른 함수 개체를 만들자. ( Write function objects correctly. )  (0) 2009.04.16
항목 88 : 알고리즘과 비교 인자에는 함수보다 함수개체를 사용하라. ( Prefer function objects over functions as algorithm and comparer arguments. )  (0) 2009.04.16
항목 87 : 술어를 순수한 함수로 만들어라. ( Make predicates pure functions. )  (0) 2009.04.16
항목 86 : 적절한 STL 정렬 알고리즘을 사용하라. ( Use the right STL sort algorithm. )  (0) 2009.04.16
항목 85 : 적절한 STL 검색 알고리즘을 사용하라. ( Use the right STL search algorithm. )  (0) 2009.04.16
항목 84 : 직접 작성한 루프보다는 알고리즘을 활용하라. ( Prefer algorithm calls to handwritten loops. )  (0) 2009.04.16
항목 83 : 검증된 STL 임플리먼테이션을 사용 하라. ( Use a checked STL implementation. )  (0) 2009.04.16
항목 82 : 용량의 축소와 요소의 제거에 있어 적절한 방법을 사용하라. ( Use the accepted idioms to really shrink capacity and really erase elements. )  (0) 2009.04.16
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기

댓글을 달아 주세요

">