5장. 데코레이터를 사용한 코드 개선 파이썬의 데코레이터 @modifier def original(...): # ... 데코레이터는 데코레이터 이후에 나오는 것을 데코레이터의 첫 번째 파라미터로 하고 데코레이터의 결과 값을 반환하게 하는 문법적 설탕(syntax sugar)일 뿐이다. ... 예제에서 말하는 modifier는 파이썬 용어로 데코레이터라 하고, original을 데코레이팅된(decorated) 함수 또는 래핑된(wrapped) 객체라 한다. 함수 데코레이터 함수에 데코레이터를 사용하면 어떤 종류의 로직이라도 적용할 수 있다. 파라미터의 유효성을 검사하거나 사전조건을 검사하거나, 기능 전체를 새롭게 정의할 수도 있고, 서명을 변경할 수도 있고, 원래 함수의 결과를 캐시하는 등의 작업을 모두 ..
4장. SOLID 원칙 👉 S: 단일 책임 원칙 👉 O: 개방/폐쇄의 원칙 👉 L: 리스코프(Liskov) 치환 원칙 👉 I: 인터페이스 분리 원칙 👉 D: 의존성 역전 원칙 단일 책임 원칙 (S) 단일 책임 원칙(Single Responsibility Principle - SRP)은 소프트웨어 컴포넌트 (일반적으로 클래스)가 단 하나의 책임을 져야한다는 원칙이다. 클래스가 유일한 책임이 있다는 것은 하나의 구체적인 일을 담당한다는 것을 의미하며, 따라서 변화해야 할 이유는 단 하나뿐이다. 도메인의 문제가 변경되면 클래스를 업데이트해야 한다. 다른 이유로 클래스를 수정해야 한다면 추상화가 잘못되어 클래스에 너무 많은 책임이 있다는 것을 뜻한다. 여기서 말하는 도메인의 문제가 뭘까? 그리고 다른 이유로 클..
3장. 좋은 코드의 일반적인 특징 계약에 의한 디자인 계약에 의한 디자인(Design by Contract)이란 이런 것이다. 관계자가 기대하는 바를 암묵적으로 코드에 삽입하는 대신 양측이 동의하는 계약을 먼저 한 다음, 계약을 어겼을 경우는 명시적으로 왜 계속할 수 없는지 예외를 발생시키라는 것이다. 이 책에서 말하는 계약은 소프트웨어 컴포넌트 간의 통신 중에 반드시 지켜져야 할 몇 가지 규칙을 강제하는 것이다. 계약은 주로 사전조건과 사후조건을 명시하지만 때로는 불변식과 부작용을 기술한다. 여기서 말하는 계약이란 쉽게 말해 docstring과 같은 문서화를 의미한다. 정확한 결과를 보장하기 위해 컴포넌트(함수, 메서드 등) 간 상호작용 중에 반드시 지켜야 할 규칙을 문서화하고, 이를 기반으로 컴포넌트..
2장. 파이썬스러운(Pythonic) 코드 인덱스와 슬라이스 .. 만약 래퍼도 아니고 내장(builtin) 객체를 사용하지도 않은 경우는 자신만의 시퀀스를 구현할 수 있다. 이때는 다음 사항에 유의해야 한다. 👉 범위로 인덱싱하는 결과는 해당 클래스와 같은 타입의 인스턴스여야 한다 👉 slice에 의해 제공된 범위는 파이썬이 하는 것처럼 마지막 요소는 제외해야 한다. 여기서 말하는 시퀀스(sequence)란 기본적으로 list, tuple, range 객체를 의미한다. (이외에 다른 시퀀스 타입도 존재한다.) 컨텍스트 관리자 (Context Manager) 컨텍스트 관리자는 파이썬이 제공하는 유용한 기능이다. 이것이 특별히 유용한 이유는 패턴에 잘 대응되기 때문이다. 이 패턴은 사실상 모든 코드에 적용될..
1장. 코드 포맷팅과 도구 클린 코드의 중요성 코드의 품질을 관리하지 않는다면 결과적으로 기술 부채가 누적되어 실패한 프로젝트가 될 가능성이 높아진다. 클린 코드인지 아닌지는 다른 엔지니어가 코드를 읽고 유지 관리할 수 있는지 여부에 달려있다. 개인적으로 상당히 공감하는 말이다. 클린 코드 판단은 내 코드 리뷰에서도 이루어지는데, 내 코드가 꼼꼼하지 않게 승인돼도 큰 상관이 없다. 리뷰를 받는 코드의 maintainer는 나 자신(=코드 작성자)이기 때문이다. 하지만 대부분의 개발자는 은퇴할 때까지 한 곳에서만 일하지 않기 때문에, 내가 이직을 한다면 내 동료는 내가 작성한 코드를 유지보수해야만 한다. 내가 팀을 떠날 때의 maintainer는 내 동료이며, 내 코드에 대한 평가는 이때에도 이루어진다. ..
- Total
- Today
- Yesterday