본문 바로가기

오브젝트3

계약에 의한 설계(Contract By Design) 더 잘 활용하기(with java) 들어가기 계약에 의한 설계(Contract By Design) 라는 용어에 대해서 조영호님의 Object 책에서 처음 접하게 되었습니다. 계약에 의해 설계가 이루어지지 않는 코드에서 발생하는 문제점을 운영중인 프로덕트 코드에서 쉽게 발견할 수 있었고, 이를 계기로 사내에 '계약에 의한 설계' 라는 이름으로 세미나까지 하게 되었습니다. 발표자료 그러나, 발표를 하면서도 '실제 동작되는 코드에서는 어떻게 '계약에 의한 설계' 를 지킬 수 있을까?' 라는 생각을 했습니다. 실제로 계약에 의한 설계(Contract By Design) 를 준수하기 위해서 구글이 만든 cofoja 라는 라이브러리도 있고, vanilla4j 라는 라이브러리도 있었습니다. 하지만 이 두 개의 라이브러리를 적극적으로 활용하지 못한 이유.. 2021. 4. 5.
[책] 엘레강트 오브젝트(Elegant object) - 조영호 역 오랜만에 객체지향 프로그래밍에 대해서 당연시 여겼던 부분에 대해서 다시 한번 생각할 수 있게끔 도와준 책을 만났다. 읽고 생각하며, 직접 나의 생각을 적는 그 과정속에서, 이전에 내 몸에 내재화 되어있던 여러 개발 패턴들을 의심할 수 있었다. ‘getter, setter 메서드를 왜 써야 하는가?’, ‘C 언어에는 자료구조라고 선언할 수 있는 키워드가 있지만, 왜 자바는 없었을까?’ 이런 의구심 부터, ‘클래스 이름에 -er 이 붙은 객체들은 좋은 객체가 아니다.’ 라는 절로 여러 부분에서 생각할 수 있도록 만들어 준 책 이였다. 종종 저자는 말을 너무 강하게 해서 읽고 있는 내 생각마저도 휩쓸리는 경향이 있었지만,(러시아 사람들은 글을 강하게 쓴다고 한다.) 그러지 않기 위해서 남에게 나의 생각을 이야.. 2021. 2. 20.
Template Pattern(템플릿 패턴) VS Strategy Pattern(전략 패턴) Photo by Mike Meyers on Unsplash 들어가기 대부분의 디자인 패턴 책에서는 이 두가지를 비교해서 설명합니다. 왜 일까요? 이 두가지 패턴은 데이터를 은닉화 시켜 구현될 수 있도록 도와주는 패턴입니다. 각각의 쓰이는 상황은 다르지만, 결론부터 이야기하면 잘 짜여진 코드는 템플릿 패턴에서 전략 패턴으로 손쉽게 전환할 수 있고, 반대로 전략패턴에서 템플릿 패턴으로 손쉽게 변경가능하다고 합니다. 그럼 왜 그런지 한번 살펴봅시다. 템플릿 패턴이란 무엇인가? 하위 클래스에서 구체적으로 처리하는 디자인 패턴 개인적으로 패턴을 어렵게 생각하면 끝없이 어렵고 쉽게 생각하면 너무 쉽게 생각하는 경향이 있다고 생각합니다. 그런 예시로 템플릿 패턴도 포함됩니다. 부주제로 '하위 클래스에서 구체적으로 처.. 2020. 9. 27.