alt
Home 변수 네이밍
Post
Cancel

변수 네이밍


고민?

1
2
3
4
5
6
String name;
int age;
boolean isMale;

List<String> names; // A
List<String> nameList; // B
  1. 이름만 보고도 타입을 유추할 수 있는 변수가 있는가하면, 리스트의 경우 A, B 둘다 괜찮아보이긴 하다.
  2. 기존 코드가 B로 작성되어있다. 일관성을 지키는게 좋은가.


헝가리안 표기법

: 좋은 IDE가 제공되기 이전 시대에 변수, 함수 네이밍에서 데이터 타입을 접두사로 명시하는 코딩 규칙.

  • lAccountNum : l을 통해 long 타입 명시
  • arru8NumberList : arru8을 통해 8비트 unsigned 배열 명시 (array of unsigned 8-bit integers)
  • bReadLine(bPort,&arru8NumberList) : 바이트를 반환하는 함수
  • strName : 스트링 타입 명시


헝가리안 표기법은 물리적인 타입뿐 아니라 변수의 목적도 드러낸다.

  • rw : row
  • us : 보안적으로 unsafe한 변수


현대적인 네이밍

: 아래의 이유로 굳이 옛날의 헝가리안 표기법처럼 변수, 함수명에 타입을 쓰지 않아도 된다는 의견이 많다.

  • 언어가 발전하면서 현대에 사용되는 언어들은 타입 시스템이 굉장히 좋다.
  • 좋은 IDE가 많다.


결론

  • names와 같은 복수형에서는 리스트 or 배열인 경우가 많다. 일반적으로 복수형이라면 리스트라고 이해하는게 맞아보인다. set이나 map과 같은 자료구조가 사용된다면 그 때 더 구체적으로 네이밍해도 좋을 부분인 것 같다.
  • 리팩토링 관점에서도 개발을 진행하면서 점진적인 리팩토링을 하는 것은 맞아보인다. 코드 일관성도 중요하지만 어차피 나중에 다 바꾸기로 합의가 된 부분이라면 새로 개발하는 코드에서는 불편해하지 말고 그냥 결정한대로 개발하는게 좋을 것 같다.



Reference)

https://en.wikipedia.org/wiki/Hungarian_notation

https://stackoverflow.com/questions/10996681/good-name-for-a-list-variable-in-java

This post is licensed under CC BY 4.0 by the author.