반응형
Asking for permission instead of forgiveness
파이썬 커뮤니티에서는 EAFP(easier to ask for forgiveness than permission) 코딩 스타일을 사용한다.
이 코딩 스타일은 필요한 변수, 파일등이 존재한다고 가정하는 것이다.
이외의 문제가 발생한다면 예외를 통해 처리한다.
위와 같은 형태로 작업한다면 다수의 try~except문이 포함된 깔끔하고 일관적인 코딩 스타일을 유지할 수 있다.
Anti-pattern
import os # violates EAFP coding style if os.path.exists("file.txt"): os.unlink("file.txt")
위 코드를 먼저 살펴본다.
if문에서 파일에 접근하기전에 먼저 파일이 존재하는지 검사한다.
이것은 파이썬 커뮤니티에서 권장되는 코딩 스타일이 아니다.
커뮤니티에서는 파일이 존재한다는 것을 가정하는 것을 권장한다.
따라서 우리는 파일이 존재한다고 가정하고, 파일에 접근할 때 발생하는 예외처리를 해주면 된다.
Best practice
import os try: os.unlink("file.txt") # raised when file does not exist except OSError: pass
수정된 코드는 EAFP 코딩 스타일을 통해 작성된 예제이다.
안티패턴의 코드와는 달리, 수정된 코드는 필요한 파일이 존재한다고 가정하고 예외를 처리한다.
예를 들어 파일이 존재하지 않는다면, OSError 예외가 발생할 것이다.
출처 : https://docs.quantifiedcode.com/python-anti-patterns/readability/asking_for_permission_instead_of_forgiveness_when_working_with_files.html
'Coding > Python' 카테고리의 다른 글
Python Anti Pattern - Not using dict keys when formatting strings (0) | 2019.01.28 |
---|---|
Python Anti Pattern - Using type() to compare types (0) | 2019.01.28 |
Python Anti Pattern - Returning more than one variable type from function call (0) | 2019.01.28 |
Python boto3로 AWS S3스토리지 연동하는 방법 (0) | 2018.12.05 |
Flask Mongoengine Mongo Atlas와 연동하는 방법 (0) | 2018.12.04 |