클린코드 정리 (5장, 6장)

오의석·2025년 2월 1일

클린코드

목록 보기
1/1

5장 형식 맞추기

형식을 맞추려는 이유 : 코드 형식 = 의사소통의 일환

방법

1. 행길이 유지

  • 평균 200줄 미만
  • 500줄을 넘으면, 한 클랙스가 여러 기능을 수행하고 있다고 생각하자

(1) 신문기사처럼 작성하라
: 이름 간단히. 설명이 가능하도록 설계

(2) 개념은 빈 행으로 분리
: 줄 바꿈 = 개념 분리

(3) 세로 밀집도
: 세로 밀집도 = 연관성

(4) 수직거리
: 변수선언 : 변수는 사용하는 위치에 최대한 가까이 선언 (사용하는 기능의 스코프 상단에 선언)
: 인스턴스 변수 : 클래스 최상단에 선언
: 종속 함수 : 한 함수에서 다른 함수로 호출시, 세로로 가까운 곳에 선언
: 개념적 유사성 : 비슷한 동작 수행 함수들을 가까이 배치한다. (ex. 오버로딩)

2. 가로 형식 맞추기

  • 120자 이하로 설계하자

(1) 가로 공백과 밀집도
: 연산자 좌우 공백 넣기
: 함수 사용시 파라미터 간의 쉼표 및 간격 주기
(2) 가로 정렬
: 어셈블리어처럼 변수타입과 변수명의 간격을 동일하게 주지 말자
(3) 들여쓰기
: 스코프로 이뤄진 계층 표현을 위해 사용
(4) 가짜 범위
: 빈 while 혹은 for문을 사용할 때, 새 행에 세미클론을 사용하여 분리

3.팀 규칙

  • 여러 스타일을 뒤섞어 복잡하게 만드는 실수는 반드시 피해야 한다.

6장. 객체와 자료 구조

자료 추상화

  • 변수 비공개 : 변수 의존도 감소를 목적
  • 조회 함수 및 설정 함수를 사용해도 구현을 외부로 노출시키지 않게 추상화 하자

자료/객체 비대칭

절차적 코드 vs 객체 지향 코드

(1) 절차적 코드

  • 기존 자료 구조 변경 하지 않으면서 함수 추가 쉬움
  • 새로운 자료 구조 추가 어려움(모든 함수 고쳐야 함)

(2) 객체 지향 코드

  • 기존 함수 변경 하지 않으면서 새 클래스 추가 쉬움
  • 새로운 함수 추가 어려움(모든 클래스 고쳐야 함)

(3) 결론
때로는 단순한 자료 구조와 절차적 코드가 가장 적합한 상황일 수도 있다.

디미터 법칙 유의

  • 휴리스틱
  • 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다.
  • 자료 비공개, 함수 공개. 조회 함수로 내부 구조 공개 안되도록 유의
  • 기차 충돌 코드가 발생할 경우, 구조체를 감추기 위해서 의도를 파악하고 함수 설계를 다시 하면 된다.

기차 충돌 코드 유의

  • ex. 조회 함수로 내부 조회 함수를 불러오는 방식)

자료 전달 객체(DTO)

  • 데이터베이스에 저장된 가공되지 않은 정보를 애플리케이션 코드에서 사용할 객체로 변환하는 과정에서 사용하는 구조체
  • 공개 변수만 있고, 함수가 없느 클래스

활성 레코드

  • DTO의 특수한 형태. save와 find와 같은 탐색 함수도 제공한다.
  • 즉, 활성 레코드는 자료 구조로 취급한다.

결론

자료 타입 추가에 대한 유연성 필요 -> 객체
새로운 동작 추가에 대한 유연성 필요 -> 자료 구조
편견 없이 최적의 해결책을 선택하자.

profile
끊임없이 나아가는 사람이 되어볼게요.

0개의 댓글