일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- nunjucks
- react-router-dom
- ExpressJS
- jest.config.mjs
- Glob Pattern
- JEST
- Switch 사용불가
- Passport
- nodejs
- Board
- mysql
- typescript
- sequelize
- Today
- Total
게으른 나르의 코딩
[Clean Code] 5장 ~ 6장까지 요약 본문
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 |