본문 바로가기

분류 전체보기

(249)
파이썬 클린 코드 2 - 클린 코드와 코딩 가이드라인 클린 코드란 클린 코드란 한 마디로 말해, 쉽게 이해 가능하며 지속적으로 개발하기 용이한 코드를 말한다. 코드는 누구나 짤 수 있다. 하지만 보기 좋고 심플하면서도 핵심 로직을 잘 풀어낸 코드를 짜내는 건 아무나 할 수 없다. 지속해서 성장하는 시스템에 유연하게 코드를 바꿀 수 있도록 설계해야 하고, 올바른 자료구조와 로직으로 하려는 일을 간단하게 드러내야 한다. 무엇보다 코드만 보고도 무엇을 하려는지 이해 가능해야 한다. 클린 코드는 개발자에게 일종의 '선'과 같은 개념이다. 현실적으로 불가능하더라도, 이러한 이상향이 있다는 것을 인지하고 내 코드를 평가할 수 있어야 한다. 적어도 내 코드가 별로인지 괜찮은지는 알아야 한다. 클린 코드는 특히 엔지니어간의 커뮤니케이션과 코드의 유지 관리성을 강조한다. ..
파이썬 클린 코드 1 - 파이썬스러운 코딩을 파이썬 문법 컨셉 들어가며 이 글은 책 파이썬 클린 코드를 읽고 정리한 글이다. 클린 코드는 프로그래밍 언어 구분 없이 일반적으로 존재하는 개념인데, 파이썬에서는 좀 특이한 관습이 있다. '파이썬스럽게(Pythonic)' 라는 것인데, 이 때문에 같은 개념과 논리더라도 다른 프로그래밍 언어와는 클린 코드에 대한 구현이 조금 다르다. 그래서 이 책에서는 두 가지를 말한다. 파이썬스러운 코드와 이를 기반으로 한 클린 코드를 짜는 것. 클린 코드에 대한 여러 서적들이 있지만 이 책을 먼저 잡은 이유도 이 때문이다. 클린 코드의 개념을 잘 알면서, 이를 파이썬스럽게 짤 수 있는 능력, 하다 못해 그럴 수 있는 '감'이라도 잡고 싶었다. 정리하는 글은 책의 목차를 그대로 따라가지 않는다. 위에 설명한 두 가지에 초점을 두어 내 나..
[디자인 패턴 18편] 디자인 패턴 총 정리. 구조편 들어가기 앞서 들어가기 앞서, 먼저 디자인 패턴에 대해 어떻게 생각하고 받아들여야 할지 고민해본다. 디자인 패턴이라고 하는 개념들은 왜 있으며, 왜 배우고 정리하는걸까? 디자인 패턴에 대한 검색을 해보면, 각 패턴에 대한 무수한 예제들이 있다. 예제도 다양한데 각 구현부가 달라 무엇을 기억해야 하는지 헷갈릴 때가 종종 있곤 했다. 또, 이 패턴과 저 패턴이 비슷해 보일 때도 있으며, 실제로 두 패턴을 무엇으로 구분하나 싶기도 하다. 이러던 중, 이승현 님 블로그에 다음과 같은 글을 보았다. 패턴을 공부하거나 구현할 때 UML에 집중해서 공부하면 안 된다고 생각한다. 구조만을 외우고 구조로 구분을 한 사람은 공부한 것을 금방 까먹거나 헷갈려하기 쉽기 때문인데, 이유는 거의 비슷한 구조를 갖춘 패턴들은 정말..
책 리팩토링을 통해 보는 좋은 코드 원칙 회사에서 특정 로직 개발을 맡게 되면서, 요즘 들어 파이썬과 개발에 관심이 많이 생겼다. 좋은 코드란 무엇인지 자꾸 생각하게 되고, 코드 하나하나 짤 때마다 고민, 신중하게 된다. 이런 내게, 사내 다른 동료 분이 개발 관련 서적을 읽어보라고 권해주셨는데, 마틴 파울러의 "리팩토링" 이라는 책이다. 개발 서적에서 유명한 책인데, 최근 개정 2판이 나와 베타 리더로 책을 받으셨다고 한다. 개정되었어도 뭔가 고전 서적답게 표지부터 읽기 싫게 생겼다. 그래도 유명한 책이니 만큼, 또 좋은 코드에 대한 공부를 하고 싶어 퇴근 후 짬짬이 읽게 되었다. 이 포스팅은 이 책을 읽고 내게 필요한 내용만 정리한 글이다. 책에서는 몇 가지 리팩토링 과정을 500페이지의 분량으로 담아내는데, 이 글에서 나는 모든 내용을 정..
[디자인 패턴 17편] 디자인 패턴 총 정리. 생성편 지금까지 공부하며 정리한 GoF 디자인 패턴을 총 정리해보려고 한다. 최대한 간결하고 필요한 것만 남겨본다. 여기서는 구체적인 구현 코드는 적지않고, 이미 패턴이 구현된 객체들을 사용하는 코드만 적겠다. 사용자 코드만 봐도 어떻게 작동하는지 알 수 있을거라 생각한다. (또 이렇게 사용자 코드만 봐도 이해가 가도록 구현해놓는 코드가 좋은 코드, 패턴이라고 생각한다.) 구현 코드는 대충 참고만할 수 있게, 클래스 다이어그램만 남겨둔다. 먼저 객체의 생성에 대해 다루는 생성편이다. 싱글톤 (Signleton) 코드 내 어디서든, 오직 하나의 인스턴스만 사용할 수 있도록 객체를 생성하는 방법이다. 즉 객체는 여러 번 생성되지 않고, 최초 하나의(Single) 인스턴스만 생성하고, 이후에는 이 인스턴스를 참조하게..
[디자인 패턴 16편] 행동 패턴, 커맨드 (Command) 1. 개념 커맨드 패턴은 특정 객체에 대한 커맨드를 객체화하여 이 커맨드 객체를 필요에 따라 처리하는 패턴이다. 가장 주의 깊게 볼 사항은 커맨드 자체를 객체화한다는 점이다. 보통 OOP 에서는 주체 객체와 대상 객체가 존재하고, 대상 객체에 대한 액션은 주체 객체에서의 메쏘드로 처리하는데, 이 액션까지 객체로 만든 뒤에 처리하겠다는 말이다. 처음엔 이렇게만 봐서 이해가 절대 안 간다. 자세한 내용은 차차 설명하겠다. 1.1. 첫 번째 예시 아무래도 커맨드 패턴은 조금 복잡해서 처음에 적절한 예시가 필요한 거 같다. 가장 많이 사용되는 '손님 - 웨이터 - 주방장' 예시를 들어보려고 한다. 다음과 같이 가게에 손님이 음식을 요청하는 상황을 생각해보자. 어떤 식당에는 주방장과 웨이터가 있다. 이 식당에 어..
[디자인 패턴 15편] 행동 패턴, 방문자 (Visitor) 1. 개념 비지터 패턴은 방문자와 방문 공간을 분리하여, 방문 공간이 방문자를 맞이할 때, 이후에 대한 행동을 방문자에게 위임하는 패턴이다. 간단하게 설명하기 참 어려운 패턴이다. 보통 OOP에서, 객체는 그 객체가 하는 행동을 메쏘드로 가지고 있다. 그리고 행동의 대상이 되는 객체가 있을 경우, 메쏘드의 파라미터로 입력받는다. 그런데, 비지터 패턴은 행동의 대상이 되는 객체가 행동을 일으키는 객체를 입력으로 받는다. 설명이 좀 어려운데, 간단히 예로 설명하면 다음과 같다. "나는 상점에 방문한다. 나는 ~를 한다." '나'라는 객체가 '상점'이라는 객체를 입력받은 후, 이 상점에 대해서 뭔가를 한다. 이게 일반적인 OOP 추상화다. 반면 비지터 패턴은 다음과 같다. "상점에 내가 방문을 했다. 내가 ~..
입사 후 4주 동안의 내 회사생활 회고 엊그제 첫 출근한 거 같은데, 벌써 4주가 지났다. 한 달 내내 어떻게 지냈는지 회고 겸, 요즘 어떻게 지내는지 적어두려 한다. 이전만큼 블로그에 글을 자주 남기는게 아니라서, 이런 식의 회고글을 가끔씩 남길 계획이다. 막 거창한 내용...이라기 보다는 그냥 일상을 담은 일기 정도가 될 거 같다. 뚝섬역 5번 출구. 15층 회사는 뚝섬역 5번 출구 바로 앞에 있다. 15층짜리 건물의 일부 층수를 사용하고 있으며, 내가 소속한 팀은 꼭대기 15층에 있다. 맨 위 꼭대기 층이라 좀 불편하지 않겠냐 싶지만, 전혀 아니다. 전망이 좋다. 요즘 날씨가 좋아서 그런지, 풍경이 탁 트이게 잘 보인다. 그리고 무엇보다 점심시간에 내려가는 엘레베이터를 선점할 수 있다. 내가 속한 데이터 그룹은 사용하는 타 그룹과 분리된..