이 정석은 평생 가장 익히기 힘든 것 중에 하나이다. 명언만 써도 바로 이해 될 수 있는 항목일 것이다. 프로그램은 사람이 읽을 수 있또록 쓰여져야 하고, 컴퓨터가 실행할 수 있도록 하는 것은 그 후의 문제이다. - 헤롤드 아벨슨, 제랄드 제이 수스맨 프로그램을 쓸 때는 사람을 먼저 생각하고, 컴퓨터는 두 번째로 생각하라 - 스티브 맥코넬 컴퓨터 시스템의 가장 값싸고, 빠르고 안정적인 구성 요소는 바로, 없는 요소이다 - 고든 벨 빠진 구성 요소야말로 가장 정확한 요소이며(절대 실수하지 않으므로), 가장 안전한 요소이며(부서질 수 없으므로), 디자인하고, 문서화하고, 테스트, 관리하기 가장 쉬운 요소이다. 간결한 디자인의 중요성은 아무리 강조해도 디나치지 않다. - 존 베틀리 이 모든 말은 "하나를 표현..
전체 글 검색 결과
나는 이것을 첫번째 프로젝트 진행 중에 깨닫게 되었다. 1942 게임을 만드는 중에, 연산과 출력, 즉, 비행기의 이동과 비행기의 그림 출력을 하나의 Loop 안에 넣고 돌리고 있었다. 처음, 비행기의 이동과 비행기의 출력을 하나의 함수안에 하나의 루프안에 넣고 나서, 비행기의 이동에 따른 출력을 정상적으로 처리 했으나, 추가적으로 총알의 출력을 처리해야 될 때, 함수 안이 점점 복잡해 졌다. 명언 중에, 바보는 복잡한 것을 무시하고, 현실주의 자는 복잡한 것을 피하거나 괴로워 하고, 천재는 복잡한 것을 없앤다 - 앨런 펄리스가 했던 것이 기억이 난다. 바로 이런 상황이 "복잡한 것" 이다. 복잡한 것은 어디를 수정하든, 다른 곳도 수정해야 "정상적"으로 되는 상황을 뜻한다. 이게 물의 파장처럼 계속 퍼..
1 ) string::resize가 비멤버 함수가 될 수 있을까? 설명하라. 될 수 있다. 공개 인터페이스로 확장시켜 놓고 swap 시키면 되는데 소스코드를 보자. template void resize( std::basic_string& s, typename Allocator::size_type n, charT c ) { if( n > s.max_size() ) throw std::length_error( "won't fit"); if( n
저번 항목에 이어서, 이번 항목은 리팩토링이다. 때 마침 리팩토링 관련 서적을 읽고 있던 터라, 그 필요성을 알게 되었었터라 "무엇을 어떻게 리팩토링 할까?" 에 대해서 생각해 보게 된다. 1 ) std::string의 멤버 함수들 중 멤버가 아니면 안되는 것들은 무엇이 있고, 왜 그런가? 멤버가 아니면 안되는 함수들은, 생성자, 소멸자, 할당 연산자, operator[] 연산자들이 있다. 이것은 멤버가 아니면, 어찌 할 수 없는 것들이다. 왜 생성자와 소멸자, operator=과, operator[] 연산자들은 왜 멤버로 놔야 할까? 여기서 중요한 개념을 짚어 봐야 한다. 스콧 마이어스는 "멤버로도 구현할 수 있고, 비친구 비멤버로도 구현 할 수 있는 함수가 있다면, 비친구 비멤버를 선호 해야 한다" ..
최근댓글