개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
자신의 실수에 대비한 방어책을 마련하라 - 자기 자신을 포함해서 아무도 믿지 말라!
'하지만 물론 그런 일은 절대 일어나지 않을 거야' 라는 생각이 든다면 그런 일을 확인하는 코드를 추가하라
"자신이 시작한 것은 자신이 끝내라"
TIL (Today I Learned) 날짜
2022.03.24
오늘 읽은 범위
4장. 실용주의 편집증
책에서 기억하고 싶은 내용을 써보세요.
여러분은 완벽한 소프트웨어를 만들 수 없다
우리는 문제가 생기기 전에 주의하고, 일어나지 않을 법한 일에 대비하며, 절대 자신을 모면하기 힘든 곤경으로 몰아넣지 않는다.
실용주의 프로그래머는 자신의 실수에 대비한 방어책을 마련한다
코드의 공급자와 사용하는 사용자는 권리와 책임에 대해 동의해야 한다.
버그 상황에서 헤어나는 도중에 어떤 손상도 입히지 않도록 보장해야 한다.
단정적 프로그래밍 - 여러분의 가정assumption을 적극적으로 검증하는 코드를 작성하는 것
언제나 작은 단계들을 고수해야 한다. 그래야 절벽에서 추락하지 않을 수 있다.
정확한 프로그램이란 무엇인가?
:자신이 하는 일이라고 주장하는 것보다 많지도 적지도 않게 딱 그만큼만 하는 프로그램
-> 이 주장을 문서화하고 검증하는 것이 '계약에 의한 설계'의 핵심
계약으로 설계하라
'있을 수 없는 일' 이 발생했을 떄 우리는 그 사실을 알아야 한다.
실용주의 프로그래머는 만약 오류가 발생했다면 정말로 뭔가 나쁜일이 생긴 것이라고 자신에게 이야기 한다. 일단 그놈의damn 오류 메시지 좀 읽어라.
일찍 작동을 멈춰라
방금 있을 수 없는 일이 발생했다는 것을 코드가 발견했다면 프로그램은 더는 유효하지 않다고 할 수 있다. 이 시점 이후로 하는 일은 모두 수상쩍은 게 된다. 되도록 빨리 종료할 일이다.
단정문으로 불가능한 상황을 예방하라
'하지만 물론 그런 일은 절대 일어나지 않을 거야' 라는 생각이 든다면 그런 일을 확인하는 코드를 추가하라.
자신이 시작한 것은 자신이 끝내라
리소스를 할당하는 함수나 객체가 리소스를 해제하는 책임 역시 져야 한다는 뜻일 뿐이다.
작은 단계들을 밟아라. 언제나
언제나 신중하게 작은 단계들을 밟아라. 더 진행하기 전에 피드백을 확인하고 조정하라.
: 여기서 피드백이란 여러분의 행동을 독립적으로 확증하거나 반증하는 것이라면 모두 피드백이다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
완벽한 소프트웨어를 만들수 없다! 이러한 사실을 받아들이면서 어떻게 이러한 사실을 장점으로 바꿀수 있을까에 대한 내용의 장이였다. 코드를 작성하면서 편집증 적으로 자신이 작성한 코드와 다른 사람이 작성한 코드에 대한 권리와 책임에 대해 생각을 해야 한다니 여간 깐깐한 내용이 아닐수 없다고 생각도 들었다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
클래스 불변식class invariant : 무엇을 말하고자 하는지 확실하게 와닿지가 않는다.
오늘 읽은 다른사람의 TIL
coppersoon 님의 TIL - https://coppersoon.notion.site/4-_-3109cbe2e84e4c0b8c9656a06e4806f2