{ 이번 항목에서 이 문구가 제일 마음에 와 닿는다. "나누고 정복하라. 작은 클래스가 만들기도 쉽고, 얻기도 쉬울 뿐만 아니라 테스트하고 사용하기도 쉬우며, 다양한 상황에서 활용하기에도 편리하다." 왜 이 부분이 와 닿았냐면, 나는 보통 주말에 청소를 한다. 여러가지 이유가 있겠지만, 아마도 빨래를 할 수 있는 날이기 때문이다. 그래서 바닥을 쓸거나 닦거나 책정리 나 쓰래기를 정리하는것을 몰아서 처리 한다. 이것은 청소 할 때마다 불편했다. 왜냐하면 좋지 못한 환경에서 지내야 하고, 청소 할 때 마다 많은 먼지가 발생하고, 이 먼지들이 여러곳에 달라 붙는다. 다시 이 먼지들을 털어내면서 더 많은 시간이 잡아 먹게 된다. 이제야 나는 청소를 할 수 있다면, 조금씩 청소를 해야 한다고 생각 했고, 각 파트..
오캄의 면도날 검색 결과
이 정석은 평생 가장 익히기 힘든 것 중에 하나이다. 명언만 써도 바로 이해 될 수 있는 항목일 것이다. 프로그램은 사람이 읽을 수 있또록 쓰여져야 하고, 컴퓨터가 실행할 수 있도록 하는 것은 그 후의 문제이다. - 헤롤드 아벨슨, 제랄드 제이 수스맨 프로그램을 쓸 때는 사람을 먼저 생각하고, 컴퓨터는 두 번째로 생각하라 - 스티브 맥코넬 컴퓨터 시스템의 가장 값싸고, 빠르고 안정적인 구성 요소는 바로, 없는 요소이다 - 고든 벨 빠진 구성 요소야말로 가장 정확한 요소이며(절대 실수하지 않으므로), 가장 안전한 요소이며(부서질 수 없으므로), 디자인하고, 문서화하고, 테스트, 관리하기 가장 쉬운 요소이다. 간결한 디자인의 중요성은 아무리 강조해도 디나치지 않다. - 존 베틀리 이 모든 말은 "하나를 표현..
이번 항목부터 40 항목까지 스타일에 대한 이야기를 한다. 1 ) 명료하고 이해하기 쉬운 코드는 누구에게 도움이 될까? 당연히 누구에게나 도움이 된다. 그 중 가장 도움이 되는 사람은 바로 자기 자신일 것이다. 예전에도 그랬고 지금도 그런데, 일화로 3주일 전에 짠 코드를 다시 볼 일이 생겼었다. 코드를 보니, 최적화를 한다고 여기 저기 if 들이 있었고, 변수명과 함수명으로는 도저히 감을 못잡겠다. 더군다나 어떻게 돌아가는지 몰라서, 결국 실행해 보면서 코드를 쫒아 보는 사태가 발생했다. .. 이 경험을 통해서 한가지 교훈을 얻게 되었는데, "나 때문에 코드를 간단하게 만들자." 로 되었다. 2 ) 다음 코드는 기존 컨테이너들에 대한 색인 테이블 생성을 위한 흥미롭고 유용한 관용구를 보여준다. 색인 테..
경험 많은 개발자라도 상속을 남용 하는 경우가 많이 있다. 상속은 머리에 껌이 달라 붙는것 처럼 띄어내기가 참 어려운 구조이기 때문에, 필요할때만 사용 해야 한다. 자.. 예제코드를 봐보자. 코드 /*예제 1 */ template class MyList { public: bool Insert( const T&, size_t index ); T Access( size_t index ) const; size_t Size() const; private: T* buf_; size_t bufsize_; }; /*예제 1(a) */ template class MySet1 : private MyList { public: bool Add( const T& );// Insert() 호출 T Get( size_t inde..
디자인 패턴은 재사용 가능한 코드를 작성하기 위한 도구이다. 이번 항목에서 디자인 패턴을 알아 볼 수 있겠는가? 코드 class string; class Record; class PrimaryKey; class GenericTableAlgorithm { public: GenericTableAlgorithm( const string& table ); virtual ~GenericTableAlgorithm(); /*성공했을 경우 true를 리턴하며, 1. 물리적으로 테이블 레코드를 읽는다. 2. 수행해야 하는 열인지 판단하기 위해 Filter를 실행한다. 3. 수행하는 열의 목록이 완료되었을때 각 열에 대해 ProcessRow를 호출한다. */ bool Process(); private: /*열을 처리해야 ..
최근댓글