개발자 99% 커뮤니티에서 수다 떨어요!
우리는 완벽한 소프트웨어를 만들 수 없다.
Fail fast
작게 작게
2022.03.24(목)
4장 실용주의 편집증
Topic 23 계약에 의한 설계
Topic 24 죽은 프로그램은 거짓말을 하지 않는다
Topic 25 단정적 프로그래밍
Topic 26 리소스 사용의 균형
Topic 27 헤드라이트를 앞서가지 말라
“나는 내가 아무 것도 모른다는 것을 안다" 라는 철학자의 말 처럼 책에서는 “우리는 완벽한 소프트웨어를 만들 수 없다”고 단언하고 있다. 실용주의 프로그래머는 자신을 비롯한 어느 누구도 믿지 않기에 방어책을 마련한다. 그리고 그 방어 수단으로, 계약에 의한 설계, 오류처리, 단언적 프로그래밍, 현명한 리소스 관리 원칙, 작은 단위로 작업하고 예언하지 말 것을 얘기한다.
단언문, 자바에서도 단언문 assert 가 어느 시점에 추가되었다. 당시에는 의미도 몰랐고 사용할 일도 없어서 관심 밖이였지만 최근까지도 시험삼아 몇 번 써보고 잊고 있었다. 일반적인 오류처리라면 예외처리 수단이 있었기에 그 사용처가 애매했었다. 기본적으로 작동이 꺼져 있는 것도 영향이 있었다.
Fail fast 라는 개념도 들어서 알고 있었고 개발 중에 그 철학을 적용해보려 노력했지만 구체적으로 정확하게 어떻게 하라는 건지 감이 오지는 않았다.
그런데 이 책에서는 이 두 개념에 대해서 명확하게 가이드를 제시하고 있다. 절대 있어서는 안 될 일이 발생하면 단언문을 사용하여 즉시 프로그램을 종료하라고. 정상적이지 않은 프로그램이 계속 작동하는 것 보다는 죽은 프로그램이 덜 위해하다고. Fail fast!
이 장에서 이야기하는 개념들은 어느 정도 알고 있고 개발 중에 실천하려고 노력하고 있지만, DBC나 단언적 프로그래밍은 조금 거리가 있었다. Fail fast 개념도 다시 생각해 볼 기회가 되었다.
DBC에 대해 어렴풋이 인지하고 있었는데, 상식선에서라도 공부할 필요성이 있겠다.
클래스 불변식, 의미론적 불변식에서 나오는 불변식(invariant)라는 용어가 쉽게 와 닿지 않는다. 스칼라 공부 중에 나왔던 용어이기도 해서 좀 더 살펴봐야겠다.
sunsuking 님의 TIL: https://nomadcoders.co/community/thread/3961
Tip 36 여러분은 완벽한 소프트웨어를 만들 수 없다.
Tip 37 계약으로 설계하라.
Tip 38 일찍 작동을 멈춰라.
Tip 39 단정문으로 불가능한 상황을 예방하라.
Tip 40 자신이 시작한 것은 자신이 끝내라.
Tip 41 지역적으로 행동하라.
Tip 42 작은 단계들을 밟아라. 언제나.
Tip 43 예언하지 말라.