python-anti-patterns은(는) 무엇을 하나요?
Python 코드 리뷰 시 흔한 안티 패턴을 피하기 위해 이 스킬을 사용하세요. 코드 리뷰, 구현 최종 점검, 또는 알려진 나쁜 관행으로 인한 문제 디버깅 시 체크리스트로 활용하세요.
안티 패턴 목록
1. Mutable 기본 인수
함수 매개변수에 리스트나 딕셔너리 같은 mutable 객체를 기본값으로 사용하지 마세요. 대신 None을 사용하고 함수 내부에서 초기화하세요.
나쁜 예:
def append_to(element, target=[]):
target.append(element)
return target
좋은 예:
def append_to(element, target=None):
if target is None:
target = []
target.append(element)
return target
2. 전역 변수 과다 사용
전역 변수는 코드의 가독성과 유지보수성을 떨어뜨립니다. 가능한 한 함수 매개변수나 클래스 속성을 사용하세요.
3. isinstance 남용
isinstance를 과도하게 사용하는 것은 객체 지향 설계 원칙을 위반합니다. 다형성을 활용하거나 추상 기본 클래스(ABC)를 사용하세요.
4. 예외 처리 오용
너무 광범위한 예외 처리는 디버깅을 어렵게 만듭니다. 특정 예외 타입을 명시하고, 예외를 삼키지 마세요.
나쁜 예:
try:
risky_operation()
except:
pass
좋은 예:
try:
risky_operation()
except ValueError as e:
print(f"ValueError 발생: {e}")
5. 리스트 컴프리헨션 남용
리스트 컴프리헨션이 너무 길거나 복잡하면 가독성이 떨어집니다. 일반 루프를 사용하는 것을 고려하세요.
6. 비효율적인 문자열 결합
루프 안에서 + 연산자로 문자열을 결합하지 마세요. 대신 리스트에 모은 후 join()을 사용하세요.
나쁜 예:
result = ""
for s in strings:
result += s
좋은 예:
result = "".join(strings)
7. import * 사용
from module import *는 네임스페이스를 오염시키고 명시성을 떨어뜨립니다. 필요한 것만 임포트하세요.
8. 비교에 is 사용
값 비교에는 ==를 사용하고, 객체 동일성 비교에만 is를 사용하세요.
나쁜 예:
if x is 10:
pass
좋은 예:
if x == 10:
pass
사용 방법
- 코드 리뷰 시 이 체크리스트를 참고하여 안티 패턴을 찾으세요.
- 발견된 각 안티 패턴에 대해 좋은 예시로 대체하세요.
- 리뷰 의견에 구체적인 패턴명과 개선 방안을 포함하세요.