본문 바로가기

클린코드9

6. 객체와 자료구조 해당 장은 결론 내용이 가장 해당 장을 내용을 잘 정리해 놓았어서 결론 먼저 기입 결론 객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입(자료구조)은 추가하기 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별 다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료구조를 추가하기는 어렵다. 어떤 시스템을 구현할 때, 개로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다. 상황에 따라 편견 없이 최적의 방향으로 구현한다. 자료 / 객체 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수.. 2022. 10. 27.
5. 형식 맞추기 적절한 행 길이를 유지하라 개념은 빈 행으로 구분하라 세로 밀집도 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다. 변수 선언 변수는 사용하는 위치에 최대한 가까이 선언한다. 인스턴스 변수 인스턴스 변수는 클래스 맨 처음에 선언한다. 변수간에 세로로 거리를 두지 않는다. 잘 설계한 클래스는 클래스의 많은(혹은 대다수) 메서드가 인스턴스 변수를 사용하기 때문이다. 종속 함수 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 또한 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다. 그러면 프로그램이 자연스럽게 읽힌다. 2022. 10. 26.
3. 함수 작게 만들어라 함수는 작게 만들수록 좋다. '''켄트가 코드를 보여줬을 때 나는 함수가 너무도 작아 깜짝 놀랐다. 그때까지 나는 장황하게 긴 스윙 프로그램 함수에 익숙했다. 그런데 Sparkle은 모든 함수가 2줄, 3줄, 4줄 정도였다. 각 함수가 너무도 명백했다. 각 함수가 이야기 하나를 표현했다. 각 함수가 너무도 멋지게 다음 무대를 준비했다. 이것이 답이다!''' 블록과 들여쓰기 if / else / while 문 등에 들어가는 블록은 한 줄이어야 한다. 그러면 바깥을 감싸는 함수가 작아질 뿐 아니라, 블록 안에서 호출하는 함수의 이름을 적절히 짓는다면, 코드를 이해하기도 쉬워진다. 이 말은 중첩 구조가 생길만큼 함수가 커져서는 안 된다는 뜻이다. 그러므로 함수에서 들여쓰기 수준은 1단이나 2단을.. 2022. 10. 24.
1. 깨끗한 코드 나쁜 코드로 치르는 대가 - 매번 얽히고설킨 코드를 '해독'해서 얽히고 설킨 코드를 더한다. 시간이 지나면서 쓰레기 더미는 점점 높아지고 깊어지고 커진다. 청소할 방법이 없다. 불가항력이다. 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 그러다가 마침내 0에 근접한다. 깨끗한 코드란? 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다. 잘 쓴 문장처럼 읽힌다. 설계자의 의도를 숨기지 않는다. 명쾌한 추상화와 단순한 제어문으로 가득하다. 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. 단위 테스트 케.. 2022. 10. 23.