ETC/Books

[Clean Code] 자신의 기억력을 자랑하지 마라

Pazery는ENFJ 2021. 10. 17. 16:28
반응형

세상에 수많은 어려운 것 중에 한 가지는 바로 작명이라고 생각합니다.

이 블로그를 처음 만들 때에도 블로그 이름과 닉네임을 생각하는데 많은 시간을 썼던 것 같아요

(나름 열심히 지은 이름이랍니다 ㅋㅋㅋㅋ)

이것 외에도 반려 동물, 자동차, 가방.. 등 우리는 대부분의 사물에 이름을 붙이려고 합니다.

어떤 이름이 좋은 이름일까요?

의미를 가진 이름? 부르기 쉬운 이름? 좋은 뜻을 가진 이름?

비속어와 같은 나쁜 단어를 포함하지 않는 이름?

짧은 이름? 긴 이름?

제 답은 "그때그때 달라요" 입니다

어떤 조건을 가진 이름이 좋은 이름인지 아직도 잘 모르겠지만 상황에 따라 다르지 않을까 싶습니다.

 

이번 포스팅은 프로그래밍에서의 좋은 이름에 대해 다뤄보려고 합니다 :)

소스 코드에서는 어떤 이름이 좋은 이름일까요?

 

프로그래밍을 하시는 분이라면 흔하게 접할 수 있는 한 가지 상황을 예로 들어보겠습니다.

쇼핑몰 홈페이지에서 장바구니 기능을 개발한다고 했을 때 회원정보를 담기 위한 MemberVO가 아래와 같이 정의되어있습니다.

MemberVO
1) no
2) name

1. 회원 정보를 담기 위한 MemberVO를 다음과 같이 생성합니다.

    - MemberVO vo1 = new Member();

2. 그리고 생성한 객체에 번호와 이름을 넣어줍니다.

    - vo1.setNo("123");

    - vo1.setName("김부각");

위와 같이 생성하고 객체의 정보를 SET 해 주면 vo1는 번호는 123, 이름은 김부각의 정보를 가진 객체가 됩니다.

위의 코드를 공유하는 저를 포함한 개발자들은 이 객체를 활용하여 CRUD를 구현할 것입니다.

(vo1의 선언부를 보고 아 MemberVO이구나~라고 머릿속에 저장해둔 채로)

 

자, 이제 상품의 정보를 담고 있는 객체를 추가해보겠습니다.

MemverVO
1) no
2) name
ProductVO
1) no
2) name

1. 상품 정보를 담기 위한 ProductVO를 다음과 같이 생성합니다.

   - ProductVO vo2 = new ProductVO();

2.  그리고 생성한 객체에 번호와 이름을 넣어줍니다.

   - vo2.setNo("007");

   - vo2.setName("해물라면 밀 키트");

 

회원 정보 객체와 비슷하게 상품 정보를 담고 있는 객체를 만들어봤습니다.

지금부터는 vo1과 vo2의 객체를 활용하여 CRUD를 구현할 것입니다.

(vo1가 MemberVO, vo2가 ProductVO라고 머릿속에 저장해둔 채로)

 

이제 저를 포함한 개발자들은 새로운 객체가 생성되는 것이 굉장히 두려워질 겁니다.

객체 이름을 또 기억해둬야 하니까요

(김부각이 Member 였던가 Product 였던가..?)

한 명이라도 vo1를 회원정보가 아닌 상품정보로 생성을 할 수도 있고 비즈니스 로직을 수정할 때마다 선언부를 의심해보고 확인해야 하는 과정이 추가가 될 겁니다. // 우리의 시간은 소중한데 ㅠㅠ

 

자, 만약 Clean Code 또는 이 포스팅을 읽은 누군가가 다음과 같이 이름을 지어준다면 어떻게 될까요?

1. 회원 정보와 상품 정보를 담기 위한 객체를 생성

   - MemberVO member = new MemberVO();

   - ProductVO product = new ProductVO();

이름만 봐도 member가 회원 정보 객체, product가 상품 정보 객체라는 사실을 알 수 있겠죠?

 

우리가 변수를 선언할 때 변수명을 지을 때 고민하는 시간변수명이 뭐였는지 추적하는 시간을 비교해봤을 때 어떤 게 더 합리적일까요? 코드에 접근하는 사람이 혼자가 아니라 여러 명이라면?


저는 프로그래밍에서의 좋은 이름은 "아하~ "라고 모두가 공감하는 이름이 좋은 이름이지 않을까?라고 생각합니다

반응형