협력하는 객체들의 공동체 자바의 정석에서도 그렇고 객체지향이란 실제 세상에 있는 것들을 코드상으로 가져오는 즉 직접적이고 직관적으로 모델링 할 수 있는 패러다임이라고 하기도 한다. 다만 실제 세상은 그런 객체는 많이 없고 유사성 찾기 어려운 경우가 일반적이다 . 객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것! 그럼에도 불구하고 객체와 실세계를 비교하면서 개념을 동일시하게 되는 이유는 객체의 특징인 캡슐화와 자율성을 설명하기에 실세계의 생명체와 비유하는것이 이해하기 쉽기 때문이다. 연결 완전성 정의 : 시스템의 구성 요소들이 서로 잘 연결되고 상호작용할 수 있도록 설계하는 것을 의미합니다. 이는 객체 간의 관계와 상호작용을 명확하게 정의하여 시스템의 유연성과 확장성을 높이는..
점진적인 개선 어떻게 짰느냐고?- 프로그래밍은 과학보다 공예 - 깨끗한 코드는 바로 나오지 않는다. 초안부터 작성후 점진적으로 고쳐야 한다 점진적으로 개선하다- 점진적인 개선을 위해 필요한 것은 TDD- 점진적으로 수정해도 해당 코드가 유효한지 빠르게 파악 가능 결론- 그저 돌아가는 코드로 만족하지 마라- 서두르지 말고 시간을 들여 설계 그리고 개선해 코드를 작성하자 코드 해당 장에서는 대부분 코드의 수정 사항을 보여주면서 어떻게 개선했는지 보여준다. 처음에는 boolean 변수만 수정해서 진행했으나 그 외 String, Integer등 인수의 숫자를 늘리면 늘릴수록 코드는 길어지고 복잡해지며 답도 없어진다. 그래서 인수 유형을 HashMap으로 선언한 다음 스키마 요소를 분석해서 진짜 유형으로 ..
시스템 도시를 세운다면- 도시는 큰 그림을 그리는 사람과 작은 사항에 집중하는 사람들이 모여서 제대로 된 기능을 한다- 추상화와 모듈화로 시스템을 깨끗하게 유지가능 시스템 제작과 시스템 사용을 분리하라 - 시스템웨어 시스템은 준비과정과 런타임 로직으로 분리를 해야한다 - 관심사 분리를 하자 의존성 주입- 사용과 제작을 분리하는 메커니즘 중 하나 - 제어 역전 : 한 객체가 맡은 보조 책임을 새로운 객체에게 넘기는 것 , 새로운 객체는 넘겨받은 책임으로 단일 책임 우너칙을 지킨다- 보통 필요한 객체는 실행시점에서 이미 만들어져있고 생성자 인수나 설정자 메서드를 사용해서 의존성을 설정한다 확장- 처음부터 어떻게 규모를 다 알고 설계하냐? 처음엔 작게 그리고 점차 키우는게 정석이다- 오늘 주어진 사용자 스토..