5장 가독성 높은 코드를 작성하라서술형 명칭 사용서술적이지 않은 이름은 코드를 읽기 어렵게 만든다.주석문으로 서술적인 이름을 대체할 수 없다.주석문에 대한 유지보수도 필요해진다.클래스가 수백 줄의 길이를 가진다면, 주석을 찾기 위해 스크롤 해야한다.중복된 주석문은 유해할 수 있다.코드가 수행하는 작업을 설명하는 주석문을 추가한 경우 코드가 변경하면 주석문을 수정해야 하는 상황이 생긴다.주석문이 이해하기 어려운 코드가 있다.String generateId(String[] data) { // data[0]은 성이고, data[1]부터는 이름이다}헬퍼 함수를 사용하여 가독성이 높은 코드를 쉽게 작성할 수 있다.String generateId(String[] data) { return firstName(dat..
4장시스템이 복구할 수 있는 오류와 복구할 수 없는 오류를 구분한다.신속하게 실패하고 분명하게 실패한다오류를 전달하기 위한 다양한 기법과 선택을 위한 고려 사항복구 가능성복구 가능한 오류네트워크 오류자신의 코드가 의존하는 서비스에 연결하지 못한 경우 사용자가 몇 초 기다렸다가 다시 시도하거나, 네트워크 연결을 확인하도록 요청할 수 있다.중요하지 않은 작업 오류서비스 사용에 대한 어떤 통계를 기록하는 부분에서 오류가 발생한다면 실행을 계속해도 무방하다.복구할 수없는 오류오류가 발생하고 시스템이 오류를 복구할 수 있는 합리적인 방법이 없는 경우코드와 함께 추가되어야 하는 리소스가 없다.다음 예와 같이 어떤 코드가 다른 코드를 잘못 사용한다.잘못된 입력 인수로 호출일부 필요한 상태를 사전에 초기화하지 않음신속..
3장 다른 개발자와 코드 계약자신의 코드와 다른 개발자의 코드개발자들의 코드는 서로 의존하게 된다.여러 가지 다른 기능을 위해 작성한 코드가 재사용되고 있음을 알 수 있다.요구사항이 항상 변한다는 점을 인지해야 한다.고품질 코드를 작성할 때 가장 중요한 고려 사항 중 하나는 다른 개발자가 변경하거나 코드와 상호작용할 때 발생할 수 있는 문제를 파악하는 것이다.아래 3가지를 고려하는 것이 유용하다자신에게 명백하다고 해서 다른 사람에게도 명백한 것은 아니다.다른 개발자는 무의식중에 여러분의 코드를 망가뜨릴 수 있다.시간이 지남에 따라 자신의 코드를 기억하지 못한다.자신에게 분명하다고 해서 다른 사람에게도 분명한 것은 아니다코드가 어떻게 사용되어야 하는지, 무엇을 하는지, 왜 그 일을 하고 잇는지를 설명하는 ..
2장 추상화 계층널값 및 의사코드 규약널값에 대한 규약을 지정하지 않으면, NullPointerException, NullRefrenceException, Cannot read property of null과 같은 에러를 발생할 수 있다.이를 위해 널 안전성과 보이드 안전성에 대한 개념이 생겼다.자바나 c++에서는 옵셔널 타입을 통해서 널 안전성을 보장한다.추상화 계층 및 코드 품질의 핵심 요소가독성모든 세부 사항을 이해하는 것은 불가능하지만, 높은 계층의 추상화를 이해하고 사용하기 쉽게 해야한다.모듈화구현 세부 사항이 외부로 노출되지 않도록 보장할 때, 다른 계층이나 코드의 일부에 영향을 미치지 않고 계층 내에서만 구현을 변경하기가 매우 쉬워진다.재사용성 및 일반화성테스트 용이성코드의 계층추상화 계층을..
좋은 코드, 나쁜 코드 [1장] 코드 품질고품질 코드신뢰할 수 있는 코드유지보스가 용이버그가 적은 소프트웨어를 생산요구사항에 유연하게 대처**저품질 코드**요구사항 에 대규모의 코드 변경 및 리팩터링이 필요시스템이 미리 정의되지 않은 상태에 놓이고 손상될 가능성이 있음코드는 어떻게 소프트웨어가 되는가코드는 일반적으로 엔지니어가 작성하자마자 실제로 실행되는 소프트웨어가 되지 않는다.코드가 의도한 대로 작동하고 기존의 기능이 여전히 잘 동작하기 위해서 다양한 과정과 점검이 이루어진다.이러한 과정을 소프트웨어 개발 및 배포 프로세스라고 한다.코드베이스 : 소프트웨어를 빌드할 수 있는 코드가 저장된 저장소git, subversion, perfore와 같은 형상 관리 시스템으로 관리됨코드 제출 : 코드 커밋, 풀..
6장 스터디 기능 설계 대 구조 설계 기능 측면 설계 : 제품이 사용자를 위해 무엇을 할 수 있는지에 초점 구조 측면 설계 : 제품의 형태가 어떠해야 하는지에 초점 훌륭한 기능이 훌륭한 소프트웨어를 만드는 충분조건이라면, 훌륭한 구조는 훌륭한 소프트웨어를 만들기 위한 필요조건이다. 미래를 예측할 수없지만, 변경을 수용할 수 있도록 설계에 마련해야 한다 객체지향 접근방법은 자주 변경되지 않는 안정적인 객체 구조를 바탕으로 시스템 기능을 객체 간의 책임으로 분배한다. 시스템 기능을 더 작은 책임으로 분할되고 적절한 객체에게 분배되기 때문에 기능이 변경되더라도 객체 구조는 그대로 유지된다. 이것이 객체를 기반으로 책임과 역할을 식별하고 메시지를 기반으로 객체들의 협력 관계를 구축하는 이유다. 안정적인 객체 구..