항목 87 : 술어를 순수한 함수로 만들어라. ( Make predicates pure functions. )
{ 술어 : predicate 란 true/false 로 리턴하는 함수 객체를 말한다. 왜 순수한 함수로 만들어야 하는가? 알고리즘 속으로 들어간 함수 객체는 그 값이 복사에 의해서 구현부 쪽으로 전달 되어 진다. 이 과정에서 함수 객체의 상태의 현재 상태가 유지되며 전달되기가 어렵기 때문에, 아예 순수하게 만들어서, 사용하는게 더 편하다는 의미에서 순수한 함수로 만들어야 한다는 것이다. 몇가지 술어 함수 만드는 일반론이 있는데, operator() 를 const 로 만들고, 가상 함수가 없도록 하고, 내부 데이터를 쓰지 않는다 라는 일반론이다. 이 이야기는 pimple 이디엄과 맞물리면서 꽤 좋게 생각된다. ^^ 반드시 상태를 가지는 함수 객체여야 한다면, 내부 데이터가 포인터로 유지되게 하면 된다. ..
책 정리/C++ Coding Standards : C++ 코딩의 정석
2009. 4. 16. 23:14
최근댓글