root@bskyvision: ~#
방명록
태그
RSS

<닫기>

3,585,689/3,798/893

프로필사진
수많은 소음 속에서 신호를 찾아가는 bskyvision입니다.


<닫기>

  • leon_choi이(가) 08.10에 작성한 댓글: 멋쟁이.
  • 꼬장이이(가) 07.25에 작성한 댓글: test.

<닫기>

2022-03-15 21:05:28

필자가 처음으로 접했던 프로그래밍 언어는 C언어다. 윤성우의 열혈강의를 읽으면서 재밌게 코딩의 세계에 입문하게 되었던 기억이 난다. 그리고 석사 과정을 밟으면서는 matlab을 많이 사용했다. 해당 연구 분야의 시뮬레이션 코드들이 대부분 matlab으로 작성되어 있었기 때문이다. 그러나 머신러닝/딥러닝을 연구에 접목하면서부터는 matlab의 한계를 느끼기 시작했다. 대부분의 라이브러리가 유료였기 때문이다. 그래서 넘어오게 된 언어가 바로 파이썬이다. 파이썬에서는 머신러닝/딥러닝에 관한 많은 훌륭한 라이브러리가 무료다. 그리고 직장에 와서도 여전히 파이썬을 이용해서 웹 사이트와 응용 프로그램 등을 개발하고 있다. 파이썬이 필자에게 돈을 벌어다 주는 언어가 되었다.  

 

현재 필자는 프로그래밍 언어 중 파이썬 비교적 가장 많이 친하긴 했지만, 파이썬스럽게(pythonic 이란 표현을 쓰더군요) 코딩하고 있는 지는 아직 의문이 들 때가 많다. 내가 짠 코드는 파이썬 코딩을 하는 사람들이 쉽게 이해할 수 있는 코드인가? 누군가와 협업하기에 좋은 코드인가? 

 

필자와 같은 고민을 하고 있는 개발자 또는 개발자 지망생을 위한 문서가 있다. 

 

무려 파이썬 언어의 창시자 귀도 반 로섬이 작성한 PEP 8 - Style Guide for Python Code를 읽어보자. 파이썬 코딩을 위한 관습을 정리해놓은 문서다. 참고로 귀도 반 로섬은 1956년 생이고 네덜란드 출신의 프로그래머다. 환갑이 넘었지만 여전히 활발히 활동하고 있다.

 

자, 그러면 PEP 8의 내용을 함께 정리해보자. 필자 눈에 띄었던 부분을 위주로 정리했으니 좀 더 자세한 내용은 원본 문서를 참고하기 바란다.

 

1. 가장 중요한 것은 일관성이다. 일관성 있는 스타일로 코딩해야 한다는 것이다. 여기서는 이런 식으로, 저기서는 저런 식으로 하면 코드의 독자들의 가독성을 현저히 떨어뜨릴 수 있다. 

 

2. 들여쓰기 레벨마다 4개의 스페이스를 사용해라(4칸을 띄워라). 탭보다는 스페이스를 사용하는 것이 좋다.

 

 

리스트와 튜플 등에 대해서는 다음과 같은 방식으로 들여쓰기를 사용하라.

 

 

3. 한 줄은 최대 79개의 문자로 제한하라.

 

4. 이항 연산자 전에 줄을 바꿔라.

 

 

5. 클래스 정의 뒤에는 두 줄, 함수 정의 뒤에는 한 줄을 띄워라.

 

6. 임포트는 분리된 라인으로 이뤄져야 한다. 임포트는 항상 파일의 최상단에서 이뤄지게 하라. 와일드카드 임포트(from <모듈> import *)는 피해라.

 

 

7. 의미없는 공백(whitespace)을 만들지마라. 

 

 

하지만 가독성을 위해 공백을 사용해야 할 때도 있다. 

 

 

다른 것과 정렬시키기 위해 일부러 공백을 만들지마라.

 

 

8. 사칙연산 관련해서는 다음과 같이 공백을 활용하여 가독성을 높여라.

 

 

 

9. 여러 구문(statements)을 한 줄에 사용하는 것은 지양하라.

 

 

10. 주석은 코드가 바뀔 때마다 최신 상태에 맞게 업데이트해줘라. 모순된 주석은 없는 것보다 못하다. 가급적 영어로 주석을 달아라. 

 

11. 줄 주석(line comments)은 최소한으로, 아껴서 사용하라. 

 

12. 모든 모듈, 함수, 클래스, 메서드에 대해 독스트링(docstring)을 써라. 

 

참고로 독스트링이란 해당 모듈, 함수 등이 어떤 일을 수행하는지 설명하는 문자열이다. 아래 예제 코드에서 쌍따옴표 3개로 감싸진 부분이 독스트링이다. 

 

 

13. 함수명과 변수명은 소문자로 써라. 가독성을 높여야하는 경우 단어들을 언더바(_)로 연결해줘라(스네이크케이스를 사용하라).

 

참고로 스네이크케이스는 company_name, do_something과 같이 단어들을 언더바로 연결해주는 네이밍 방식을 말한다.

 

14. 클래스명은 캐멀케이스로 써라. 

 

참고로 캐멀케이스는 CompanyName, DoSomething과 같이 단어들의 첫글자를 대문자로 해서 이어주는 방식을 말한다. 

 

15. not ... is 연산자 보다는 is not 연산자를 써라.

 

 

16. 예외처리시에는 구체적인 예외를 언급하는 것이 좋다.

 

 

17. 객체 타입 비교시에는 직접적으로 비교하기보다는 isinstance()를 사용하라. 

 

 

18. 문자열, 리스트, 튜플 등의 시쿼스에 대해서는 빈 시퀀스는 false라는 사실을 활용하라.

 

 

19. 부울린(boolean) 값들을 True 또는 False와 비교하지 마라.

 

 

 

영어 문서다보니 필자가 잘못 이해하고 정리한 부분이 있을 수도 있으니, 그런 부분을 발견하신 분들께서 교정해주신다면 감사하겠다.

  1. 꼬장스카이비전이(가) 2022.03.18 09:16에 작성한 댓글:
    열심히구만 멋있어   주소   수정/삭제   답글
  2. 지나가던 대학원생이(가) 2022.03.23 17:14에 작성한 댓글:
이름
비밀번호
홈페이지
비밀여부