#naming 인자(argument)가 있거나 없거나

less than 1 minute read

(column-number-mode 1)
(column-number-mode)

인자를 넘기면 해당 값으로 세팅한다. 안 넘기면 toogle. 함수 2개를 하나로 퉁쳤다. 컨벤션의 힘으로. emacs lisp에는 이런 식으로 인자를 받는 함수가 많다.

비슷한 방식으로 동작하는 함수가 기억났다. 바로 bitset::set. 인자를 넘기면 해당 비트만 세팅하고 인자를 안 넘기면 모든 비트를 1로 세팅한다.

set_all() 하나 추가하는 게 뭐 그리 힘들다고. 아마 설계한 사람은 인자가 있고 없고 차이도 명시적이라고 생각했겠지.

컨벤션으로만 만들어지면 이런 방법도 괜찮다고 생각한다. 인터페이스가 간결해진다.

다만 찾기가 문제. IDE는 더 똑똑하게 참조를 찾아줄 수 있어야 한다. 참조 찾기가 실패해 결국 문자열 검색을 사용해야 한다면 길더라도 명시적인 이름을 쓰게 된다.

그래서 섹시해 보이는 컨벤션이지만 사용을 미룬다.