DRY (Do not Repeat Yourself)
OAOO (Once and Only Once)
두 가지 약어 모두 중복을 피하라는 의미이다. 당연한 질문일 수 있지만 왜 중복되는 코드는 나쁜 것일까?
•
전부 수정해야한다 → 오류가 발생하기 쉽다
•
수정할 곳이 많아진다 → 비용이 비싸다
•
모든 위치를 기억해야한다 → 신뢰성이 떨어진다
해결법
•
함수를 만들어서 중복 코드를 빼낸다
•
경우에 따라 컨텍스트 관리자, 이터레이터, 혹은 제너레이터를 사용한다
YAGNI (You Ain’t Gonna Need It)
과잉 엔지니어링을 하지 않기 위해 계속 염두에 두어라!
•
굳이 필요 없는 기능을 개발하지 마라
•
너무 복잡한 프로그램은 리팩토링과 확장이 어려울 수 있다
•
미래의 요구사항을 예측하는 것보다 현재 요구사항에 충실하면서 미래에 수정하기 쉽게 코드를 작성하는 것이 현명하다
→ 유지보수가 쉬운 코드
•
특정 디자인패턴을 섣불리 적용하면 YAGNI 원칙에 위배될 수 있으므로 주의
KIS (Keep It Simple)
YAGNI와 유사
•
소프트웨어 컴포넌트 설계시 과잉 엔지니어링을 피해야한다
•
선택한 솔루션이 문제에 적합한 최소한의 솔루션인지 자문해보자
EAFP (Easier to Ask Forgiveness than Permission)
허락보다 용서를 구하는 것이 쉽다
•
catch except로 바로 잡는 코드를 실행
•
LBYL 보다 가독성이 높다 ( 아래 예시 참고 )
•
C는 예외처리가 없고, C++는 성능상 이슈로 권장하지 않는다. 이외의 경우, 고민되면 그냥 LBYL 대신 EAFP를 따르자.
LBYL (Look Before You Leap)
도약 전에 미리 살펴라
•
미리 조건들을 체크한다
# EAFP version code
try:
with open(filename) as f:
...
except FileNotFoundError as e:
logger.error(e)
Python
복사
# LBYL version code
if os.path.exists(filename):
with open(filename) as f:
...
Python
복사