### 1장 - 잘못된 구조의 문제 깨닫기 - 수많은 악마를 만들어 내는 데이터 클래스 - 데이터와 로직 등이 분산 되어 있는 것을 **응집도**가 낮은 구조라 함 - 응집도가 낮음으로 생길 수 있는 문제 1. 코
이 이후 출력을 해보면 20으로 설정했던 weaponB도 25로 변경되어 있는 것을 볼 수 있다. 이렇게 때문에 재사용을 할 때 예상치 못한 동작이 될 수 있으므로 인스턴스를 개별적으로 생성하고 재사용하지 않는 로직으로 변경하면 됨 ``` AttackPower at
## 6장 - 조건분기: 미궁처럼 복잡한 분기처리를 무너뜨리는 방법 --- ### 6.1 조건 분기가 중첩되어 낮아지는 가독성 **6.1.1 조기 리턴으로 중첩 제거하기** 조기 리턴 (early return)을 통해 중첩 악마를 퇴치할 수 있음 예를
자바에는 anyMatch()처럼 조건을 만족하는 요소가 컬렉션 내부에 하나라도 포함되는 경우 true를 리턴하는 메서드가 존재한다고 함 하지만, 이를 모르고 for ( ~ ) { if ( ~ ) 이렇게 메서드 하나면 될 것을 반복문과 조건문을 사용
이렇게 절대로 실행되지 않는 조건 내부에 있는 코드를 데드 코드 혹은 도달 불가능한 코드라고 함이 악마는 겉보기에는 큰 문제가 나지 않을 것 같더라도 여러 가지 폐해를 가져오기 쉬움코드의 가독성을 떨어트림 - 해당 코드를 읽는 사람이 데드 코드 주변을 읽을 때마다 어
이름 설계가 부적절하면 악마를 불러 일으킴상품을 그대로 '상품 클래스' 라고 하면 관련된 여러 로직을 가지며 거대하고 복잡해짐변경사항이 생기면 클래스와 관련된 것들을 모두 확인 해봐야하는 문제가 생김강한 결합을 해소하여 결합이 느슨하며 응집도가 높은 구조로 만들려면 관
코드를 변경할 때 주석도 함께 변경하면 좋지만, 바쁠 때 충분히 주의하지 않으면 주석까지 유지 보수하기는 힘듦주석이 구현 시점과 멀어질수록, 주석을 거짓말을 할 가능성이 높음주석이 낡아버리기 전에 구현 변경시 주석도 함께 변경하는 것이 좋음최대한 의도가 제대로 전달될
모델은 시스템의 구조를 설명하기 위해 사용시스템이라는 것은 목적을 달성하기 위한 수단, 기술의 본질은 능력을 확장하는 것결론적으로 시스템인 목적을 달성하기 위한 수단이고 모델은 시스템의 구성요소이므로즉, 모델은 목적을 달성하기 위한 수단의 일부를 개념화한 것모델이란 특