본문 바로가기

Study/클린 코드, 이제는 파이썬이다

(9)
유지 보수와 Type-Safe한 쉬운 파이썬 코드 만들기 - 주석과 타입 힌트에 대하여 프로그래밍을 할 때, 기능을 추가하거나 고칠 때마다 필연적으로 코드 변경이 일어나기 마련이다. 이럴 때, 팀원이 코드를 이해해야 변경도 가능하므로 코드를 가독성 있게 유지하는 것이 중요하다. 또한 직접 작성한 코드도 시간이 지나면 잊어버리기 마련이다. 이 때, 주석은 프로그래머가 코드를 떠올리게 도와주고, 로직에 대한 메모나 경고 역할을 해준다. 오늘은 이처럼 프로그래밍 분야에서 중요한 '주석', '독스트링', '타입 힌트'에 대해 알아보겠다. ## 주석 ```python # 이것은 단일행 주석이다! 기호 '#'으로 사용한다. """이것은 다중행 문자열로 구성되어 다중행 주석으로 사용한다.""" ``` 파이썬은 단일행, 다중행 주석 모두 지원한다. 전문적이고 가독성 높은 코드를 작성하고 싶으면 주석은 필..
파이썬 고차 함수, 함수형 프로그래밍에 대해 앞선 포스팅에서, 함수(funtion) 사용으로 코드의 중복을 막는 예를 보면서, 함수의 중요성을 살펴보았다. 이처럼 함수는 우리가 코드를 더 작은 조각으로 나누도록 도와주는 "프로그램 속 프로그램" 이라고 할 수 있다. 그렇다면 "좋은 함수"란 무엇일까? 일반적으로 "좋은 함수"란 함수의 이름, 크기, 파라미터, 복잡도가 잘 조화된 함수를 말하는데, 사실 이런 함수를 만드는 것은 쉽지 않다. 예를 들어, 함수의 이름은 너무 길지도, 짧지도 않아야 하는데 이 기준이 대체 뭘까? 오늘 포스팅에서, 각각의 요소에 대해 Trade-Off를 제시함으로써, 이러한 결정을 도와주고자 한다. 함수 이름 함수 이름에 수행 작업과 행위 대상을 명확하게 담자 함수는 동작을 수행하는 존재이기 때문에, 이름으로 동사를 사용한..
파이썬 기초 용어/개념 정리하기 파이썬은 매우 간결하면서도 강력한 언어이다. 하지만 문법이 간결한 특징 때문에, 많은 프로그래머들이 용어와 개념을 제대로 배우지 않는 경향이 있다. 이를 간과한다면, 파이썬의 고유한 특성 때문에 함정에 빠지기 쉽다. 오늘은 파이썬의 용어를 기반으로, 파이썬만의 개념에 대해 알아보도록 하겠다. 본 포스팅은 Al Sweigart의 저서인 『클린 코드, 이제는 파이썬이다』의 일부를 기반으로 작성되었습니다. 가비지 컬렉션 파이썬에는 메모리 할당과 해제를 해야 하는 시점을 추척해 부담을 덜어주는 가비지 컬렉션(garbage Collection)이 존재한다. 가비지 컬렉션이 없으면, 메모리 누수와 이중 할당 해제 버그가 발생할 수 있다. 메모리 누수(memory leak) : 메모리 할당 해제를 잊어버리는 문제 이..
파이썬다운 코드를 작성하는 법 - 파이써닉(Pythonic) 가이드 range()보다는 enumerate() # 나쁜 예 animals = ['cat', 'dog', 'mouse'] for i in range(len(animals)): print(i, animals[i]) # 좋은 예 animals = ['cat', 'dog', 'mouse'] for index, animal in enumerate(animals): print(index, animal) 당신은 파이썬 리스트를 반복할 때 어떻게 사용하는가? 대부분 range()와 len() 함수를 사용해 반복하지만, 이는 읽기 어려우니 지양해야 한다. enumerate() 함수를 사용하면 인덱스와, 리스트의 값을 같이 불러올 수 있다. ..
클린 코드에 악영향을 미치는 잘못된 조언들을 알아보자 앞선 포스팅에서 프로그램 오류를 야기하는 코드 악취에 대해 알아보았다. 코드 악취가 나는 프로그램은 프로그래머가 실수할 확률을 높이며, 디버그에 시간을 낭비하게 한다. 이를 방지하기 위해 요즘 프로그래머들은 '클린 코드'에 관심을 가지고, 이에 관련된 조언을 지키려고 노력한다. 하지만 인터넷에선 누구나 정보를 작성할 수 있어, 조언을 무조건적으로 수용해선 안된다. 어떤 조언은 코드를 더욱 더럽게 만든다. 이번 포스팅에서는 유용성이 없어진 잘못된 프로그래밍 조언에 대해 알아보겠다. 본 포스팅은 Al Sweigart의 저서인 『클린 코드, 이제는 파이썬이다』의 일부를 기반으로 작성되었습니다. 1. 함수 마지막에는 return 문이 하나만 있어야 한다? '하나의 입구, 하나의 출구' 아이디어는 어셈블리어와 포..
프로그램 에러에 미리 대비하기 - 코드 악취에 대해서 혹시 몇 시간에 걸쳐 에러를 디버깅했는데, 알고보니 사소한 것이 원인이었던 적이 있는가? 프로그래머도 사람이기 때문에 이런 실수는 언제나 할 수 있고, 이를 100% 방지할 수는 없을 것이다. 하지만 이런 상황을 최소화시킬 수는 있다. 냄새로 가스 누출을 알아채는 것처럼, 프로그램에서도 버그의 냄새를 맡을 수 있는데, 이를 코드 악취(Code Smell)라고 한다. 오늘 포스팅에서는 이러한 코드 악취의 대표적인 사례를 알아보겠다. 본 포스팅은 Al Sweigart의 저서인 『클린 코드, 이제는 파이썬이다』의 일부를 기반으로 작성되었습니다. 1. 중복된 코드 중복된 코드는 변경하기 어렵다 중복된 코드(duplicated code)란 아래와 같이 같은 로직을 여러번 복사해서 붙여넣는 것을 말한다. print..
이해하기 쉬운 변수 이름 작명법 - 네이밍 컨벤션 개발할 때 이름을 어떻게 지을지 고민할 때가 많을 것이다. 실제로 우리는 생각 없이 이름을 짓다가 오류가 나기도 하고, 어떤 코드였는지 잊어버려 시간을 낭비한 경험이 많다. 게다가 우린 비영어권 국가에 살고 있기 때문에 영어에 친숙하지 않다. 이 때문에 우리는 이해하기 쉽게 이름 짓기에 더욱 신경써야 할 것이다. 이번 포스팅에서 어떻게 이름을 지어야 하는지 알아보도록 한다. 본 포스팅은 Al Sweigart의 저서인 『클린 코드, 이제는 파이썬이다』의 일부를 기반으로 작성되었습니다. 1. 대소문자 표기법 스네이크 표기법과 카멜 표기법 개발을 할때 여러 단어가 뭉쳐진 이름을 구별하기 위해 몇 가지 약속된 표기법을 사용한다. 대표적으론 스네이크 표기법(snake_case)과 카멜 표기법(camelCase)로..
가독성 좋은 파이썬 코드를 짜는 법 - PEP8이란? 개발자에게 가장 중요한 스킬은 무엇일까? 어느 분은 효과적인 알고리즘을 사용해 문제를 해결하는 스킬이라고 하지만, 본인은 무엇보다 '가독성 좋은 코드를 작성하는 스킬'이라고 생각한다. 그렇다면 어떻게 코드를 작성해야 할까? 이번 포스팅에서는 PEP8 기반으로 파이썬 코드를 가독성 있게 작성하는 법을 알아보도록 한다. 본 포스팅은 Al Sweigart의 저서인 『클린 코드, 이제는 파이썬이다』의 일부를 기반으로 작성되었습니다. PEP 8에 대해서 PEP 8이란 무엇일까? PEP 8(파이썬 개선 제안 8)은 파이썬 개발팀이 직접 제시한 스타일 가이드이다. 우리는 각자 고유의 코드 스타일을 가지고 있다. 컴파일러나 인터프리터는 어떤 코드 스타일이든 문제없이 해석하지만, 사람은 그럴 수 없다. 문제는 프로그래밍..