게으른 나르의 코딩

[Clean Code] 5장 ~ 6장까지 요약 본문

Support/Clean Code

[Clean Code] 5장 ~ 6장까지 요약

개발자 나르 2022. 5. 3. 00:16
반응형

5장 형식 맞추기

형식을 맞추는 목적

코드의 형식은 의사소통의 일환이기 때문에 협업에 있어서 매우 중요한 내용이다.

맨 처음 구현 스타일과 가독성 수준을 잡아놓는다면 추후에 사용되는 유지보수 용이성과 확장성에 지대한 영향을 미친다.

 

세로 형식

적절한 행 길이를 유지하기 위한 방법

1. 신문 기사처럼 작성하라

- 이름은 간단하면서도 설명이 가능하게 짓는다.

첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사하여 마지막에는 가장 저차원 함수와 세부 내역이 나오겠끔 작성한다.

 

2. 개념은 빈 행으로 분리하라

JAVA로 예를 들자면 패키지 선언부, import 문, 각 함수 사이에 빈 행이 들어간다.

되게 간단한 규칙 같지만 이 방법이 정말 중요하다. 빈 행은 새로운 개념을 시작한다는 시각적 단서로 활용 되어서 빈 행 다음 줄에 눈길이 멈추게 된다.

 

즉 정리하자면 밀접한 코드(개념)끼리는 세로로 가까이 놓여야 한다는 뜻이다.

 

변수와 인스턴스 변수 선언

변수는 사용하는 위치에 최대한 가까이 선언하여 함수가 무엇을 나타내는지 알 수 있겠끔 한다.

인스턴스 변수는 클래스 맨 처음에 선언한다.

 

종속 함수

한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치하고 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.

예시)

function a() {b()}

function b() {console.log("a");}

 

가로 형식

가로는 일반적으로 모니터에 따라 다를 수 있지만 최대한 120자로 제한하는 것이 한 눈에 볼 수 있어서 좋다.

 

들여쓰기

들여쓰기는 파일의 구조를 한 눈에 보기 위해서 필수적으로 사용해야된다. 물론 짧고 간단한 조건문이나 반복문에 들여쓰기를 사용하지 않고 한 줄로 처리하는 유혹도 생기지만 그 짧은 코드로 인해 가독성이 떨어질 수 있어 들여쓰기를 사용하는 것을 권장한다.

 

요약하자면 역시나 가독성이다. 전의 포스터와 마찬가지로 가독성에 대한 내용이 주를 이루고 있다. 그만큼 협업에 있어서 가독성이 가장 중요하다는 걸 알 수 있다.

 

6장 객체와 자료 구조

자료/객체 비대칭

객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.

자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다.

(자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.

반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다. 

이렇듯 둘 다 장단점이 있기 때문에 상황에 맞춰서 적절하게 사용해야한다.

 

디미터 법칙

모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다. 

즉, 객체는 조회 함수로 내부 구조를 공개하면 안 된다는 의미다.

 

자료 전달 객체

자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다.

자료 전달 객체(Data Transfer Object, DTO)라고 한다.

특히 데이터베이스와 통신하거나 소켓에서 받은 메시지의 구문을 분석할 때 유용하다.

좀 더 일반적인 형태는 Bean 구조다.

 

요약하자면 객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다.

자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.

어떤 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다.

새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다.

그러므로 직면한 문제에 최적인 해결책을 선택하는 것이 올바른 길이다.

 

책 이름과 저자 링크 : https://book.naver.com/bookdb/book_detail.nhn?bid=7390287

반응형

'Support > Clean Code' 카테고리의 다른 글

[Clean Code] 7장 ~ 10장까지 내용 요약  (0) 2022.05.03
[Clean Code] 1장 ~ 4장까지 내용 요약  (0) 2022.04.30
Comments