본문 바로가기
Programming/Clean Code

[Clean Code] 2장 의미 있는 이름 (2)

by eungbbang 2021. 11. 24.
반응형

[이 포스팅은 아래 서적을 읽고 작성한 글입니다]

 

http://www.yes24.com/Product/Goods/11681152

 

Clean Code 클린 코드 - YES24

애자일 소프트웨어의 혁명적인 패러다임을 제시하는 책이다. 저자 로버트 마틴은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 정제

www.yes24.com

 


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

 

발음하기 어려운 이름은 기억하기에도, 토론하기에도 어렵다. 어찌어찌 발음한다 쳐도 바보처럼 들리기 십상이다.

generate date, year, month, day, hour, minute, second 를 나타내는 단어로 genymdhms를 사용할 수 있겠지만, 발음을 하려면 "지늼ㄷㅁ스" 하고 힘들게 발음하거나 "제이 이 엔 와이 엠 디 에이치 엠 에스" 라고 길게 읽어야 할 것이다. 이런 코드는 당연히 코드 리뷰를 비롯한 다양한 토론에 유용하지 못하다.

 

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

 

이전에도 언급했다시피, 많은 경우 개발자들은 자신이 작성한 변수의 이름을 정확히 기억하지 못하는 경우가 많다. 따라서 검색이 가능한 수준의 이름을 작성해주는 것이 좋다. 

만약 다음과 같이 변수명을 t라고 지었다면, 해당 변수를 찾기 위해 검색했을 때 문자 t가 들어가는 곳의 모든 파일을 샅샅이 훑어야 한다. 아래는 간단한 안드로이드 예제 파일에서 t를 검색한 결과인데, import 된 라이브러리를 포함하여 100개 이상의 t가 검색된 것을 볼 수 있다.

 

하지만 다음처럼 cnclBtn이라고 짓는다면, 정확히 cnclBtn이 사용된 파일만 검색되거나 몇 번의 탐색을 거치지 않고서도 쉽게 찾을 수 있게 될 것이다.

 

 

인코딩을 피하라

 

(완전히 동의하지는 않으므로 개인적인 견해를 추가하여 함께 기술하였다.)

인코딩을 해야하는 이름은 효율적이지 않다. 즉 다시 말해, 이름에 많은 정보를 담는 것은 때론 비합리적일 수 있다. 

현재는 많이 사용되지 않는 헝가리안 표기법(헝가리식 표기법)이 하나의 예시이다.

 

헝가리안 표기법이란, 프로그래밍 언어에서 변수 및 함수의 인자 이름 앞에 데이터 타입을 명시하는 코딩 규칙이다.

컴파일러가 타입을 점검하는 기능을 지원하지 않던 옛날에는 프로그래머가 일일이 타입을 체크해줄 수밖에 없었고, 이를 편리하게 하기 위해 변수 앞에 데이터의 타입을 명시하는 헝가리안 표기법이 등장했다. 예를 들어 데이터 타입이 int인 경우 만들고자 하는 변수 이름 앞에 접두사로 n을 붙이면 되는데, 다음과 같이 선언하면 된다.

 

int sum;	//기본적인 선언 방식

int nSum;	//헝가리안 표기방식

 

변수명만 보고도 타입을 쉽게 확인 할 수 있다는 점에서 한 때 널리 사용되었지만, 현재는 코드를 컴파일하지 않고도 IDE가 타입 오류를 감지할 수 있을 정도로 발전되었다. 따라서 이러한 작성은 오히려 가독성을 떨어뜨릴 수 있으며, 최근에는 사용되지 않는 추세이다.

 

하지만 때로는 인코딩이 필요한 경우도 있다.

언어에 따라 차이가 있지만, 보통 C#에서 인터페이스는 클래스 앞에 접두사 I를 붙이는 형태로 명명한다. 책의 저자는 이런 형태까지 지양할 것을 권했지만, 개인적으로는 이런 방식이 꼭 나쁘지만은 않다고 생각한다.

특히 큰프로젝트에서 화면별로 기능을 분류하여 개발할 때, 해당 기능명을 공통으로 사용하고 접두사 혹은 접미사를 붙이는 형태로 이름을 명명한다면 쉽게 구별이 가능해지기도 한다.

만약 MVVM 패턴(MVVM 패턴 - Model, View, View Model로 이루어져 동작하도록 구현하는 패턴)에서 회원 가입과 로그인하는 화면을 각각 개발한다고 한다면, 각각의 파일명을 다음과 같이 작성할 수 있을 것이다.

각각의 파일은 기능명-패턴명의 규칙을 가지고 있으며, 개발자는 프로젝트 안에 패턴을 기준으로 분류 할 수도, 기능을 기준으로 분류할 수도 있지만 어떤 방식이든 어떤 규칙의 파일인지, 어떤 화면과 연관된 파일인지 쉽게 구별할 수 있을 것이다. 

물론 이런 방식은 사람마다, 프로젝트마다 좋고 나쁨을 느끼는 데 차이가 있을 수 있으므로 설계 단계에서 해당 규칙을 사용할지에 대해 먼저 논의하고 개발을 진행하여야 한다.

 

반응형

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

[Clean Code] 의미 있는 이름 (3)  (0) 2021.12.07
[Clean Code] 2장 의미 있는 이름 (1)  (0) 2021.11.22
[Clean Code] 1장 깨끗한 코드  (0) 2021.11.17

댓글