프로그래밍 권장사항들 - 3편
운영체체 에러를 잡아낼때에는,
파이썬 3.3 이후에서 소개된 명시적인 예외 상화관계를 사용합니다
모든 try/except
구문
모든 try/except
절에 대해 try
절을 필요한 최소의 코드 양으로 사용 제한을 합니다. 버그가 가려지는걸 피할수 있습니다.
1 | # 좋은예 |
특정 코드 섹션에 로컬 자원
자원이 특정 코드 섹션에 대해 로컬로 있을때에는 with
문을 사용하여, 사용후 빠르고 안정적으로 정리되도록 합니다. try/finally
구문도 허용됩니다.
Context Manager
자원을 확보하거나 해제 하는것이 아닌 경우의 컨텍스트 메니져는 분리된 함수 혹은 메써드를 통해서 호출 되어야 합니다.
1 | # 좋은예 |
후의 예시는, __enter__
및 __exit__
메서드가 트랜셕션 후 연결을 닫는 것 이외의 작업을 수행하고 있음을 나타내는 정보를 제공하지 않습니다.
이 경우에는 명시적인게 중요합니다.
리턴 구문안에서는 일관성이 있어야 합니다
함수안에 모든 리턴 구문은 수식을 반환해야 합니다. 만약 어떤 리턴 구문이 수식을 반환할때. 어떠한 값이 없는 리턴 구문은 명시적으로, return None
이라고 해주어야 합니다.
그리고, 명시적인 리턴 구문은 함수의 마지막에 존재해야 합니다.
1 | # 좋은예 |
문자열 모듈보다는 문자열 메써드 사용
문자열 메써드는 언제나 빠르고, 유니코드 문자와 함께 같은 API 를 공유합니다.
startswith()
와 endwith()
접두사와 접미사를 확인하기 위해서는, 문자열 슬라이싱 보다 startswith()
와 endwith()
를 사용합니다.
startswith()
와 endswith()
가 더 깔끔하고 에러가 적습니다.
1 | # 좋은예 |
객체 타입 비교는 isinstance()
사용
객체 타입 비교를 할때는, 직접 타입 비교를 하기 보다는 isinstance()
를 사용합니다.
1 | # 좋은예 |
객체가 문자열인지 아닌지 확인할때에는, 그것이 유니코드 문자열일수도 있다는것을 염두해 두세요.
파이썬2 에서는, str
과 unicode
는 같은 베이스 클래스, basestring
을 가지고 있습니다.
따라서, 아래와 같이 쓸수 있습니다.
1 | # Python2 |
파이썬3 에서는, unicode
와 basestring
은 존재하지 않습니다. str
만 존재하고
bytes
객체는 더이상 문자열 종류가 아닙니다.
시퀀스들(문자열, 리스트, 튜플) 빈 시퀀스는 False 를 반환합니다
1 | # 좋은예 |
마치며..
프로그래밍 권장 사항들이 꽤 많네요.
나머지 권장 사항들은 다음 포스팅에 이어서 쓰겠습니다.