Search

파이썬 개발 지침 약어 (DRY OAOO YAGNI KIS EAFP/LBYL)

생성일
2023/07/03 07:39
태그
python
날짜
2023/07/03
3 more properties

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
복사