기타주제

foo, bar, baz 이게 뭐지?

JiH 2022. 2. 13. 23:06

프로그래밍 공부를 하다 보면, 예시 코드에서 foo, bar, baz 등의 이름을 갖는 함수나 변수를 어렵지 않게 만나볼 수 있습니다.
이 단어들이 의미하는 것은 무엇일까요?

public void foo(int bar, int baz) {
    bar++;
    baz--;
    return bar * baz;
}

이러한 단어들은 메타 문법 변수(Metasyntactic variable)라고 합니다.
위키 백과에서는 메타 문법 변수를 아래와 같이 설명하고 있습니다.

메타 문법 변수 (메타신택틱 변수, metasyntactic variable)는 컴퓨터 과학 , 특히 컴퓨터 프로그래밍에서 견본용 이름으로 사용되는 특정 단어들을 이르는 말이다.

즉, 아직 이름이 정해지지 않은 클래스, 함수, 변수들에 임시로 붙이는 단어들입니다.
한국에서는 갑, 을, 병, 정…, 수학에서의 x, y, z 또는 α, β, γ, … 와 같은 역할을 한다고 생각하시면 됩니다.
일반적으로 사용되는 메타 문법 변수에는 foo, barr, baz 외에도 foobar, qux, quux, quuz, corge, grault, garply, waldo, fred, plugh, xyzzy, thud 등이 있다고 합니다.

이러한 단어들은 특정한 상황에서 필요한 것이 아닌 범용적인 함수, 알고리즘을 설명할 때나
알맞는 변수명을 짓기 어렵지만 코드를 계속 작성해가야 할 때 주로 사용합니다.
위에서도 강조했지만, 메타 문법 변수는 견본용, 또는 임시로 사용하는 단어입니다.
실제 코드를 이런 단어들로 작성하면… 힘들어집니다. (1개월 후에 다시 코드를 봤을때 어떤 함수, 변수인지 바로 이해 할 수 있을까요?)

열심히 코드를 짜고 있는 도중이거나, 알고리즘에 대해 생각하면서 변수명을 정확하게 짓기 어려울 때가 있습니다.
이럴 때 메타 문법 변수를 사용하여 잠시 로직, 알고리즘에 집중한 다음, 대충 완성되면 변수명에 대한 고민을 하는 것이죠.
(하지만, 개인적으로는 변수명을 바로 짓는 것이 로직을 이해하고 확장하는데 도움이 되는 경우가 더 많다고 생각합니다.)

그렇다면 변수명, 함수명은 어떻게 짓는 것이 좋을까요?
다음 포스트에서는 올바른 이름짓기에 대해 다뤄보겠습니다.

Reference

메타 문법 변수 - 위키백과, 우리 모두의 백과사전