클린 코드에 대한 정리와 기준을 제시한다기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이 프로그래밍이며 요구 사항을 표현하는 언어가 바로 코드나쁜 코드와 생상성은 반비례한다재설계에는 이하와 같은 문제점이 존재한다 \- 새로운 프로젝트는 기존 시스템
좋은 이름을 짓기 위한 규칙을 알려준다
함수를 잘 만드는 방법에 대해서 설명했다함수를 작게 만들수록 하나의 함수를 이해하기가 쉬워진다중첩 구조가 생길만큼 함수가 커서는 안되고 들여쓰기 수준은 1~2단을 넘지 않는 것이 좋다함수는 한 가지를 해야한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야한다우리가
주석에 관한 조언을 정리해뒀다주석이 길어질수록 코드가 알아보기 힘들다는 것을 의미주석을 달지 말고 코드를 리팩토링하거나 새로 짜는게 맞지 않나 고려해야 한다서술형의 긴 주석은 코드로 표현할 수 있다법적인 주석 \- 저작권이나 소유권 정보기본 정보를 제공하는 주석 \
효과적인 정보 전달을 위해서 어떻게 코드 형식을 맞추고 정리하는지에 대해 알아본다.코드의 가독성을 높여 일의 효율을 높이기 위해 형식을 맞춘다맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 영향을 미친다적절한 행 길이를 유지하라200줄 정도의
새로운 자료 타입 추가에 대한 유연성이 필요할 때는 객체, 새로운 동작에 대한 유연성이 필요하면 자료 구조와 절차적인 코드를 사용하는것이 좋다상황에 맞는 방법을 선택하라구현을 감추려면 추상화가 필요하다추상 인터페이스를 제공해 사용자가 구현을 몰느채 자료의 핵심을 조작할
예외 처리에 관한 가이드를 제공해준다오류를 코드로 처리하게 되면 코드의 가독성은 낮아지고 계층의 깊이는 심하게 높아진다오류 코드로 처리하는 경우 개발자가 작성하는 것이기 때문에 실수하는 경우 프로그램이 멈출 수 있다예외 처리를 통해 코드를 분리하고 각 개념을 읽기 쉽게
소프트웨어 경계를 깔끔하게 처리하는 기법을 알 수 있다인터페이스 제공자는 적용성을 최대한 넓히려 한다인터페이스 사용자는 자신의 요구에 집중하는 인터페이스를 바란다이러한 양방향의 차이로 인해 시스템 경계에서 문제가 생길 수 있다외부 라이브러리 중 컬렉션이 있고 이중 자주
단위 테스트의 중요성과 규칙에 대해 설명한다실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다더러운 테스트 코드는 없느니만
JAVA Convention에 따르면 가장 먼저 변수 목록이 나온다.static public --> static private --> private 인스턴스 --> (public은 필요한 경우가 거의 없다) 변수목록 다음에는 공개 함수가 나온다. 비공개 함수는 자신을
시스템 수준에서도 코드를 깨끗하게 유지하기 위한 방법에 대해서 설명한다제작(construction)과 사용(use)는 다르다소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는) 준비 과정과 (준비 과정 이후에 이어지는) 런타임 로직을 분리해야
창발적 설계에 대하여 설명한다창발성이란 하위 계층에는 없는 행동이 상위 계층에서 자발적으로 돌연히 출연하는 성질켄트 벡은 단순한 설계 규칙 네 가지가 소프트웨어 설계 품질을 크게 높여준다고 이야기한다 \- 1. 모든 테스트를 실행한다 \- 2.중복을 없앤
동시성이 필요한 이유와 그 어려움, 그리고 동시성을 유지하면서 깨끗한 코드를 작성하고 테스트하는 방법과 문제점에 대해 알려준다동시성 = 결합을 없애는 전략 \- 무엇과 언제를 분리하는 전략스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다 \- 단일 스레드 프로
점진적인 개선을 보여주는 사례를 연구한다Args 생성자에 (입력으로 들어온) 인수 문자열과 형식 문자열을 넘겨 Args 인스턴스를 생성한 후 Args 인스턴스에다 인수 값을 질의한다이렇게 길어진 이유는 자바는 정적 타입 언어라서 타입 시스템을 만족하려면 많은 단어가 필
자바 프레임워크 중에서 가장 유명한 jUnit 프레임워크에서 가져온 코드를 평가한다JUnit은 저자가 많지만 시작은 켄트 벡과 에릭 감마이다ComparisonCompactorTest.java두 문자열을 받아 차이를 반환하는 코드ComparisonCompactor 모듈에
날짜를 표현하는 SerialDate 클래스를 살펴보고 리팩터링 한다SerialDateTests라는 클래스가 있지만 모든 경우를 커버하지 않기 때문에 단위 테스트 케이스를 구현한다새 단위 테스트는 92% 정도의 코드 커버리지를 가진다테스트 케이스를 통해 일부를 변경한다클
리팩터링이 필요하다고 생각되는 것들에 대해 정리하였다주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다쓸모없어질 주석은 아예 달지 않는 것이 가장 좋고 달려있다면 삭제하는 편이 좋다주석은 코드만으로 다하지 못하는 설명만 적는다주석을 달거라면 최대한 간결하고 명료하게
관련 특정 분야에 최적화된 프로그래밍 언어해당 분야 또는 도메인의 개념과 규칙을 사용언어 지향 프로그래밍의 일종ex : Junit, 쿼리DSL언어와 변환 엔진을 갖추면 지루한 작업을 일일이 수행할 필요가 없어, 해당 DSL과 관련된 소프트웨어 개발의 특정 부분에서 훨씬