8장. 실용주의 프로젝트 소제목 실용주의 팀 유비쿼터스 자동화 가차없는 테스트 결국은 모두 글쓰기 위대한 유산 오만과 편견 자동화 할 수 있는 모든 것들을 자동화하자. 그리고 그 시간에 새로운 코드(또는 버그)를 작성하는데 투자하자. 41. 실용주의 팀 실용주의 프로그래머가 실용주의 철학을 가진 팀에서 일하게 되면 생산력은 몇 배로 증가할 것이다. 코드의 품질을 중요시 여기는 문화를 장착하고, 그러한 정신을 갖추지 못한 개발자를 격려하는 문화를 만들자. 팀을 기능을 중심으로 조직하자. 팀을 만드는 것에도 직교성을 유지하도록 하여, 중복되는 일을 하지 않도록 하라. 42. 유비쿼터스 자동화 컴파일 하거나, 코드를 생성하는 일, 빌드 및 테스트를 자동화하는데 힘쓰라. 자동화 할 수 있는 모든 것들을 자동화하..
개발 도서/The Pragmatic Programmer
7장. 프로젝트 전에 소제목 요구사항의 구렁텅이 불가능한 퍼즐 풀기 준비가 되어야만 명세의 함정 동그라미와 화살표 프로젝트를 시작 하기 전에 정리해야 할 사항들에 대해 다룬다. 프로젝트 전에 무엇을 해야할까?? 일단 요구사항을 정리해야 한다. 그리고 어떻게 프로젝트를 진행할 것인지에 대한 계획을 세워야한다. 만약 이 두 가지의 작업이 선행되지 않는다면, 프로젝트가 시작하기도 전에 망할 것 같다는 의심이 들고, 이는 실제 결과로 이어질 가능성이 매우 크다. 36. 요구사항의 구렁텅이 요구사항을 수집하기 보다는 채굴할 줄 알아야 한다. 사용자가 말한 요구사항의 핵심이 무엇인지를 파악하고, 이를 구체화하자. 그렇게 하기 위해서는 사용자와 함께 일하면서 지속적인 요구사항 채굴 과정이 필요하다. 아래 두 개의 요..
6장. 코딩하는 동안 해야 할 일들 소제목 우연에 맡기는 프로그래밍 알고리즘의 속도 리팩터링 테스트하기 쉬운 코드 사악한 마법사 리팩터링 하는 방법과 코딩을 어떻게 하는지에 대해 설명하는 장이고, 정말 많은 도움이 되는 설명들이었다. 31. 우연에 맡기는 프로그래밍 왜 프로그램이 이렇게 동작하는지 설명할 수 없다면, 이 프로그램은 내 프로그램이 아니다. 지금은 이렇게 작동하지만 다른 환경에서는 다르게 동작할 수도 있다. 언제나 내 제어 안에 있는 코드를 작성하려고 노력해야 한다. 우리는 모두 우연에 맡기는 코딩을 하지 않는다고 생각할 수도 있으나, 항상 그렇게 하기는 어렵다. 의도적으로 프로그래밍 하는 방법 언제나 자기가 지금 무엇을 하고 있는지 알아야 한다. 맹목적으로 코딩하지 말라. 계획을 세우고 그..
5장. 구부러지거나 부러지거나 소제목 결합도 줄이기와 디미터 법칙 메타프로그래밍 시간적 결합 단지 뷰일 뿐이야 칠판 결합을 중이는 것의 중요성을 이전 장에서도 말하고 이 책의 전반적인 주제라는 생각이 든다. 왜 결합을 줄여아하는지와, 결합을 줄이는 방법에 대해서 이 책에서 알려주고 있다. 26. 결합도 줄이기와 디미터 법칙 결합도가 높은 프로그램은 유지보수하기 굉장히 힘들다. 한 부분을 수정했을 때, 해당 부분만 영향을 받아야하는데, 여러 부분에서 동시에 기존과 다른 동작을 한다면 유지보수 하는 것 보다 프로그램을 다시 만드는 것을 택하게 될 것이다. 디미터 함수 법칙은 프로그램에서 모듈간 결합도를 최소화하려 시도하는 것이다. 디미터 법칙에서 객체가 호출할 수 있는 메서드는 아래와 같다. 자신 메서드로 ..
4장. 실용주의 편집증 소제목 계약에 의한 설계 죽은 프로그램은 거짓말을 하지 않는다. 단정적 프로그래밍 언제 예외를 사용할까 리소스 사용의 균형 "완벽한 소프트웨어는 만들 수 없다." 라는 말로 이번 장이 시작한다. 지금까지 누구도 만든 적 없었고, 현재 누구도 만들 수 없는 것으로 보이기 때문에 우리는 방어적으로 프로그래밍 해야 한다. 어디서 문제가 발생할지 모르기 때문에 문제 발생 상황을 대비해야 한다. 21. 계약에 의한 설계 루틴을 실행 할 때 2가지의 상태가 있다. 선행 조건 후행 조건 선행 조건은 루틴이 실행되기 전에 참이어야 하는 조건들이다. 해당 조건이 아니면 루틴은 실행되지 않는 다는 것을 보장해야 한다. 후행 조건은 루틴의 실행 결과로 바뀌는 값들이다. 루틴의 실행 결과는 예측 가능해..
3장. 기본적인 도구 소제목 일반 텍스트의 힘 조개 놀이 파워 에디팅 소스코드 관리 디버깅 텍스트 처리 코드 생성기 이번 장에서는 개발자가 다루는 도구에 대해 설명한다. 개발자들은 주로 텍스트 에디터를 다루고, 나같은 경우 IDE를 사용해 개발을 하는데, IDE화 GUI에 익숙한 개발자들은 여기에서 벗어나야 할 필요성에 대해 말해주어서, 셸에 대해 조금 더 배워서 강력한 기능을 가진 셸 스크립트 언어를 사용해 자동 실행을 해보고 싶어졌다. 14. 일반 텍스트의 힘 우리가 알고 있는 지식을 일반 텍스트로 저장하면 언젠가는 이를 열어 봐야 하는 경우가 생길 것이다. 15. 조개 놀이 GUI는 굉장히 편리하다. 보이는 대로 실행되기 때문에 직관적이고, 배우기도 쉽다. 그리고 몇몇 과정들은 CUI 보다 더 빠르..
2장. 실용주의 접근법 소제목 중복의 해악 직교성 가역성 예광탄 프로토타입과 포스트잇 도메인 언어 추정 이번 장에서는 소프트웨어를 개발할 때 보편적으로 적용되는 부분에 대한 내용을 다룬다. 특히 '직교성'과 '가역성'에 대한 부분은 실제 소프트웨어의 생산성과 유지보수성에 크게 도움을 주므로 다시 한번 찾아보며 읽기 바란다. 7. 중복의 해악 DRY(Don't Repeat Yourself) 원칙에 대해 설명한다. 가끔 복사-붙여넣기를 통해 살짝만 코드를 수정하려는 유혹에 나는 쉽게 빠졌다. 하지만 조그만 부분을 수정하려 할 때에 모든 부분을 수정해야 하므로, 근본적인 부분을 모듈로 만든 후 한 부분에서만 수정하도록 만드는 것이 장기적인 관점에서 도움이 된다. 8. 직교성 직교성이란 두 벡터가 서로 직각으로..
1장. 실용주의 철학 소제목 고양이가 내 소스코드를 삼켰어요 소프트웨어 엔트로피 돌멩이 수프와 삶은 개구리 적당히 괜찮은 소프트웨어 지식 포트폴리오 소통하라! 1장 실용주의 철학에서는 실용주의 프로그래머가 어떻게 일반 프로그래머와 다른지에 대해 설명한다. 1. 고양이가 내 소스코드를 삼켰어요 가장 큰 약점은 약점을 보일 것에 대한 두려움이다. 문제가 발생했을 때, "고양이가 내 소스코드를 삼켰어요" 라는 답변은 실용적이지 않다. 자신이 맡은 일에 책임을 지고, 자신이 저지른 실수에도 책임을 질 줄 알아야 한다. 모르는 것은 모른다고 솔직하게 말하고 문제가 발생한 부분은 어설픈 변명 대신 대안을 제시하라. 2. 소프트웨어 엔트로피 소프트웨어는 여러가지 물리 법칙을 무시하지만 엔트로피는 대부분의 경우 적용된..