밤에 쓴 코드

Clean Code) 의미있는 이름 본문

Clean Code

Clean Code) 의미있는 이름

붱이🦉 2019. 4. 21. 20:19

의미있는 이름


  • 의도를 분명히 밝혀라

    • 명확한 이름이 좋다

    • 짐작하기 쉽게

    • 함축성을 가진 코드는 의도를 숨긴 코드이다.

    • 단순성과 함축성은 다르다.

      // 함축적 -> 무슨 일을 하는지 구체적으로 드러나지 않은 이름
      func getList() -> [String] {  }
      // 짐작하기 쉬운 이름
      func getNameOfFriendsList()->[String]{ }

  • 올바른 정보

    • 유사한 개념은 유사한 표기법을 사용한다.

      •   func add(_ item:Int ){
          // 배열에 추가하는 로직
           }
          func append(_ item:Int ){
          // 배열에 추가하는 로직
          }
        • 같은 기능을 수행하나 표기가 다른 건 잘못된 정보전달의 예 이다.

        • 널리쓰이는 단어를 다른 의미로 사용하는 것도 옳지않다

        • func getFriendList() -> [String:Friend]{ }        
        • List는 프로그래머에게는 []의 의미를 내포하고 있다 . 딕셔너리 로의 반환은 예상 밖의 기능을 하는 것이다..


  • 불용어(noise word)를 사용하지 마라

    • 의미가 불분명한 이름 - Info,Data,연속적인 숫자

    • 너무 추상화되어있는 이름

    • 중복

      let friend : Any // 이후의 추가될 비슷한 변수를 고려하지 않은 네이밍
      let friendObj : Any // 두개의 변수의 차이를 이름으로 파악하기 어렵다

  • 검색하기 쉬운 이름

    • 프로그램 전역에서 사용할 이름은 자주 검색해야한다.

    • 짧은 네이밍은 검색에서 여러 결과를 반환한다.

    • 사용할 범위와 이름의 길이는 비례하는 것이 바람직하다.

      for i in array{
         // 반복문 내부에서만 쓰는 변수는 i 면 충분하다
      }
      static func a{}         // 검색에서 나오는 결과가 많다.
      static func abcdefg{}   // 검색에서 더 용이하다.

  • 인코딩을 피해라
    • 부호화는 해독을 방해한다.
    • 멤버변수 접두어는 구닥다리다.

  • 맥락을 추가하라

    • 여러의미를 가지는 단어를 이름으로 선택시 의도가 불분명해진다.

    • let state: String  
      • 상태?? 주? 파악이 어려워진다.

      • let addrState 
      • 맥락의 추가는 조금 더 의도가 분명해진다

    •   class Address{
        let state : String 
        }
      • 클래스를 분할하는 건 컴파일러에게 까지 의도가 전달된다.

  • 불필요한 맥락은 제거한다
    • 이름은 짧을 수록 좋다 . 단 의미가 분명할 때
      • 즉 , 의미가 분명할 경우 맥락을 추가하는건 가독성을 해친다.

'Clean Code' 카테고리의 다른 글

Clean Code) 단위테스트  (0) 2019.07.10
Clean Code ) 객체와 자료구조  (0) 2019.06.23
Clean Code) 형식 맞추기  (0) 2019.06.08
Clean Code) 주석  (0) 2019.06.08
Clean Code) 함수  (0) 2019.05.02
Comments