반응형 개발 도서11 [이펙티브 자바] 아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라 나는 주로 회사에서 DTO 를 생성할 때 정적 팩터리 메서드 방식으로 개발했었다. 사실 메서드 명으로 어떤 역할을 하는지 표현이 되니까 사용했지, 생성자 방식에 비해 어떤 장단점이 있는지는 명확히 모르는 상태였다. 책을 보면서 개념을 정리해보자. 정적 팩터리 메서드의 장점 1. 이름을 가질 수 있다. 생성자를 사용한 경우 정적 팩터리 메서드를 사용한 경우 아래의 경우가 확실히 메서드의 역할을 잘 설명한다. 참고로 책에서 시그니처에 대한 말이 나와서 이게 뭔지 이해가 안갔는데, 블로그를 검색해보니 ‘메서드 명 + 파라미터’ 를 합친 말인 것 같다. 즉, 메서드 명과 파라미터가 같은 경우, 같은 시그니처이다. (리턴 타입과 예외 등은 달라도 무방하다) 참고 : Java Method Signature :: 한.. 2023. 3. 14. [객체지향의 사실과 오해] 이상한 나라의 객체 객체지향 패러다임은 현실 세계의 모방이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것이다. 이상한 나라의 앨리스 동화를 통해 객체지향 세계를 이해해보자. (내용은 유명하므로 생략한다..) 앨리스 객체 앨리스는 작은 문을 통과하기 위해 음료 객체를 마시고 키를 줄인다. 앨리스의 음료를 마시는 행동을 통해 상태가 변경이 된다. 앨리스의 특징 앨리스는 상태를 가지며 상태는 변경 가능하다. 앨리스의 상태를 변경시키는 것은 앨리스의 행동이다. 행동의 결과는 상태에 의존적이다. 앨리스가 작은 문을 통과하려면 키가 작은 상태여야 하기 때문이다. 또한 행동의 순서가 결과에 영향을 미친다. 문을 통과하려면 음료를 마시는 행동이 선행되야 하기 때문이다. 앨리스는 어떤 상태에 있더라도 유일하게 식별 가능하다. 앨리.. 2020. 4. 3. [객체지향의 사실과 오해] 협력하는 객체들의 공동체 객체 지향 언어인 JAVA를 사용하면서 '좋은 객체 지향 설계란 무엇일까?'를 항상 고민해 왔었다. 어떤 프로젝트를 설계할 때, 객체간의 협력을 시킨답시고 제대로 된 객체의 속성과 메서드도 정의내리지 못해서 요구사항이 추가되었을 때 바꿔야 할 코드가 많아져서 고생했던 경험이 있다. 올바른 설계에 대한 필요성을 느꼈고 객체 지향의 책으로 유명한 '조영호'님의 '객체지향의 사실과 오해'를 정독하며 객체 지향의 시각을 넓혀볼 예정이다. 01. 협력하는 객체들의 공동체 객체지향은 새로운 세계를 창조하는 것 대부분의 사람들은 객체지향을 '현실 세계의 모방' 이라고 말한다. 하지만 객체지향의 목표는 현실 세계를 모방하는 것이 아닌, 새로운 세계를 창조하는 것이다. 커피숍 예제 카페 브랜드로 유명한 별벅스를 예로 들.. 2020. 4. 1. 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 - PART 1 PART 1. 객체 지향 객체 지향 시스템을 상호작용하는 자율적인 객체들을 공동체로 보고 객체들을 이용해서 시스템을 분할하는 방식 자율적인 객체란? 상태와 행위를 가지고 자신의 일을 스스로 책임질 수 있는 객체 절차 지향 / 객체 지향 절차 지향 데이터 중심의 프로시저로 프로그래밍을 구성하는 기법 객체 지향 데이터와 관련된 프로시저를 객체라는 단위로 묶어 객체들이 모여 프로그래밍을 구성하는 기법 객체 지향의 핵심 기능을 제공하는 것 말 그대로 객체를 지향하는 것이지 클래스를 지향하는 것이 아님 객체 지향의 장점 한 곳의 구현 변경이 다른 곳에 변경을 시키지 않도록 해줌 캡슐화 추상화 오퍼레이션 / 시그니처 오퍼레이션 객체가 제공하는 기능 시그니쳐 오퍼레이션의 사용법 다음 3가지로 구성 기능 식별 이름 파.. 2019. 11. 26. if - else 는 왜 있는걸까? if - else 는 왜 있는걸까? 우리는 코딩을 할 때 if 문을 수도 없이 써왔다. if - else가 없으면 프로그램을 짤 수 없는 것일까? 어셈블리어에는 if 문이 없다. 대신 해당 조건에 만족하면 다른 구문으로 점프 시키는 구조로 동작한다. C 언어에서도 else를 사용하지 않고 goto 문을 써서 강제로 점프시키는 방법을 사용할 수 있다. 그러면 goto 문을 사용해서 다른곳으로 점프시키면서 코딩하면 될텐데 굳이 if - else문을 왜 만들어 놓은걸까? goto 문을 쓰면 '지정한 행으로 점프한다'라는 겉으로 보면 아주 간단한 기능인 것 처럼 보인다. 하지만 어디로 점프했는지 코드를 자세히 들여다 봐야하며 코드의 흐름을 파악하기가 어렵다. if - else를 도입하면 조건이 참인 경우와 거짓.. 2019. 4. 29. 이전 1 2 다음