변수 또는 함수의 존재 이유, 수행 기능, 사용 방법이 드러나야함List<int\[]> theList -> gameBoardcellSTATUS_VALUE == FLAGGED -> cell.isFlagged()널리 쓰이는 의미가 있는 단어를 다른 의미로 사용 금지L
작게 만들어라 함수는 작게, 더 작게 만들어라, 작을수록 더 좋다. if / else / while 에는 한 줄만 들어가고, 거기서 함수를 호출하라 한 가지만 해라! 여러 작업을 하는 함수는 분리 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수
주석은 나쁜 코드를 보완하지 못한다 좋은 코드는 주석이 있는 나쁜 코드보다 좋다. 주석으로 설명하는 대신, 좋은 코드로 개선하라. 코드로 의도를 표현하라 if((employee.flags &
오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다.일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.신문 기사처럼, 파일 이름을 명확하게 작성, 첫 부분은 고차원 개념과 알고리즘을 설명, 아래로 내려갈수록 의도를 세세하게 묘사, 마지막에는 가
클래스의 변수는 get, set 으로 그대로 노출시키지 마라세세하게 공개하기보다는 추상적인 개념으로 표현하라변수 하나하나 get 으로 가져와서 연산하여 사용하지 말고, 클래스에서 연산해서 필요한 값을 리턴해줘라절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함
오류 코드를 반환하면 함수를 호출한 즉시 오류를 확인해야 하기 때문에 조건문이 중첩된다.try 블록은 트랜잭션과 비슷하다.try 블록의 트랜잭션 범위부터 구현한다면 트랜잭션 본질을 유지하기 쉬워진다.checked 예외는 Open Closed Principle를 위반한다
외부 코드는 프로그램에 필요한 인터페이스 뿐만 아니라 필요하지 않은 인터페이스도 함께 제공한다.이를 클래스로 감싸 필요한 인터페이스만 제공하면 오용을 막을 수 있고, 외부 코드가 변하더라도 사용하는 모든 코드를 수정하지 않고 감싸는 클래스만 수정하여 처리할 수 있다.항
일하다 보면 매우 많은 테스트 케이스가 나오고, 심각한 관리 문제를 유발할 수 있다.실제 코드가 진화하면 테스트 코드도 변해야한다.테스트 코드가 지저분할수록 변경하기 어려워진다.테스트 코드를 작성할 때 유연성, 유지보수성, 재사용성을 고려하라.깨끗한 테스트 코드를 위해
클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다.static public 상수, static private 변수, private 인스턴스 변수 순서로 나온다.이후 public 함수가 나오고, private 함수는 호출하는 public 함수 직
도시를 세운다면? 도시는 수도 관리 팀, 전력 관리 팀 등 적절한 추상화와 모듈화로 잘 동작한다. 높은 추상화 수준인 시스템 수준에서도 깨끗함을 유지하는 것이 중요하다. 시스템 제작과 시스템 사용을 분리하라 소프트웨어 시스템은 애플리케이션 객체를 제작하고 의존성을 서
켄트 벡이 제시한 단순한 설계 규칙 4가지는 소프트웨어 설계 품질을 크게 높여준다.모든 테스트를 실행한다.중복을 없앤다.프로그래머 의도를 표현한다.클래스와 메서드 수를 최소로 줄인다.모든 테스트를 실행하기 위해서는 테스트 케이스를 작성해야한다.테스트가 가능한 시스템을
동시성은 what과 when을 분리하여 애플리케이션 구조와 효율을 개선하는 전략이다.IO 작업 대기 중에 다른 작업을 수행하여 응답 시간과 작업 처리량 개선이 가능하다.동시성은 대기 시간이 긴 경우에 성능 향상의 이점이 있다.그러나 동시성은 성능과 코드 작성 측면에 부
246pString args를 파싱하는 클래스를 구현하는 내용입니다.처음에 boolean 타입만 파싱하도록 구현을 하였을 때는 깔끔한 코드 였지만, 이후 다른 타입에 대한 처리를 추가하여 코드가 지저분해졌습니다.여기에 추가로 또 다른 타입에 대한 처리가 추가되면 매우
JUnit의 ComparisonCompactor 클래스 코드 개선하는 작업 324p변수명 앞에 붙은 타입 표시 제거조건문 캡슐화변수명 명확하게 변경함수명 명확하게 변경함수 역할 분리함수에 숨겨진 시간적인 결합 제거 (두 함수를 순서대로 호출하지 않으면 실패하는 케이스를
SerialDateTests 라는 클래스는 테스트 커버리지가 50% 정도이다.테스트 케이스 추가오류 문자열 반환하는 대신 에러를 던지도록 수정serial number 를 사용해 클래스를 구현하여 SerialDate이지만, 1899년 12월 30일 이후 serial 보다
다른 시스템에 저장할 정보를 주석으로 작성하지 마라.주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다오래되거나 잘못된 주석은 바로 삭제하라코드 내용을 중복으로 설명하는 주석은 삭제하라.주석을 작성하는 경우에는 단어를 신중하게 선택하고, 문법도 준수하고, 간결 명료