Group Study (2021-2022)/Clean Code 6

[클린코드 북리뷰 스터디] 8주차 - 냄새와 휴리스틱

목표 클린 코드 책에서 제시한 클린 코드 규칙을 정리해보자. 목차 주석 환경 함수 일반 자바 이름 테스트 읽어 보면 좋은 책들 💡 프로그래밍은 과학보다 공예에 가깝다는 사실이다. 깨끗한 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다. 💡 실용적인 관점에서 타협한다. 여러가지 규칙에 극단적으로 심취해 클래스와 메서드를 무수하게 만들지 말라. 결국 좋은 코드를 만드는 이유는 생산성을 올리기 위한 것이다. 주석 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. 안 좋은 코드를 주석으로 부연설명하려 하지 말고 코드를 개선해라. 일반적으로 작성자. 최종 수정일, SPR 번호 같은 메타 정보만 주석으로 넣는다. 쓸모 없어질 주석은 달지 않는 편이 좋다. 주석으로 처리된 코드는 즉각 지워라. 환경..

[클린코드 북리뷰 스터디] 7주차 - 점진적인 개선, Junit 들여다보기, SerialDate 리팩터링

Chapter14. 점진적인 개선 : 코드를 점진적으로 개선하기 01 책의 예제 코드 초안 모든 로직이 하나의 클래스에 들어가있다. 처음부터 지저분한 코드를 짜려는 생각은 없었고, 코드를 어느정도 손 봤지만 새로운 인수 유형이 들어오면서 재앙이 시작됐다. 이제는 개선해야 할 때 라는걸 깨닫고, 변경 전후 시스템이 동일하게 돌아간다는 사실을 확인하기 위해 테스트들을 작성해뒀다. 자잘하게 점진적으로 개선해나갔다 코드 완성본 Args 클래스에서 코드 중복을 최소화하고, ArgsException 클래스를 분리했다. ArgumentMarshaler 클래스를 통해 여러 인수에 대한 추후 확장성을 만들어냈다. 코드만 분리해도 설계가 좋아진다. 관심사를 분리하면 코드를 이해하고 보수하기 훨씬 더 쉬워진다. => 자신이..

[클린코드 북리뷰 스터디] 6주차 - 창발성과 동시성

⛳️ 9. 창발성 목차 모튼 테스트를 실행한다 중복을 없앤다 프로그래머의 의도를 표현한다 클래스와 메서드 수를 최소로 줄인다. 창발적 설계란? 창발성 (Emergence) 하위 계층에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출연하는 현상 작은 요소들의 상호작용의 반복이 전체 구조에 영향을 미친다 ex. 개미의 집짓기 창발적 설계 단순한 4가지 단계를 반복하다보면 전체적으로 깨끗한 코드가 만들어진다. 1. 모든 테스트를 실행하라 설계를 의도한 대로 돌아가는 시스템을 내놓아야 한다 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템 == 테스트가 가능한 시스템 테스트가 불가능한 시스템 👉 검증 불가능 👉 절대 출시 ❌ 설계 품질이 더불어 높아짐 테스트가 가능한 시스템..

[클린코드 북리뷰 스터디] 5주차 - 클래스와 시스템

클래스 캡슐화 객체의 실제 구현을 외부로부터 감추는 방식으로, 객체에서 실제 데이터를 조작하거나 구현하는 부분을 기본적으로 private으로 하고, 외부에 노출해야 하는 것만 public으로 하는 것이다. 클래스를 개발할 때는 기본적으로 구현을 감추고, 외부 객체와 상호작용하는 부분만 노출한다. 외부의 잘못된 사용을 방지한다. public class Stack{ private int topOfStack \= 0; // private으로 설정 public int size() { return topOfSize; // Stack 클래스의 원소 topOfStack 알고 싶다면 size() 메소드로! } } 👉🏻 캡슐화의 핵심은 모든 구현을 외부 세계에 알리는 것이 아니라, 외부 세계에서 정말 알아야 할 것들만 ..

[클린코드 북리뷰 스터디] 4주차 - 경계와 단위 테스트

8장. 경계 목표 : 소프트웨어 경계를 깔끔하게 처리하는 기법을 살펴보기 1. 경계란 우리 코드와 외부 코드의 경계를 의미함 외부 코드 : 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 함 2. 경계 짓기(1) - 우리 코드를 보호하기 캡술화 객체의 실제 구현을 외부로부터 감춤 (tmi 하지 않아야 한다!) 캡슐화의 장점 캡슐화로 외부 코드를 감추면 private하게 데이터 관리 가능 → 원하는 기능만 공개할 수 있다 캡슐화 예제 public class Sensors { private Map Sensors = new HashMap(); public Sensor getById(String id) { return (Sensor) s..

[클린코드 북리뷰 스터디] 2주차 - 주석, 형식 맞추기

4장. 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라 _ 브라이언 W.. 커니핸, P.J. 플라우거 주석은 나쁜 코드를 보완하지 못한다. 코드에 주석을 추가하는 일반적인 이유는 코드의 품질이 나쁘기 때문이다. 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 주석은 코드의 변화에 따라가지 못하고, 방치된다. 코드는 컴파일되어 관리되지만, 주석은 그저 주석이기 때문에 그 자리에 방치되고 결국 의미 없는 텍스트가 되어버리게 되는 것이다. 따라서, 나쁜 코드를 주석으로 설명하려고하지 말고, 코드를 개선하는데 시간을 보내야 한다! 코드로도 의도를 표현할 수 있다! //직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.fl..