parameter 정의할 때 , 표기

Younghwan Cha·2022년 12월 5일
0

cleanCode

목록 보기
3/7

코드를 작성하다 보면 정말 작은 차이가 큰 차이를 만들게 됨을 종종 느낀다.
그래서 초반에 좋은 코딩 습관을 갖는 것이 정말 중요하다는 생각이 든다.
함수에서 인자를 정의하거나, 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,
}

과 같이 정의하는 것이 더 바람직하다고 생각한다.

profile
개발 기록

0개의 댓글