• Home
  • About
    • 밤에 쓴 코드 photo

      밤에 쓴 코드

      부엉이의 개발 노트

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Clean Code 1

24 Apr 2019

Reading time ~1 minute

의미있는 이름


  • 의도를 분명히 밝혀라
    • 명확한 이름이 좋다
    • 짐축성을 가진 코드는 의도를 숨긴 코드이다.
    • 단순성과 함축성은 다르다.
       // 함축적 -> 무슨 일을 하는지 구체적으로 드러나지 않은 이름
       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 
        }
      
      • 클래스를 분할하는 건 컴파일러에게 까지 의도가 전달된다.

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


Share Tweet +1