클린코드[Clean Code] #12. 창발성
book/cleancode 2022. 6. 1. 22:46

Chapter 12 - 22/06/01 오늘 읽은 범위 : 12장 창발성 일 때문에 못 읽고 있다가, 조금 여유로워져서 남은 부분을 이어서 읽어보려 한다. 11장 시스템 부분에서는 어떻게 하면 전체적인 시스템 관점에서 효율적으로 설계하고 코딩할 수 있는지 얘기한다. 개인적으로 느끼기에 아직 이해가 안 되는 어려운 부분이 많아서, 11장은 훑어보면서 읽고 12장을 정리해보려 한다. 11장은 추후에 자세하게 정리해보려 한다. 책에서 기억하고 싶은 내용 켄트 벡은 다음 규칙을 순서대로 따르면 설계는 단순하다고 말한다. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머의 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 설계원칙 1. 모든 테스트를 실행하라 철저한 테스트가 가능한 시스템을 만들면 더 나은..

클린 코드[Clean Code] TIL #10. 클래스
book/cleancode 2022. 5. 11. 23:24

​DAY 10 - 22/05/11 오늘 읽은 범위 : 10장 클래스 책에서 기억하고 싶은 내용 클래스 체계( p. 172 ) 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적 공개 상수가 있다면 맨 처음에 나온다. 단일 책임 원칙( p. 175 ) 단일 책임 원칙(Single Responsibility Principle : SRP)는 클래스나 모듈을 변경할 이유가 하나, 단 하나 뿐이어야 한다는 원칙이다. SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다. 응집도( p. 177 ) 메서드가 변수를 더 많이 사용할 수록 메서드와 클래스는 응집도가 더 높다. 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미기 ..

클린 코드[Clean Code] TIL #9. 8장. 경계 ~ 9장. 단위 테스트
book/cleancode 2022. 5. 7. 19:19

​DAY 9 - 22/05/07 오늘 읽은 범위 : 8장 경계, 9장 단위 테스트 책에서 기억하고 싶은 내용 8장. 경계 외부 코드 사용하기( p. 144 ) 패키지 제공자나, 프레임 워크 제공자는 적용성을 최대한 넓히려 애쓴다. 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 경계 살피고 익히기( p. 147 ) 우리 쪽 코드를 작성해 외부 코드를 호출하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까? 짐 뉴커크는 이를 학습 테스트라 부른다. 9장. 단위 테스트 TDD 법칙 세 가지( p. 155 ) 첫째 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 : 컴파일은 실패하지 않으면서, 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 : ..

클린 코드[Clean Code] TIL #8. 오류 처리
book/cleancode 2022. 5. 5. 16:36

​DAY 8 - 22/05/05 오늘 읽은 범위 : 7장 오류처리 책에서 기억하고 싶은 내용 "오류 코드보다 예외를 사용하라" - 오류가 발생하면 예외를 던지는 편이 낫다. 그러면 호출자 코드가 더 깔끔해진다.( p. 131 ) "호출자를 고려해 예외 클래스를 정의하라" - 실제로 외부 API를 사용할 때는 감싸기 기법이 최선이다. 외부 API를 감싸면 외부 라이브러리와 프로그램 사이에서 의존성이 크게 줄어든다. ( p. 137 ) "null을 반환하지 마라" - null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다.( p. 139 ) - 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다. ( p.139 ) 오늘 읽은 소감? 떠오..

클린 코드[Clean Code] TIL #7. 객체와 자료구조
book/cleancode 2022. 5. 3. 21:58

DAY 7 - 22/05/03 오늘 읽은 범위 : 6장. 객체와 자료구조 책에서 기억하고 싶은 내용 "자료 추상화" 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추려면 추상화가 필요하다! 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다.( p. 119 ) 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체지향 코드에서 쉽다.( p. 122 ) "디미터 법칙" 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙 객체라면 내부 구조를 숨겨야하므로 확실히 디미터 법칙을 위반한다. 반면, 자료구조라..