http://www.yes24.com/Product/Goods/80749963?scode=029
심플 소프트웨어
100년 뒤에도 유용할 소프트웨어 설계 원칙 & 프로그래머의 바른 길!Google의 코드 건강(Code Health), 즉 코드의 가독성, 안정성, 단순성, 유지보수성은 어떻게 개선되어 왔을까? 오픈소스 버그질라(Bugwilla)는 어떻게 침체기를 벗어나 다운로드 수를 10배 이상 늘렸을까? 그 중심에는 이 책의 저자 맥스-카넷 알렉산더...
www.yes24.com
유용한 소프트웨어 원칙이라는 키워드에 바로 구매하고 말았다. 책도 얇다.
소프트웨어를 복잡하게 하지않게하기 위한 프로그래밍 원칙들을 담고 있다.
책에 코드가 없다. 장점이면서 단점이다.
개발자의 마인드셋을 위한 책.
'복잡성을 없애자. 단순함 추구'
1. 마인드셋 : 할 거면 잘하자
2. 엔지니어의 자세 : 올바른 방법을 지향하자
3. 능력자 프로그래머의 비밀 : 자신의 일을 잘 이해한다.
4. 설계의 원칙 : 구현보다 유지보수의 수고를 줄이기 위해 노력한다.
여기서 유지보수 수고는 시스템 복잡성에 비례
5.시스템 복잡성의 단서
- 꼼수를 써야 코드가 잘 작동한다.
- 다른 개발자가 작동방식을 물어본다.
- 다른 개발자들이 코드를 잘못된 방식으로 사용해 버그 발생
- 경력자조차 이해가 잘안됨
- 코드 수정이 두려움
- 관리자가 하나 파일이나 클래스에 여러개발자가 투입되길 원함
- 기능 추가 방법을 알아내기 힘듬
- 구현 방식을 두고 논쟁이 자주 발생
- 무의미한 수정
6. 하위 호환성을 유지한다.
7. 설계는 초반에 한다.
8. 엄격한 애플리케이션일수록 더 단순하게 작성할 수 있다. 하지만 트레이드오프를 고려해라.
9. 코드의 기능에는 필요한 만큼만 포괄하자
10. 코드가 단순할 수록 버그가 줄어든다. 프로그램의 모든 것이 단순해지도록 늘 노력해라.
11. 재발방지
12. 디버깅의 시작은 내가 모른다에서 시작하여 데이터를 수집한다.
- 정상 시스템이 어떻게 작동하는지 알아낸다.
- 문제의 원인을 모른다는 사실을 인정
- 문제를 일으키는 원인 무엇인지 알아낼 때까지 데이터를 살펴본다.
- 증상이 아닌 원인을 고침
13. 코드 복잡성 다루기
- 문제목록: 답답한 부분을 서로 가져오기
- 회의하기: 목록을 공유
- 버그 리포트 : 목록들을 리포토로 만든다
- 우선순위 선정
- 과제 : 할 사람 정하기
- 계획 : 언제 고칠지, 전체적으로 꾸준히 개선
14. 리팩토링은 생산성이 우선되고 진행한다.
15. 친절한 코드
16. 오픈소스 유지시 오픈마인드를 유지한다.
17 .단순성과 보안. 입구는 줄이고, 간결하고 단순하게 하여 보안을 강화
18 .기술의 대한 과제: 물질, 에너지, 시간 공간에는 기술이 유용하지만, 마음, 소통같은 인간의
문제에는 고민의 여지가 있다.
19. 테스트 단언문. 반드시 무엇인가를 단언해야함. 단언문이 없으면 테스트가 아니다.
20. 성공의 비밀 : 꾸준히 나아지기. 개떡같은 부분을 계속해서 수정하자.
21. 개떡 같은 부분은 어떻게 찾는가. 사용자의 설문등으로 데이터를 수집
22. 나쁜아이디어 알아내기
- 소프트웨어 설계 법칙을 어기면서 구현
- 사용자에게 도움이 안됨
- 누가봐도 이상함
- 문제를 해결못하는 수정사항
- 이게 정말 좋은 아이디어 인지 확신이 없음
나쁜 아이디어는 아니오라고 거절을 해야하고, 좋은 아이디어가 담긴 아이디어를 제시한다.
23. 빠른 프로그래밍 비결 :
- 너무 많은 생각하지 않기. 어떤 기능은 잘 알고 쓰는지부터.
- 그려보기
- 완전히 이해한 부분부터 시작하기
- 주위환경통제 : 배고픔, 졸음, 소음 기타 등등
24. 자만심 자제
내코드가 멋져보다 코드의 목적을 생각하자
25. 조급해하지말기
멀리보자(모질라의 사례)
26. 훌륭한 프로그램
- 사용자의 명령을 제대로 따름
- 예상한대로 작동
이 책은 하나의 체크 리스트로 생각하면 편할 것같다. 사실, 엔지니어용 자기계발서의 느낌도난다.
책이 얇은 만큼 빈부분을 경험으로 체워야하는 부분이 있다.
'읽은책' 카테고리의 다른 글
스프링부트 시작하기 (0) | 2019.12.15 |
---|---|
오브젝트 (0) | 2019.11.20 |
개발자의 글쓰기 (0) | 2019.11.01 |
읽기 좋은 코드가 좋은 코드다 (0) | 2019.10.25 |
객체지향의 사실과 오해 (0) | 2019.09.22 |