null 을 많이 허용하지 않는 이유
안녕하세요~
강의 중 강사님께서 null을 되도록 허용하지 않는 것으로 보였습니다.
공감이 되었는데, CancelEntity.orderItemId 와 같은 곳에 -1 을 설정한 다거나 QnA.answer 에 Answer.EMPTY 를 설정하는 것은 어떤 장점이 있을지 궁금합니다.
저는 위와 같은 경우는 해당 필드를 nullable 로 하는 것이 이 필드는 없을 수 있다는 것을 더 명확하게 나타낼 수 있다고 생각했습니다.
좋은 강의 감사합니다!
Answer 1
1
안녕하세요 질문 감사드립니다!
우선 저는 nullable 자체가 불확실성을 퍼트리는 역할을 한다고 생각합니다
그런 측면에서 기본값이 존재한다면 이 불확실성이 퍼지는 것을 막을 수 있습니다
특히 null 체크하는 로직이 계속 퍼져나가게 되는 상태에서 -1 같은 기본 값을 쓴다면
별도 null체크 로직 없이 findById(-1) = 결과없음 = 로직상 진행 할 것이 없음 이런 흐름이 나타나게하는데 가능하다면 이것을 선호하는 편 입니다
물론 nullable하다면 null 일 경우 별도 로직을 추가해애초에 조회를 하지 않고 에러를 뱉거나 할 수 있지만, 디비 자원이 크게 영향이 가지 않는 수준이라면 저는 코드에 좀 더 투자하는편 인 것 같습니다 😃
그치만 그렇다고해서 항상 기본 값을 구성 할 수는 없다고 생각하기도 합니다, 그래서 가급적 명확히 통제 된 null을 사용하는 것을 선호하는 것 같습니다!
(특정 레이어에서 객체가 변환되어 넘어갈 때 무조건 null을 없애게 끊게 한다던가 하는 식입니다)
또 특정 상황에 DB데이터를 확인할 때 레거시들에서 null 자체가 모호함을 주는 경우가 꽤 많아서 불호하기도합니다, 레거시들 보다보면 이게 정말 데이터가 없어서 null이란건지 아니면 초기화가 안 됬단건지...? 이런 데이터 관점에서도 모호함을 보여주기 때문에 가급적 DB에 null을 넣는 것을 최소화 하는 것을 선호합니다
결국 장점을 요약 한다면 불확실성의 전파를 막고, 트레이드오프가 있지만 코드를 더 단순화하게 하고, 모호함을 줄일 수 있기 때문인 것 같습니다 (아마 장점이 더 있을텐데 지금 생각나는 것은 이 정도네요!)
결국 당연하지만 전략이란거는 적합한 상황에 맞춰서 쓸 때 가장 효율을 발휘하는 것 같습니다
또 가장 중요한건 이 전략 관련해서는 팀/동료들과 얘기를 해서 기준을 정하는게 좋다고 생각하는 편입니다!
모쪼록 답이 되었길 바랍니다! 감사합니다!
카드 뉴스 만들기..
0
8
0
기존 mcp를 플러그인으로 대체
0
9
1
바이브코딩을 하는 개발자(작업복잡도 판단의 어려움)
0
10
1
커서에서 클로드 코드 실행했는데 쉬프트 +엔터가 안먹히는데요.
0
8
1
claw code 에 대해서는 어떻게 생각하시나요?!
0
17
1
비개발자용 리서치나 논문검색 프로젝트 요청
0
12
1
커밋 명령에 대한 플랜모드 미적용
0
18
2
prd.md 관련
0
18
3
하네스 강의 관련
0
30
2
시니어 리뷰 모드
0
20
1
갑자기 크루드가 실행이 안됩니다.
0
27
2
ProductOption을 통한 FindProductOption에 관한 질문
1
39
2
상수에 관련해서 질문있습니다.
1
38
2
JetBrains All Products Pack 3개월 이용권 신청 관련 문의
1
89
2
소스코드 보안
1
236
2
AI 사용 방법에 대하여...
1
118
2
PaymentValidator와 PaymentProcessor에서 주문과 결제를 중복 조회하는 구조에 대한 질문이 있습니다 !
1
62
3
결제 개념 컴포넌트 분리 기준과 네이밍 전략에 대한 질문있습니다 !
1
76
3
AI 를 적용시 브랜치를 다루는 팁 같은게 있을까요?
1
109
2
사용자가 상품을 선택하고 쿠폰을 고를 때 가장 혜택이 큰 쿠폰을 고르는 상황
1
101
2
장바구니 아이템 가격 기준?
1
106
2
인텔리제이에서 legacy 프로젝트 그레이들 인식 불가
1
136
4
예약 변경 시 '과거 정책 기준 재계산' 요구사항에 따른 스냅샷 데이터 구조 설계 고민
1
130
2
선생님
1
159
1

