성급하게 비관하지 마라. 불필요한 복사 생성자를 호출하게 한다든지, 루프내에 불필요한 작업을 한다든지, ..... 뭐 기본적인 내용이다. 이런것들은 디자인을 크게 해치지 않으며, 보기에도 불편한게 아니므로, 크게 생각되지 않는다. Effective C++, Exceptiona C++, 등에 이런 자세한 것들이 많이 나오니, 여기서는 이렇게 정리~ 총평 음..~?
C++ 코딩의 정석 검색 결과
라틴 속담 채찍을 때린다고 말이 달리고 싶어지는 것은 아니다. 시작을 "라틴 속담"으로 했는데, 그 이유는, 최적화를 한다고 해서, 그게 최적화가 꼭 되는게 아니라는 말을 하고자 함에 있다. 이번 항목은, 이른 최적화가 왜 좋지 않은지, 무엇이 더 좋은 최적화 인지를 논하는 항목이다. 이른 최적화는 디자인과 코드를 보다 복잡하게 만들고 읽기 힘들게 하며, 비록 성능상에 이점이 있다 해도, 최종 목적이 되는 결과물과 비교해서 더 좋은 성능을 발휘하는 경우는 극히 드믈다. 만약, 코드를 변경하게 될 일이 생기게 될 경우, 더 변경이 까다롭게 된다. 이는 다음의 말을 생각나게 한다. "빠른 프로그램을 정확한 프로그램으로 바꾸는 것보다, 정확한 프로그램을 빠른 프로그램으로 바꾸는게 훨씬 쉽다" 그리고, 최적화를..
이 정석은 평생 가장 익히기 힘든 것 중에 하나이다. 명언만 써도 바로 이해 될 수 있는 항목일 것이다. 프로그램은 사람이 읽을 수 있또록 쓰여져야 하고, 컴퓨터가 실행할 수 있도록 하는 것은 그 후의 문제이다. - 헤롤드 아벨슨, 제랄드 제이 수스맨 프로그램을 쓸 때는 사람을 먼저 생각하고, 컴퓨터는 두 번째로 생각하라 - 스티브 맥코넬 컴퓨터 시스템의 가장 값싸고, 빠르고 안정적인 구성 요소는 바로, 없는 요소이다 - 고든 벨 빠진 구성 요소야말로 가장 정확한 요소이며(절대 실수하지 않으므로), 가장 안전한 요소이며(부서질 수 없으므로), 디자인하고, 문서화하고, 테스트, 관리하기 가장 쉬운 요소이다. 간결한 디자인의 중요성은 아무리 강조해도 디나치지 않다. - 존 베틀리 이 모든 말은 "하나를 표현..
나는 이것을 첫번째 프로젝트 진행 중에 깨닫게 되었다. 1942 게임을 만드는 중에, 연산과 출력, 즉, 비행기의 이동과 비행기의 그림 출력을 하나의 Loop 안에 넣고 돌리고 있었다. 처음, 비행기의 이동과 비행기의 출력을 하나의 함수안에 하나의 루프안에 넣고 나서, 비행기의 이동에 따른 출력을 정상적으로 처리 했으나, 추가적으로 총알의 출력을 처리해야 될 때, 함수 안이 점점 복잡해 졌다. 명언 중에, 바보는 복잡한 것을 무시하고, 현실주의 자는 복잡한 것을 피하거나 괴로워 하고, 천재는 복잡한 것을 없앤다 - 앨런 펄리스가 했던 것이 기억이 난다. 바로 이런 상황이 "복잡한 것" 이다. 복잡한 것은 어디를 수정하든, 다른 곳도 수정해야 "정상적"으로 되는 상황을 뜻한다. 이게 물의 파장처럼 계속 퍼..
왜냐하면, 자기 자신의 능력에 크게 도움이 되기 때문이다. 예전에 웹 에디터로 "나모 웹이디터"란 프로그램이 있었다. 이 프로그램은 자동으로 웹 페이지를 만들어 주거나, 손 쉽게 웹 페이지를 만들어 주는 프로그램이다. 학생 시절, 친구들이 손쉽게 웹페이지를 나모로 만들고 있을 때, 나는 그런 프로그램이 있다는 사실 조차 몰랐고, 메모장과 직접 다른사람이 만든 웹 페이지 소스(HTML)을 보면서, 익히고 있었다. 어느날 학교에서 홈페이지 만들 기회가 생겼고, 대부분이 나모를 사용 할 때, 나만 메모장으로 만들고 있었다. .. 시간이 지나자, 다들 웹페이지를 만들었지만, 비슷했다. 하지만 나는 .. 전혀 다른 웹페이지(물론 그때 당시)를 만들었고, 웹 페이지가 다른친구들 것 보다 깔끔 했었다. 그때 후로, ..
여기서 버전 컨트롤 시스템이 무엇인지 안다는 전제하에서 이야기를 한다. 제목 자체가 .. 바로 정석이다. 혼자 하는 프로젝트에서도 꽤 쓸만하지만, 매우 빛을 낼 때가 바로, "여럿이 같이 프로젝트를 할 때" 일 것이다. 실제로 팀프로젝트에서 이게 없으면 크게 낭패를 본다. 버전 컨트롤 시스템(VCS)으로는 cvs 이 가장 저렴하다고 책에선 말하지만, 무료이면서 매우 뛰어난 SVN 이 있다. 우리 졸업 프로젝트도 마찬가지로 SVN 을 쓴다. (물론 .. 더 뛰어난 VCS 도 있다.^^ 단지 유료라는 단점이..) CVS 의 개념적인 이야기 : http://ko.wikipedia.org/wiki/CVS 다른 VCS 도 있는데, 구글에서 VCS 라고 검색하면 후두둑 나온다. 총평 조엘의 소프트웨어 이야기에서, ..
최근댓글