개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
클래스는 맡은 책임이 하나뿐이어야 한다
클래스의 응집도를 '높게' 유지하자
결합도를 낮춰 변경에 대한 위험성을 낮추자
TIL (Today I Learned) 날짜
2022. 03. 09
오늘 읽은 범위
10장. 클래스
-- 내용을 정리한 글
책에서 기억하고 싶은 내용을 써보세요.
클래스 설명은 만일("if"), 그리고("and"), -(하)며("or"), 하지만("but") 을 사용하지 않고서 25단어 내외로 가능해야 한다. (p. 175)
큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. 작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다. (p. 177)
새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다. 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다. (p. 188)
시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다. 결합도가 낮다는 소리는 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미다. 시스템 요소가 서로 잘 격리되어 있으면 각 요소를 이해하기도 더 쉬워진다. (p. 190)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
처음 이 챕터를 읽기 시작할 때는 클래스를 작게 쪼개야한다는 말에 읽고도 어떻게 작게? 책임이 하나라는 것은 어떻게 판단하는거지 싶은 의문이 들었는데 오히려 챕터를 다 보고 나니 처음보다는 알 것도 같은 기분이 들었다. 단순히 함수명이나 변수명을 짓는 것보다 클래스를 잘 만드는 것은 좀 더 어렵고 아직은 프로젝트에 적용시키기에 살짝 어려운 감이 있지만 예전에 읽었을 때보다 훨씬 와 닿는것이 많았다. 또한 마지막에 테스트와 관련된 언급이 나오면서 지난 챕터부터 TDD 에 좀 더 관심이 가지는 것 같다. 앞으로 작성할 코드들은 여기서 배운 내용을 조금씩 적용하며 작성해봐야겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
추상 클래스와 인터페이스의 차이,,? 자바를 주로 쓰고 있지 않다보니 약간 헷갈린다. 스위프트에서는 각각의 역할을 하는 것이 무엇인지(특히 추상 클래스) 확실히 와닿지 않았다.
오늘 읽은 다른사람의 TIL