티스토리 뷰
http://book.naver.com/bookdb/book_detail.nhn?bid=9899036
이 책 제목의 번역은 직역 그대로 "보다 나은 프로그래머 되는 법"으로 하는게 낫지 않았나 싶다.
먼가 프로그래머를 위한 도덕서 같은 느낌?
p31. 좋은 코드를 작성하려면 코드에 신경을 써야 한다. 훌륭한 프로그래머가 되려면 시간과 노력을 투자해야 한다.
p32. ... 의도가 드러나는 코드를 작성해야 하며, ...유지 보수가 가능해야 한다. ... 또한 정확해야 한다. ...그 어떤 코드든 간에 해당 코드를 만지기 전보다 더 나아지도록 해야 한다. ... 하지만 그 새로운 것들을 실제로 적용하는 것은 적절한 상황에 한정해야 한다.
p35. 정돈된 코드 유지하기
p47. 코드 적게 쓰기.
- 허술한 논리
- 중복 제거
- 죽은 코드 제거
- 불필요한 주석 제거
- 장황한 내용 제거
- 나쁜 설계 회피
- 적절한 공백
p60. 매일같이 코드를 더 좋게 만들라. 중복 코드는 발견 즉시 제거하라.
p65. 불가피한 결과물
- 백엔드 지원 코드에 남아있는 경우
- 더는 사용되지 않는 자료형 또는 클래스가 프로젝트에 남아있는 경우
- 기존 제품의 기능들이 거의 제거되지 않는 경우
- 코드에 대한 오랜 기간의 유지 보수로 인해 함수 일부가 실행되지 않는 경우
- 잘 사용되지 않는 이벤트 핸들러가 있는 경우
- 전혀 사용되지 않는 함수 반환 값이 있는 경우
- '디버그' 코드가 괴사하는 경우
p67. 미래에 필요할지도 모르는 기능이라도 코드를 제거하는 것이 안전하다. 버전 관리 시스템에서 되돌릴 수 있다.
p68. 코드 정리와 기능 변화는 별도의 커밋으로 이루어져야 한다.
p83. 소프트웨어 분석 단서 찾기
- 소스 획득의 용이성
- 코드 빌드의 용이성
- 테스트
- 파일 구조
- 문서
- 정적 분석
- 요구사항
- 프로젝트 의존성
- 코드 품질
- 구조
p86. 시스템의 실제 구조는 이상적 설계와 다를 수 있다. 문서가 아닌 코드를 믿으라.
p97. 보이스카우트 규칙을 따르라. 어떤 코드를 건드리든 이전보다 나아지도록 하라.
p98. 코드 수정은 천천히, 주의깊게 하라. 한 번에 하나씩 수정하라.
p125. 재현할 수 없는 버그
- 스레드를 이용하는 코드
- 네트워크 상호 작용
- 저장 장치의 다양한 속도
- 메모리 손상
- 전역변수/싱글톤
p197. KISS : Keep It Simple, Stupid.
p199. 간결한 설게의 목적은 오용을 막는 것이다. 간결한 API를 보여주기 위해 복잡한 부분을 내부에 포함하고 있을 수 있다.
간결한 설계는 가능한 한 작은 크기로 이루어진다. 그보다 더 작을수가 없는 수준의 작은 크기 말이다.
p203. 딱 필요한 만큼의 코드만 작성하라. 무엇이든 추가하는 것은 복잠함이 되고 짐이 될 것이다.
p206. 일을 멈추고 생각하라. 바보 같은 코드를 작성하지 말라.
실수를 인정하고 코딩에 있어서의 잘못된 결정을 인정하라. 그로부터 배우라.
p207. 주의를 기울이라. 부주의하게 코드를 작성하지 말라.
p214.
- 잘못되거나 위험한 코드 나쁘거나 중복되거나 불쾌한 코드를 수정하는 것은 혼란이나 탈선 혹은 소중한 시간의 낭비가 아니다. 오히려 적극 권장하며 사실 바라는 바이기도 하다. ...
- 리펙토링 또한 권장한다. 올바른 작동을 위해 코드의 근본적인 부분을 고쳐야 하는 작업이라면, 리팩토링을 적절하게 가하라. ...
- 누구도 코드의 어떤 영역을 소유하고 있지 않다. ... 코드에 대한 편협한 취향을 피하라. ...
- 실수를 하거나 잘못된 코드를 작성하는 것은 범죄가 아니다. ...배우고 성장하라.
- 어떤 사람의 의견을 다른 사람의 의견보다 중요하게 여겨서는 안 된다. ...
- 좋은 프로그래머는 변화를 기대한다. ...
- 우리는 여러 보완책으로 이루어진 안전망에 의거한다. 리뷰나 페어 프로그래밍, 테스트(자동 유닛 테스트, 통합 테스트, QA 관련)가 코드를 확실하게 보장하는 중요 부분이 되는 것을 확인했다. ...
p216. 자동화된 테스트는 코드 수정에 대한 확신을 심엊줄 수 있는 귀중한 안전 도구이다.
p235. 소스 코드는 버전 관리 도구에서 살아간다. 프로젝트가 성장할수록 서식처에 더 의지하게 된다.
p242. 개발과 테스트 사이에 인위적인 단절을 만들어내지 않도록 주의하라.
p243. 팀 간의 의사소통이 건전하지 않으면 코드도 건전해지지 않는다.
p269. 일찍 자주 배포하라.
p270. 소프트웨어 배포 절차를 계획하고 구축하는 일을 마지막까지 미루지 말라. 조기에 구축하고, 자주 빠르게 빌드를 반복하라. 다른 소프트웨어를 디버깅할 때와 마찬가지로 빌드 역시 디버그하라.
p275. 지속적으로 배우는 상태를 유지하라. 배울만한 새로운 무언가를 항상 찾아보라.
배움을 즐기는 것을 배우라.
p276.
- 새로운 기술을 습득하라.
- 새로운 기술적 기법을 배우라.
- 사람들과 함께 일하는 것을 배우라.
- 새로운 문제 영역에 대해 배우라.
- 어떻게 배워야 할지 배우라.
- 완전히 다른 것을 배우라.
p278. 우리는 배울 때 종종 너무 좁게 초점을 맞춘다. 더 넓은 분야에 대해 참고하라. 많은 분야에서 영감을 얻으라.
p279. 나중에 버릴지언정 지금 배우고 있는 것을 기록하라.
p284. 방금 배워서 기억 속으로 침투한 것들을 사용해보라. 예시를 활용하고 문제를 풀어보고, 프롲젝트를 새로 만들어보라.
p308. 읽을 수 없거나 불필요하게 '뛰어난' 코드를 작성하는 방법으로 자신이 없어서는 안 될 사람이라는 것을 부각시키지 말라.
p319. 좋은 프로그래머는 다양한 언어와 방법론을 알고 있는 만큼 문제 해결의 범위가 넓다. 이는 좋은 코드를 작성하는데 도움이 된다.
p339. '더 열심히' 보다는 '더 현명하게'
p369. 훌륭한 프로그래머들 주변에 의도적으로 머물라.