9. 설계의 건전성을 해치는 여러 악마
내용
데드 코드
절대로 실행되지 않는 조건 내부에 있는 코드
unreachable code
가독성 저하의 요인이므로 발견 즉시 제거하는게 좋다.
YAGNI 원칙
You aren't gonna need it
지금 필요 없는 기능을 만들지 말라
매직 넘버
설명 없는 숫자
맥락이 없으면 이해하기 힘들다.
문자열 자료형에 대한 집착
의미를 알기 어렵다.
각각 다른 변수에 저장하자
전역 변수
모든 곳에서 접근할 수 있는 변수
만약에 여러 로직에서 전역 변수를 참조하고 값을 변경하면, 어디에서 어떤 시점에 값을 변경했는지 파악하기 대단히 어렵다.
그러므로 영향 범위가 가능한 최소화 되도록 설계
null 문제
null이란?
초기화하지 않은 메모리 영역에서 값을 읽으면 문제가 생김
이를 피하기 위해 발명된 것이 null
null 자체가 잘못된 처리를 의미
그런데 null을 무언가를 갖고 있지 않은 상태, 무언가 설정되지 않은 상태로 이용하곤 함.
null을 리턴, 전달하지 말도록 해야함.
즉 '무언가를 갖고 있지 않는 상태' or '무언가가 설정되지 않은 상태' 라는 객체를 만들어서 전달하도록 해야함
예외를 catch 하고서 무시하는 코드
catch 한 후에 반드시 로그를 남기거나 다시 에러를 던져야함
설계 질서를 파괴하는 메타 프로그래밍
메타 프로그래밍?
프로그램 구조 자체를 제어하는 프로그래밍
예를 들면 자바에서 Reflection API 을 사용하는 경우
흑마법이다.
가능한 사용하지 말자.
기술 중심 패키징
비즈니스 개념 별로 패키징을 하는게 좋다.
왜?
결제 관련된 것은 결제 폴더 내부만 보며 되니까, 관련 파일을 이리저리 찾아다니지 않아도 된다.
정리
은탄환은 없다.
각자 문제를 면밀하게 파악하고 어떻게 하면 개선하는게 효과적인지, 적절한 기술을 선택할 수 있어야한다.
참고
https://product.kyobobook.co.kr/detail/S000202521361
Last updated
Was this helpful?