ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클린 코드 - 의미 있는 이름
    클린 코드(Clean Code) 2022. 1. 15. 00:01
    728x90

    소프트웨어에서 이름은 어디에서나 쓰입니다.

    변수와 함수, 인수와 클래스 패키지 나아가 소스코드까지 여러 가지 도처에 사용됩니다.

    "의도를 분명하게 이름을 지어라" 라고 말하는 건 쉽습니다.

     

    의미 있고 좋은 이름을 짓기 위해서는 어떻게 해야할까요?

    존재 이유, 수행 기능, 사용 방법에 대한 질문에 답할 수 있어야 합니다.

     

    1. 그릇된 정보를 피하라

    나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안 됩니다.

    여러 계정을 그룹으로 묶을 때 실제 List가 아니라면 accountList라고 명명하면 안 됩니다.

    프로그래머에게 List라는 단어는 특수한 의미이며 실제 자료구조가 List가 아니라면 그릇된 정보를 제공합니다.

    또한 특정 문화에서만 사용하는 언어보다는 모두가 아는 단어를 사용하는 게 좋습니다.

    *코드를 읽는 사람은 프로그래머이기 때문에 이점을 고려하면 좋습니다.

     

    2. 서로 흡사한 이름을 피하자

    연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못합니다.

    theMessage와 message가 존재한다면 이 둘의 차이점을 알 수 있을까요?

    a1, a2가 존재한다면 이 둘의 차이점을 알 수 있을까요?

    서로 흡사한 이름을 피하고 읽는 사람이 차이를 알도록 이름을 지어야 합니다.

     

    비슷한 예시로 똑같은 메서드를 클래스마다 fetch, retrieve, get 으로 제각각으로 부르면 혼란이 발생합니다.

    *하지만 같은 기능을 하는 것이 아니라면 이름을 변경하는 게 옳다

    예시로 보자면 기존 값 2개를 더하여 새로운 값을 만드는 add 메서드를 사용하고 있었을 때 집합에 하나의 값을 추가하는 메서드의 이름을 어떻게 지어야 할까요?

    똑같은 메서드가 아니기 때문에 add라고 부르는 대신에 insert나 append라는 이름이 더 적합합니다.

     

    3. 검색하기 쉬운 이름을 사용하자

    만약에 변수의 이름을 e로 지었다면 영어에서 e는 많이 사용되는 문자이기 때문에 이 변수가 사용된 곳을 수정하기 위해 검색하려면 찾기가 매우 힘들 것입니다.

    따라서 최소한 검색이 가능한 이름을 사용해야 합니다.

     

    4. 의미 있는 맥락을 추가하자

    스스로 의미가 분명한 이름은 존재하지만 대부분의 이름은 그렇지 못할 수도 있습니다.

    따라서 클래스, 함수, 이름 공간에 넣어 맥락을 부여하고 모든 방법이 실패하면 마지막 수단으로 접두어를 붙입니다.

    예를 들어 firstName, lastName, street, houseNumber, city, state, zipcode라는 변수가 있습니다.

    이를 보았을 때 주소라는 사실을 알 수 있습니다.

    하지만 state라는 변수 하나만 사용한다면 이 변수가 주소의 일부라는 사실을 알아채기 힘듭니다.

    이를 해결하기 위해 이름 공간에 맥락을 추가한다면 addr라는 접두어를 추가하여 addrFirstName, addrLastName, addrState라고 사용합니다.

    만약 클래스 공간에 맥락을 추가한다면 Address라는 클래스를 사용하여 해당 변수들을 관리하면 더 좋습니다.

    만약 함수 공간에 맥락을 추가하고 싶다면 해당 변수들을 함수 안에 넣고 함수 이름을 통하여 맥락을 추가할 수 있습니다.

     

    하지만 의미가 분명하다면 짧은 이름이 긴 이름보다는 좋기 때문에 무분별하게 맥락을 사용하지는 말아야 합니다.

     

     

     

     

    출처

    클린 코드 ( 로버트. C 마틴)

    '클린 코드(Clean Code)' 카테고리의 다른 글

    클린 코드 - 객체와 자료 구조  (0) 2022.01.28
    클린 코드 - 형식 맞추기  (0) 2022.01.23
    클린 코드 - 주석  (0) 2022.01.21
    클린 코드 - 함수 (+ 추상화 수준이란?)  (0) 2022.01.18
    클린 코드 시작  (0) 2022.01.14

    댓글

Designed by Tistory.