ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Clean Code] 깨끗한 코드, 의미 있는 이름
    Dev/정리 2022. 5. 14. 21:22

    나쁜 코드란?

    - 성능이 나쁜 코드

    - 의미가 모호한 코드

    - 중복된 코드

     

    나쁜 코드가 나쁜 이유

    - 깨진 유리창 법칙

    나쁜 코드는 깨진 유리창처럼 계속 나쁜 코드가 만들어지도록 한다.

    - 생산성 저하

    나쁜 코드는 생산성을 저하 시킨다. 

    - 새로운 시스템을 만들어야한다

    현시스템을 유지보수하며, 대체할 새로운 시스템 개발은 현실적으로 매우 어렵다. 

     

    클린 코드

    - 성능이 좋은 코드

    - 의미가 명확한 코드(= 가독성이 좋은 코드)

    - 중복이 제거된 코드 -> 명료한 코드

     

    간단한 코드

    - 모든 테스트를 통과한다.

    - 중복이 없다.

    - 시스템 내 모든 설계 아이디어를 표현한다.

    - 클래스, 메서드, 함수 등을 최대한 줄인다.

     

    의미 있는 이름 짓기

    - 의도를 분명히 밝히기

    // 잘못된 변수
    int a;
    String b; 
    
    // 올바른 변수
    int itemCount;
    String itemName;

     

    변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말

     

    - 루프 속 i,j,k 사용하지 않기

    배열을 순회할 때 index를 의미하는 i를 사용하지 않고 advanced for 문으로 대체할 수 있다

    lamda를 사용할 수도 있다.

    i,j,k 대신 맥락에 맞는 이름을 사용하기

     

    - 통일성 있는 단어를 사용하기

    팀원들과 네이밍회의를 통해서 통일된 단어를 사용하기

     

    - 변수명에 타입 넣지 않기

    네이밍만 보고 타입을 유추할 수 있도록!

     

    Google Java Naming Guide

    - All lower case, no underscores

    com.example.deepspace(👍)
    com.example.deepSpace(👎)
    com.example.deep_space(👎)

    - UpperCamelCase(대문자로 시작)

    // 클래스는 명사, 명사구
    Charcter, ImmutableList
    // 인터페이스는 명사, 명사구, (형용사)
    List, Readable
    // 테스트 클래스는 Test로 끝나기
    HashTest, HashIntegrationTest 

    - LowerCamelCase(소문자로 시작)

    // 메서드는 동사, 동사구
    sendMessage, stop

    // jUnit 테스트에 underscore이 사용되기도 함
    // <methodUnderTest>_<state> 패턴
    pop_emptyStack

     

    'Dev > 정리' 카테고리의 다른 글

    [Spring Security] 스프링 시큐리티 주요 아키텍처  (0) 2023.01.20
    [Clean Code] 형식 맞추기  (0) 2022.05.17
    [Clean Code] 함수  (0) 2022.05.15

    댓글

Designed by Tistory.