Python Anti Pattern - Asking for permission instead of forgiveness

Posted by Hide­
2019.01.28 13:39 Coding/Python


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



다른 사람들이 많이 읽은 글
이 댓글을 비밀 댓글로

티스토리 툴바