-
[클린코드] 5. 형식 맞추기 - 요약 및 인사이트웹 개발/클린코드 2022. 4. 10. 16:56반응형
인사이트 정리
클린 코드를 읽고 코드를 짜다보니 더 좋은 코드를 짜고 싶어 머리를 싸매게 된다. 속도가 느려지는 것은 당연..
이런 고민을 선배 개발자에게 나누니 좋은 코드인지 아닌지는 서비스를 유지보수하고 확장했을 때 명확해지니
너무 고민하지말고 먼저 코드를 짜고 리팩토링을 해보라고 이야기를 해주었다.
클린코드에서도 코드 형식이 너무 중요하기 때문에 맹목적으로 따르면 안된다고 하는 것을 보고
책의 내용에 내 코드를 맞추기보다는, 책의 개념들을 참고해 나(팀)만의 규칙으로 만드는 것이
중요한게 아닌가 하는 생각이 들었다.
eslint나 prettier처럼 코드 스타일을 맞춰주는 도구들이 많은데 도구들에 의존하기 보다는
규칙들을 적용해 더 잘 활용해보아야겠다.
요약
프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야한다.
코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야한다.
1. 형식을 맞추는 목적
- 코드 형식은 중요하다! 너무나도 중요하므로 융통성 없이 맹목적으로 따르면 안 된다.
- 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
2. 적절한 행 길이를 유지하라
- 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다는 사실이다.
- 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.
1) 신문기사처럼 작성하라
- 이름은 간단하면서도 설명이 가능하게 짓는다. 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 정도로 신경써서 짓는다.
- 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다.
- 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다.
2) 개념을 빈 행으로 분리하라
- 각 행은 수식이나 절을 나타내고 일련의 행 묶음은 완결된 생각하나를 표현한다.
- 생각 사이는 빈 행을 넣어 분리해야 마땅하다. 빈 행은 새로운 개념을 시작한다는 시각적 단서다.
3) 세로 밀집도
- 줄바꿈이 개념을 분리한다면 세로 밀집도는 연관성을 의미한다.
- 즉 서로 밀집한 코드 행은 세로로 가까이 놓여야 한다는 뜻이다.
4) 수직 거리
- 시스템이 무엇을 하는지 이해하고 싶은데, 이 조각 저 조각이 어디에 있는지 찾고 기억하느라 시간과 노력을 소모한다.
- 같은 파일에 속할 정도로 밀접한 두 개념은 세로 거리로 연관성을 표현한다. 연관성이 깊은 두 개념이 멀리 떨어져있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다.
3. 변수선언
- 변수는 사용하는 위치에 최대한 가까이 선언한다.
- 우리가 만든 함수는 매우 짧으므로 지역변수는 각 함수 맨 처음에 선언한다.
4. 인스턴스 변수
- 인스턴스 함수는 클래스 맨 처음에 선언한다.
5. 종속함수
- 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 호출하는 함수를 호출되는 함수보다 먼저 배치한다.
6. 개념적 유사성
- 그 외에 비슷한 동작을 수행하는 일군의 함수가 좋은 예다. 명명법이 똑같고 기본 기능이 유사하고 간단하다.
- 종속적인 관계가 없더라도 가까이 배치할 함수들이다.
1) 세로순서
- 호출되는 함수를 호출하는 함수보다 나중에 배치한다. 그러면 소스 코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다.
- 가장 중요한 개념을 가장 먼저 표현한다.
7. 가로 형식 맞추기
- 개인적으로는 120정도로 행 길이를 제한한다.
1) 가로 공백과 밀집도
- 가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다.
ex) 함수 이름과 이어지는 괄호 사이에는 공백을 넣지 않았다. 함수와 인수는 서로 밀접하기 때문이다.
- 공백을 넣으면 한 개념이 아니라 별개로 보인다.
ex) 함수를 호출하는 코드에서 괄호 안 인수는 공백으로 분리했다. 쉼표를 강조해 인수가 별개라는 사실을 보여주기 위해서다.
- 연산자 우선순위를 강조하기 위해서도 공백을 사용한다.
2) 들여쓰기
- 이렇듯 범위로 이뤄진 계층을 표현하기 위해 우리는 코드를 들여쓴다.
- 왼쪽으로 코드를 맞춰 코드가 속하는 범위를 시각적으로 표현한다. 그러면 이 범위에서 저 범위로 재빨리 이동하기 쉬워진다.
8. 들여쓰기 무시하기
9. 팀 규칙
- 팀에 속한다면 자신이 선호해야 할 규칙은 바로 팀 규칙이다.
반응형'웹 개발 > 클린코드' 카테고리의 다른 글
[클린코드] 7. 오류 처리 - 요약 및 인사이트 (0) 2022.04.18 [클린코드] 6. 객체와 자료구조 - 요약 및 인사이트 (0) 2022.04.17 [클린코드] 4. 주석 - 요약 및 인사이트 (0) 2022.04.07 [클린코드] 3. 함수 - 요약 및 인사이트 (1) 2022.04.04 [클린코드] 2. 의미있는 이름 - 요약 및 인사이트 (0) 2022.04.02