DSL(Domain Specific Language) : 도메인에 특화된 언어는 특정 문제 도메인, 특정 문제 표현 기법, 특정 문제 해결 기법에 사용할 목적으로 만든 프로그래밍 언어나 명세 언어를 의미한다. 해당 분야 전문가들의 의사 소통을 돕기 위해, 모호함을 없
의도를 분명히 밝힐 것따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.코드의 함축성 : 코드 맥락이 코드 자체에 명시적으로 드러나야함그릇된 정보를 피할 것약어 사용도 주의할 것일관성이 떨어지는 표기법은 그릇된 정보다.의미 있게 구분하라이름이 달라야 한다면
함수를 만드는 규칙작게, 더 작게 만들기확실히 '한 가지' 작업만 할 것함수 당 추상화 수준은 하나로함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택한다.
종속 함수'호출하는 함수 > 호출되는 함수' 순으로 작성 (호출되는 함수를 찾기가 쉬워지고 모듈 가독성 상승)
자료 추상화자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 것이 좋다.객체는 동작을 공개하고 자료를 숨기므로 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉽지만 새 동작을 추가하기는 어렵다.자료 구조는 별다른 동작 없이 자료를 노출하므로 기존 자료
오류 발생보다 예외를 발생시킬 것발생시킬 때 보다 구체적이면 그 원인과 위치를 찾기가 쉽다.코드 상에서 null을 최대한 줄이는 것이 좋음 (반환, 전달, 발생 등등)
외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자. Map에서 봤듯이, 새로운 클래스로 경계를 감싸거나 아니면 ADAPTER 패턴을 사용해 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하자. 어느 방법이든 코드 가독성이 높아지며, 경계 인터페이
TEMPLATE METHOD 패턴 -> 중복 코드 제거 가능부모 : given/when 부분 코드 자식 : then 부분 코드테스트 함수 하나는 개념 하나만 테스트할 것F.I.R.S.TFast : 테스트는 빨라야 한다.Independent : 각 테스트는 서로 의존하면
클래스 이름은 해당 클래스 책임을 기술해야 한다.단일 책임 원칙(Single Responsibility Principle, SRP)클래스의 책임, 즉 변경할 이유는 단 하나뿐이어야 한다.큰 클래스보다 작은 클래스 여럿으로 이루어진 시스템이 더 바람직하다. 작은 클래스는
관심사 분리 : 시스템 제작(construction)과 사용(use)을 분리하라. (생성 로직과 사용 로직을 분리하면 모듈성이 높아진다.)Main 분리 (생성과 사용의 분리)Main에서 Application 호출 전 Builder에 생성 요청 > Builder는 Con