Reference/CleanCode

    Clean Code 보류

    이번 챕터 11을 읽으면서 정리하다가 회의감이 들었다. 어려운 거야 뭐 시스템이라는 게 워낙 광범위한 내용들을 알아야 하니 그럴 수 있는데, 이 책의 전반에 걸쳐 나오는 '추상화 단계'에 대해서 나는 정확히 이해하고 있는 게 맞나? 라는 의문을 떨칠 수가 없었다. 물론 수학 공식 마냥 답이 딱 떨어지는 정의는 못하더라도, 적어도 예시 한 두가지 정도를 들 수 있는지. 그게 무엇이고, 왜 중요한지에 대해서 내 나름대로 정의한 답을 바로 내뱉을 수 있어야 한다고 생각을 하는데 순간적으로 내가 내 스스로에게 던진 질문에 나는 답을 하지 못했고, 그게 너무 화가 난다. 나름 잘 이해하고 내 방식대로 정리를 해나가고 있다고 생각했는데, 어느 순간부터 '이해'보다, 내가 가장 혐오스러워 하는 공부법인 그저 깔끔하고..

    [Clean Code] 10. 클래스

    📕 목차 1. 클래스 체계 2. 클래스는 작아야 한다! 3. 변경하기 쉬운 클래스 1. 클래스 체계 표준 자바 관례에 따른 클래스 정의 순서 정적(static) 공개(public) 상수 정적 비공개(private) 변수 비공개 인스턴스 변수 공개 함수 비공개 함수 즉, 추상화 단계가 순차적으로 내려간다. 📌 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다. 때로는 protected로 선언하여 테스트 코드에 접근을 허용하기도 한다. 그러나 캡슐화를 풀어주는 결정은 언제나 최후의 수단이어야 한다. 2. 클래스는 작아야 한다! 함수를 만들 때와 똑같이 '작게'가 기본 규칙이다. 그렇다면 '얼마나 작아야' 하는가? 함수는 물리적인 행 수로 크기를 측정한다. 클래..

    [Clean Code] 9. 단위 테스트

    📕 목차 1. TDD 법칙 세 가지 2. 깨끗한 테스트 코드 유지하기 3. 깨끗한 테스트 코드 4. 테스트 당 assert 하나 5. F.I.R.S.T 1. TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 공감이 안 간다면 TDD 개발론에 대해 공부해보면 된다. 정말 재밌고 흥미로운 프로그래밍 관점을 터득할 수 있게 된다. :) 다만 이렇게 하면 실제 코드를 사실상 전부 테스트하는 테스트 케이스가 나온다. 방대한 양의 테스트 코드는 심각한 관리 문제를 유발하기도 한다. 2. 깨끗한 테스트 코드 유지하기 💡 테스트 코드는 실제 ..

    [Clean Code] 8. 경계

    📕 목차 1. 외부 코드 사용하기 2. 경계 살피고 익히기 3. log4j 익히기 4. 학습 테스트는 공짜 이상이다 5. 아직 존재하지 않는 코드를 사용하기 6. 깨끗한 경계 1. 외부 코드 사용하기 📌 인터페이스 제공자와 사용자 인터페이스 제공자는 적용성을 최대한 넓히려 애쓴다. (그래야 팔리니까) 인터페이스 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 이러한 괴리감이 시스템 경계에서 문제가 생길 소지가 많다. 📌 java.util.Map Map (Java SE 11 & JDK 11 ) If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value usi..