이끼의 생각

PEP 8 (1) 파이썬 코드 스타일 가이드 시작하기 본문

개발자의, 개발자에 의한, 개발자를 위한/내 멋대로 번역한 PEP8

PEP 8 (1) 파이썬 코드 스타일 가이드 시작하기

IKKIson 2019. 12. 28. 15:21

01. Introduction


PEP8 문서는 기본 Python 배포판에 표준 라이브러리를 포함하는 Python 코드에 대한 코딩 규칙을 제공합니다.


Python의 C 구현에서 C 코드에 대한 스타일 지침을 설명하는 정보 

PEP 7, Style Guide for C Code, van Rossum https://www.python.org/dev/peps/pep-0008/ 

를 참조하면 됩니다.


이 문서와 PEP 257 (Docstring Conventions)은 Guido의 독창적 인 Python Style Guide 에세이에서 수정되었으며 Barry의 style guide

Barry's GNU Mailman style guide http://barry.warsaw.us/software/STYLEGUIDE.txt

에서 추가되었습니다.


이 스타일 가이드는 추가 규칙이 확인되고 언어 자체가 변경되어 이전 규칙이 더 이상 사용되지 않으므로 시간이 지나며 발전합니다.


많은 프로젝트에는 자체 코딩 스타일 지침이 있습니다. 갈등있는 경우 해당 프로젝트들의 가이드를 해당 프로젝트에 우선으로 한다.



02. A Foolish Consistency is the hobgoblin of Little Minds


파이썬 언어를 개발한 귀도 반 로섬의 중요한 통찰력 중 하나는 코드를 작성하는 횟수 보다 코드가 사람들에게 읽히는 횟수가 더 많다는 것입니다. 


PEP8 에서 제공한 지침은 코드의 가독성을 높이고 다양한 파이썬 코드에서 일관성을 부여하고 유지하자는 것입니다.


PEP20에서도 가독성이 중요하다고 합니다.


스타일 가이드는 일관성을 다루는 문서이며, 이 스타일 가이드에서 다루는 일관성은 중요한 내용입니다. 그리고 프로젝트에서의 일관성은 더욱 중요합니다. 그리고 특정 모듈이나 함수 내에서의 일관성은 가장 중요합니다.


하지만, 이런 일관성이 적용되지 않고, 많은 파이썬 개발자들이 적응하고 익숙해져서 사용해온 이 일관성을 버려야되는 시기가 있습니다. 이 시기가 반드시 존재하는 것을 알아야되고 이 시기를 알아야됩니다.


즉, 스타일 가이드를 적용하지 않는 것입니다.


확실하지 않고 의심이 든다면 최선의 판단을 하라고 되있습니다. 자신이 마주한 이 상황처럼 다른 예제들을 찾아보고 가장 적합한 것으로 결정합니다. 주저하지 말고 물어봐라!


특히,이 PEP를 준수하기 위해 이전 버전 호환성을 멈추지 마십시오! 



특정 규칙을 무시해고 괜찮은 몇가지 경우가 있습니다.


(1) 기존의 규칙이 적용된 코드를 읽는데 익숙한 사람에게 이 규칙을 적용하면 코드 가독성이 떨어지는 경우


(2) 앞서 (1)의 이유로 다른 사람의 혼란을 없앨 수 있는 기회(진정한 XP 스타일)이기도 하지만, (역사적인 이유, 기존 관습) 일관성이 없는 주변 코드와 일관성을 유지하기 위해


(3) 문제의 코드가 가이드 라인을 도입하기 전에 작성되었고 해당 코드를 수정해야 할 다른 이유가 없기 때문.


(4) 이 스타일 가이드에서 권장하는 특성을 지원하지 않은 예전 버전의 Python에서 호환을 해야되는 경우.




Too Much Information


Code Style Guide, Coding Convention이란 것이 협업, 유지보수, 코드를 작성하는 사람보다 읽는 사람, 읽는 상황이 많기기에 가독성 등의 이유로 규칙을 정하는 것이고 이를 위해 일관성을 유지하는 것이 중요합니다. PEP8을 읽기 시작하며 일관성을 강조하면서 일관성을 적용할 수 없는 경우와 이에 대해 유연하게 대처하라 말하고 있습니다. 


그 이유로 파이썬 코드 스타일 가이드의 2번째 단락의 제목으로 이런 속담이 사용됩니다.


 "A Foolish Consistency is the hobgoblin of Little Minds"

"어리석은 고집은 허깨비의 좁은 마음이다."


멍청하게 일관성을 고집하는 것은 홉고블린의 소인배 라는 뜻으로 낡은 방식, 사상 등을 고집하거니 소심한 정치가, 철학자, 종교인 등을 비난 할 때 사용하는 영어 속담입니다.


여기서 말하는 홉고블린은 허깨비라고도 불리며 판타지 영화나 게임에 나오는 고블린보다는 집요정에 가까우며 말썽이 심하여 멀리하지만 고블린처럼 사람에게 해를 끼치지 않는다고 합니다.


랠프 월도 에머슨

이 속담은 미국의 시인이자 사상가이기도한 랄프 왈도 에머슨(Ralph Waldo Emerson, 1803년 5월 25일 ~ 1882년 4월 27일)의 저서에 등장한 애기로 역사상 위대한 사람들은 훌륭한 말과 지혜로운일을 할 때 오해를 받았으니 잘못된 행동으로 오는 두려움이 아닌 다른 사람에게 오해를 받을 가능성에 대한 두려움을 애기하는 내용입니다.



Too Much Talk


Python Code Style Guide 역시 여러 버전이 있으며, 파이썬도 여러 버전이 존재합니다. 


PEP8 규칙을 준수하며 코드를 작성하면서 다양한 문제에 직면하게 되는데, 일관성을 유지하지 않고 이전버전의 스타일 가이드로 작성된 코드를 갈아 엎거나 무리하게 일관성을 지키려다 가독성을 떨어지는 경우, 좋은 방법을 찾기위해 PEP8 대신 다른예제를 참고하고 것이 잘못된 것이아니라 일관성을 지키지 않아 오해를 받을까? 두려워 하지않고 최선의 방법을 찾으라는 교훈이 있는것 같네요. 


일관성이 중요한 이유, 지키는 이유를 알고 이해하고 사용해야지 일관성을 적용하는 것 자체가 중요한 것이 아닌것 같군요.


파이썬에 대하여 공부를 하다가 인생을 배웁니다. 저는 동네 도서관에서 파이썬 책과 문학작품 1권을 읽으면 좋겠네요.



**출처**

귀도 반 로섬 - https://ko.wikipedia.org/wiki/%EA%B7%80%EB%8F%84_%EB%B0%98_%EB%A1%9C%EC%84%AC

랄프 왈도 에머슨 - https://ko.wikipedia.org/wiki/%EB%9E%A0%ED%94%84_%EC%9B%94%EB%8F%84_%EC%97%90%EB%A8%B8%EC%8A%A8

PEP 8 - https://www.python.org/dev/peps/pep-0008/

PEP 20 - https://www.python.org/dev/peps/pep-0020

책 후기 "스스로 행복한 사람" 저)랄프 왈도 에머슨, 번)박윤정 - https://june.meson.kr/2013/03/to-be-great-is-to-be-misunderstood.html

"스스로 행복한 사람" 저)랄프 왈도 에머슨, 번)박윤정 - https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=23148070


Comments