개발 언어의 클래스 및 함수를 보면 _ 언더바를 사용한 코드를 쉽게 볼 서 있습니다. 왜 이렇게 이름 앞에 _ 기호를 추가할까요? 그 이유 및 목적에 대하여 간단히 알아봅니다.

가장 큰 목적은 스코프 구분에 따른 표시입니다. 개발언어는 해당 콘텍스트에 선언하여 사용되는 고유의 스코프영역(scope)을 가지고 있습니다. 스코프는 각각의 네임으로 참조할 수 있는 범위인데 이를 구분하기 위한 목적으로 언더바가 많이 사용됩니다. 예를들어 아래를 봐주세요.


# 언더바 _ 기호를 사용한 변수 또는 함수, 메소드 사용 예제먼저 클래스를 선언하였고 내부에는 두개의 함수가 존재합니다.
class NameA():
  def _formatType():
    return 'A'
  def getName():
    return self.name

위 코드에서 선언된 클래스 NameA는 두개의 메소드를 가지고 있습니다. 이 중에서 위에 선언된 _formatType은 앞에 _ 기호를 가지고 있어 클래스 내부 스코프 영역에서만 사용될 것임을 매우 직관적으로 개발자에게 알려줍니다. 반대로 getName()의 경우 다른 스코프에서도 접근이 가능한 메소드임을 한 눈에 판단할 수 있습니다. 다른 예제를 하나 더 볼까요?

showMsg = function(name) {
  return 'My Name is ' + _checkName(name);

  function _checkName(a) {
    return a ? a : 'Empty'
  }
};
이번 예제 역시 비슷합니다. 함수 _checkName()은 showMsg()의 내부에서 선언되고 사용될 것이기에 앞에 _ 기호를 사용하여 다른 함수와 구분하도록 하였습니다.

변수의 경우도 다르지 않습니다. 아래 예제를 보면 함수 내부의 변수에 일부를 _ 기호를 사용하여 다른 변수와 구분하였습니다.

이처럼 내부에 사용될 변수들과 외부에서도 호출되거나 사용될 변수들은 각각 구분하여 다른 위치에 선언하는 것이 일반적입니다. 함수 내부에서도 그룹화하여 관리하는 것이 유지보수 및 관리차원에서 더욱 효과적일 수 있습니다.