코드를 작성하다 보면 정말 작은 차이가 큰 차이를 만들게 됨을 종종 느낀다.
그래서 초반에 좋은 코딩 습관을 갖는 것이 정말 중요하다는 생각이 든다.
함수에서 인자를 정의하거나, typeScript 등에서 타입을 지정할 때
아래와 같은 상황들을 정말 많이 마주한다.
const tmp = (
a: string,
b: string,
) => { ... }
별거 아닌 코드이지만 여기에서 주목해야 할 부분은 b: string
이 부분이다.
아래 두 코드를 보자
# CASE 1
const tmp = (
a: string,
b: string
) => { ... }
# CASE 2
const tmp = (
a: string,
b: string,
) => { ... }
b: string
뒤 ,
의 유무에 대한 이야기이다.
독자라면 어떤 코드를 선택할 것인가?
사실 어떤 코드를 선택하던지 상관은 없다.
만약 인자가 추가될 가능성이 0% 라면 말이다
이게 무슨 말일까?
c:string
을 추가하는 경우를 가정해보자
CASE 1 의 상황을 보자
const tmp = (
a: string,
b: string,
c: string
) => { ... }
위와 같이 c:string
을 추가했을 때, git diff
는 어떻게 나올까?
{
b: string,
c: string
}
위와 같이 2줄이 생성될 것이다.
반면에, CASE 2 의 경우
{
c: string
}
위와 같이 1줄이 생성될 것이다.
1줄 추가되나 2줄 추가되나...그게 무슨 상관이야?
맞다. 혼자서 코딩하면 상관없다.
하지만, 여럿이서 작업을 진행한다면 문제가 발생 할 수 있다.
만약, CASE 1 에서 브랜치를 새로 생성하여 c:string
을 추가하고,
이를 머지하는 상황이라면?
우리 입장에선 c: string
만 추가하는 것이지만,
코드의 입장에서는
main branch => b: string
tmpp branch => b:string,
위와 같이 두 브렌치의 코드가 다르기 때문에 merge conflict
가 발생할 것이다.
이와 같은 문제가 발생할 것을 방지하기 위해서 평소
{
b: string,
}
과 같이 정의하는 것이 더 바람직하다고 생각한다.