프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

*본 게시물은 [클린 코드] 서적에서 배운 것 들을 잘 활용하기 위해 해당 서적을 정리한 글입니다.

*문제시 삭제하겠습니다.


 

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

 

 우리가 코드를 짤때는 대부분의 것들을 직접 이름을 붙인다. 전에 소개했듯이 우리는 코드를 작성할 때 대부분의 시간을 작성된 코드를 다시 읽느라 시간을 보낸다고 했다. 따라서 알맞은 이름을 지어주어야 코드를 읽는 자신과 독자의 시간을 아껴줄 수 있다. 물론 좋은 이름을 짓기에는 오랜 시간이 걸리지만, 책에서는 오히려 알기 쉬운 이름으로 절약할 수 있는 시간이 더 많다고 한다. 좋은 이름을 짓는 규칙을 아래에 소개한다.

 

의도를 분명히 밝혀라

  • 주석이 필요하다면 의도를 분명히 들어내지 못한 것
  • 의도가 분명한 이름은 코드의 이해와 변경에 용이한다. 
  • 단순한 코드는 그 함축성이 문제가 될 수 있다. 맥락이 명시되어 있지 않은 이름들로 인해 어떤 기능을 하는지 알기 힘들어진다.

 

그릇된 정보를 피하라

  • 약어를 쓰지 마라
  • 널리 쓰이는 의미가 있는 단어를 다른 의미로 바꾸지 마라.
  • 서로 흡사한 이름의 사용을 주의하라.
  • 유사한 개념은 유사한 표기법을 사용하라. (일관성을 유지하라!)

 

의미 있게 구분하라

 

연속된 숫자나 불용어를 사용하지 마라. 

 

아무런  정보도 제공해주지 않는 이름은 쓰지 마라.

 - 이름은 문자열이기 때문에 NameString과 Name은 전혀 차이가 없다.

 

읽는 사람이 차이를 알 수 있도록 이름을 지어라.

 - theMessage와 message, customerInfo와 customer은 구분을 할 수가 없다.

 

발음하기 쉬운 이름을 사용하라.

우리의 두뇌는 상당 부분을 단어라는 개념만을 처리하는 데 사용된다고 한다. 말을 처리하려고 발달한 두뇌를 제대로 활용하지 않으면 손해다! 즉, 발음하기 쉬운 이름을 선택해 사용하자.

 

 

검색하기 쉬운 이름을 사용하라

한 문자만 사용하는 이름은 눈에도 잘 띄지 않는다.

- e를 검색하면 거의 모든 프로그램에 등장할 것이다.

 - 상수값( 1,2,3... )에는 이름을 붙이자.

 

이름의 크기는 범위의 크기에 비례한다. 단순한 메서드의 로컬 변수에서는 간단한 명도 괜찮지만 범위가 클수록 전달해야 하는 의미가 많다.

 

 

인코딩을 피하라

최근의 프로그래밍 언어들은 강한타입(strongly-type, 타입검사를 컴파일 시에 실행)을 지원하는 경우가 많아 이름에 타입정보를 인코딩할 필요는 줄어들고 있다. 오히려 이름에 들어가면 타입의 정보는 형변환이 힘들어진다.

 

사람들은 접두어들을 (매개변수의 접두어인 m_과 같은) 무시하고 읽는 경우가 많다. 접두어 사용이 필요 없을 정도로 클래스와 함수는 작아져야 한다.

 

자신의 기억력을 자랑하지 마라

반복문에 전통적으로 사용되는 i, j, k와 같은 이름의 이외에는 한 글자의 이름은 적절치 않다.

명료함이 최고이니 자신만이 기억 가능한 이름은 쓰지 말자.

 

클래스의 이름

클래스와 객체의 이름은 명사나 동사구를 사용하자.

 

메서드의 이름

동사나 동사구를 사용하자.

 - 접근자(get), 변경자(set), 조건자(is)에는 표준에 따라 어미를 붙여준다.

 

한 개념에는 한 단어를 사용하라

 

똑같은 기능을 하는 메서드인데도 클래스마다 다르게 이름을 붙이지 마라. 메서드는 기능에 따라 이름이 일관된 어휘를 사용해야 한다.

- 라이브러리를 사용하면 메서드의 이름만을 보고 기능을 추측하여 사용하기 때문

 

의미를 해독할 책임은 독자가 아님, 의도를 밝힐 책임은 저자가!

 

 

의미 있는 맥락을 추가하라

위의 모든 방법에서 실패했다면 마지막 수단으로 접두어를 붙이자!

단순히 변수의 이름을 지어버리면 맥락에 일부만 제공하여 독자가 추측을 해야만 한다.

 

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함