개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
나는 완벽한 개발을 할 수 없다.
미래를 예측하려 들지 말자.
확실한 규칙을 설계하려 노력하자
</예시>
TIL (Today I Learned) 날짜
2022.03.25
오늘 읽은 범위
4장 실용주의 편집증
책에서 기억하고 싶은 내용을 써보세요.
여러분은 완벽한 소프트웨어를 만들 수 없다.
계약에 의한 설계
정직한 거래를 보장하는 최선의 해법 중 하나는 ‘계약’이다.
루틴의 선행 조건이 위반된 경우에는 루틴이 호출되어서는 안 된다.
시작하기 전에 자신이 수용할 것은 엄격하게 확인하고, 내어 줄 것에 대해서는 최소한도를 약속하는 것이다.
코드를 작성하기 전에 유효한 입력 범위가 무엇인지, 경계조건이 무엇인지, 루틴이 뭘 전달한다고 약속하는지, 혹은 더 중요하게는 무엇을 약속하지 않는지 등을 나열하는 것만으로도 더 나운 소프트웨어를작성하는 데에 엄청난 도움이 된다.
불변식의 자격이 있는 요구 사항을 찾았다면 여러분이 작성하는 모든 문서에 잘 드러나도록 만들어라.
죽은 프로그램은 거짓말을 하지 않는다
모든 오류는 정보를 준다.
일반적으로 죽은 프로그램이 끼치는 피해는 이상한 상태의 프로그램이 끼치는 피해보다 훨씬 적은 법이다.
단정적 프로그래밍
여러분의 첫 번째 방어선은 가능한 오류를 모두 검사하는 것이고, 그다음은 그러고도 놓친 것을 잡아내기 위해 단정을 사용하는 것이다.
리소스 사용의 균형
자신이 시작한 것은 자신이 끝내라.
리소스를 할당하는 루틴이 해제 역시 책임져야 한다는 것이다.
리소스를 할당하는 것이 언제나 그 리소스를 해체할 책임까지 져야 한다.
헤드라이트를 앞서가지 말라
작은 단계들을 밟아라. 언제나.
더 진행하기 전에 피드백을 확인하고 조정하라.
불확실한 미래에 대비한 설계를 하느라 진을 빼는 대신 언제나 교체 가능한 코드를 작성하여 대비하면된다.
대부분의 경우 내일은 오늘과 거의 같을 것이다. 하지만 확신하지는 말라.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
실용주의 프로그래머를 읽을 수록 내가 생각했던 개발과 괴리가 발생하는 것 같다. 사실 내가 너무 개발을 쉽게 생각했던 것 같다. 개발은 많은 부분을 생각하고 미리 예측해야하지만, 너무 많이 예측해서는 안된다. 이러한 부분을 앞으로 더 읽어보며 좋은 개발자가 되기위해 노력해야겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
그렇다면 어디까지 우리는 예측해야하는가? 오로지 내가 예측 가능한 범위까지만 예측한다면 그것은 결국 오류가 아니지 않을까?