ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [클린코드] 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. 팀 규칙 

    - 팀에 속한다면 자신이 선호해야 할 규칙은 바로 팀 규칙이다. 

    반응형

    댓글

Designed by Tistory.