3장. 좋은 코드의 일반적인 특징 계약에 의한 디자인 계약에 의한 디자인(Design by Contract)이란 이런 것이다. 관계자가 기대하는 바를 암묵적으로 코드에 삽입하는 대신 양측이 동의하는 계약을 먼저 한 다음, 계약을 어겼을 경우는 명시적으로 왜 계속할 수 없는지 예외를 발생시키라는 것이다. 이 책에서 말하는 계약은 소프트웨어 컴포넌트 간의 통신 중에 반드시 지켜져야 할 몇 가지 규칙을 강제하는 것이다. 계약은 주로 사전조건과 사후조건을 명시하지만 때로는 불변식과 부작용을 기술한다. 여기서 말하는 계약이란 쉽게 말해 docstring과 같은 문서화를 의미한다. 정확한 결과를 보장하기 위해 컴포넌트(함수, 메서드 등) 간 상호작용 중에 반드시 지켜야 할 규칙을 문서화하고, 이를 기반으로 컴포넌트..
2장. 파이썬스러운(Pythonic) 코드 인덱스와 슬라이스 .. 만약 래퍼도 아니고 내장(builtin) 객체를 사용하지도 않은 경우는 자신만의 시퀀스를 구현할 수 있다. 이때는 다음 사항에 유의해야 한다. 👉 범위로 인덱싱하는 결과는 해당 클래스와 같은 타입의 인스턴스여야 한다 👉 slice에 의해 제공된 범위는 파이썬이 하는 것처럼 마지막 요소는 제외해야 한다. 여기서 말하는 시퀀스(sequence)란 기본적으로 list, tuple, range 객체를 의미한다. (이외에 다른 시퀀스 타입도 존재한다.) 컨텍스트 관리자 (Context Manager) 컨텍스트 관리자는 파이썬이 제공하는 유용한 기능이다. 이것이 특별히 유용한 이유는 패턴에 잘 대응되기 때문이다. 이 패턴은 사실상 모든 코드에 적용될..
1장. 코드 포맷팅과 도구 클린 코드의 중요성 코드의 품질을 관리하지 않는다면 결과적으로 기술 부채가 누적되어 실패한 프로젝트가 될 가능성이 높아진다. 클린 코드인지 아닌지는 다른 엔지니어가 코드를 읽고 유지 관리할 수 있는지 여부에 달려있다. 개인적으로 상당히 공감하는 말이다. 클린 코드 판단은 내 코드 리뷰에서도 이루어지는데, 내 코드가 꼼꼼하지 않게 승인돼도 큰 상관이 없다. 리뷰를 받는 코드의 maintainer는 나 자신(=코드 작성자)이기 때문이다. 하지만 대부분의 개발자는 은퇴할 때까지 한 곳에서만 일하지 않기 때문에, 내가 이직을 한다면 내 동료는 내가 작성한 코드를 유지보수해야만 한다. 내가 팀을 떠날 때의 maintainer는 내 동료이며, 내 코드에 대한 평가는 이때에도 이루어진다. ..
- Total
- Today
- Yesterday