Practice/Coding, Debugging

기본 값(default value)을 언제 사용할까?

얼마 전, 기본 매개변수(default parameter) 때문에 문제를 겪었다.
큰 규모의 리펙토링 후에 문제가 발생했다.
이 함수를 호출할 때 문제의 매개변수를 누락한 것이 원인이다.
그러나, 기본 값이 있어서 오류가 드러나지 않았고,
테스트에 사용한 값이 오류를 보여주지 못하는 값이었다.[각주:1]

위 사건 이후로 기본 값에 대해서 고민하게 되었다.

매번 값을 특정하는 것은 꽤 귀찮은 일이다.
가령, ssh 접속할 때 포트 번호 22를 항상 입력하는 것은 불편하다.
기본 값[각주:2]은 이런 불편함을 덜어준다.
이는 곧 개발의 생산성과 사용의 편의성으로 이어진다.
한편으로는, 이것이 나중에 문제가 되기도 한다.

기본 값을 사용하는 원칙을 하나 정하자.
명백하고 합리적으로 그 값을 대부분 사용하면 기본 값이 될 수 있다.

예를 들면, 일반적인 HTTP 클라이언트를 개발한다면,
HTTP 프로토콜의 기본 포트인 80을 기본 값으로 사용할 수 있다.

한편으로는, 사내 HTTP API 서버들의 포트가 다양하다면,
또는 개발 서버와 테스트 서버, 실 서버 간에 포트가 다르다면,
포트에 기본 값을 지정할 지 고민이 필요하다.

데이터베이스 테이블과 클래스 이름 간에 생성 규칙[각주:3]이 있다면,
테이블의 이름을 생략할 수 있다.
멤버 변수나 함수의 인자의 기본 값으로 클래스 명에서 도출된 테이블 이름을 사용한다.

'일단 이 값을 기본으로 하자.'와 같은 위험천만한 기본 값은 조심해야 한다.[각주:4]
당장은 개발의 생산성으로는 이어진다.
하지만, 이것은 기술 부채가 되어 자신의 발목을 잡을 것이다.
기본 값은 명백하고 합리적인 접근으로 판단해야 한다.

  1. 이 매개변수는 함수의 로직에서 중요한 것이 아니었기 때문에 크게 신경쓰지 않았다. [본문으로]
  2. 하드 코딩, 기본 매개변수 등 [본문으로]
  3. Convention over Configuration [본문으로]
  4. 문제의 탐색에서의 기본값은 괜찮다. [본문으로]
 [ 1 ]  [ 2 ]  [ 3 ]  [ 4 ]  [ 5 ]  [ 6 ]  [ 7 ]  [ 8 ]  [ ··· ]  [ 187 ] 

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

Today : 41
Yesterday : 120
Total : 208,962