본문 바로가기

독서3

[이펙티브자바] ~104p item 13~16 아이템 13 - clone의 재정의는 주의해서 진행하라 -> Cloneable 은 복제해도 되는 클래스임을 명시하는 용도의 인터페이스이나, 실제 복제 역할을 하는 메소드인 clone은 Cloneable이 아닌 Object 클래스에 선언되어 있어서 Cloneable만 구현한다고 해서 외부 객체에서 clone메소드를 호출 할 수는 없다. (리플렉션을 사용하면 가능할 수도 있으나, 100% 성공하지는 않는다고 함) -> 결론적으로 Cloneable은 문제가 꽤 많다. clone메소드를 사용해서 복제하는 방법보다는 복사생성자(변환생성자), 복사팩터리(변환팩터리) 를 사용하는 편이 더 좋은 경우가 많다. ex> 복사 생성자 public Burger(Burger burger) {... } ex> 복사 팩터리 pub.. 2020. 10. 12.
[켄트벡의 구현패턴] ~106p 06. 상태 상태 : 시간에 따라 변화하는 값 (ex 변수) 접근 : 상태에 대한 접근. (public, private 등 접근을 제어 가능) 직접 접근 : 객체 내의 상태(변수) 에 직접 접근. 간접 접근 : 메소드를 통해서 상태(변수)에 접근. (2개 이상의 데이터 간의 의존 관계가 존재하는 경우) 공용 상태 : 클래스 내의 모든 인스턴스에 적용되는 상태가 존재할 경우 필드로 저장해서 공용으로 쓴다. 가변 상태 : 인스턴스 마다 다른 상태를 사용해야 할 경우 필드 저장이 아닌 맵으로 만든다. 외재 상태 : 이해한 바대로라면 지역변수에 가변 상태를 저장하는 경우를 외재 상태로 이해함. 변수 : 변수는 단순한 이름을 갖는게 좋음. (간단하면서도 이해하기 쉽게) 변수의 생명 기간은 변수의 범위에 가까워지도록 같은 범위.. 2020. 9. 6.
[켄트벡의 구현패턴] ~80p 1. 소개 2. 패턴 프로그래밍에 있어 공통적인 문제를 해결하는 것이 비용이 적게 듬. 이를 통해 프로그래머가 독창적인 문제 해결에 더 집중할 수 있게 해준다. 가능하게 해주는 것이 바로 '패턴' -> 일종의 바둑의 '기보' 같은 거라고 이해함. 3. 프로그래밍 이론 가치 - 커뮤니케이션 -> 코드를 쉽게 이해할 수 있을 때, 커뮤니케이션 한다고 함. - 단순성 -> 복잡도가 낮은 것. (독자의 수준에 따라 조금 다름. 초보가 어렵다고 보는 걸 고수는 쉽다고 느낄 수 있음) - 유연성 -> 확장이나 수정에 있어서 유연한 정도 (유연성은 복잡도를 증가시키기도 함) 원칙 - 가치는 프로그래머별로 중점을 두는 부분이 달라질 수 있으나, 원칙은 정해진 것. - 가치로 따져서 패턴을 .. 2020. 9. 4.