반응형

SW 개발 일반/클린 코드 3

디미터 법칙 (Law of Demeter)

소프트웨어 개발에서 결합도를 줄이는 것은 유지보수성과 확장성을 높이는 중요한 원칙입니다. 《Pragmatic Programmer》에서는 이를 설명하기 위해 디커플링(Decoupling)과 디미터의법칙(Law of Demeter, LoD)을 강조합니다. 이번 글에서는 디미터의 법칙이 왜 중요한지, 그리고 이를 지키지 않으면 어떤 문제가 발생하는지 실제 코드와 함께 살펴보겠습니다.디미터의 법칙이란?디미터의 법칙은 객체가 직접 알지 못하는 객체의 메서드를 호출하지 말라는 원칙입니다. 즉, 한 객체의 메서드는 다음 대상에 대해서만 직접적으로 메서드를 호출해야 합니다:자기 자신 (this)메서드의 매개변수로 전달된 객체직접 생성한 객체자기 자신이 소유한 구성 요소 객체이 법칙을 따름으로써 불필요한 결합을 줄이고,..

빈약한 객체 (Anemic Object)

소프트웨어 개발에서 객체는 데이터를 단순히 보관하는 역할이 아니라, 의미 있는 행동을 수행하는 주체가 되어야 합니다. 하지만 많은 코드베이스에서 여전히 속성(getters/setters)만을 노출하는 빈약한 객체(Anemic Object)를 발견할 수 있습니다. 이러한 객체는 절차적 코드 스타일을 유발하고 유지보수를 어렵게 만듭니다. 이번 글에서는 빈약한 객체를 풍부한 객체(Rich Object)로 변환하는 방법을 소개합니다.빈약한 객체의 문제점빈약한 객체는 보통 다음과 같은 특징을 가집니다:데이터만 포함하고 행동이 없음: 속성 값을 설정하고 가져오는 기능만 제공합니다.절차적 코드 유발: 비즈니스 로직이 객체 외부에 존재하면서 코드의 응집도가 떨어집니다.변경에 취약: 객체가 단순한 데이터 보관소로 작동하..

클린 코드: MAPPER 원칙

클린 코드(clean code)는 로버트 C. 마틴(Robert C. Martin)의 저서에서 제안된 개념으로, 이해하기 쉽고, 변경하기 용이하며, 예측 가능해야 한다는 특징을 갖습니다. 클린 코드를 달성하는 방법 중 하나는 OOP 원칙을 따르는 것입니다. OOP는 현실 세계의 개념을 모델링하는 방식으로, 객체와 클래스를 활용해 소프트웨어 시스템을 구성합니다. 하지만 단순히 객체를 사용하는 것만으로는 클린 코드가 보장되지 않습니다. 잘못된 객체 모델링은 오히려 복잡성을 증가시키고, 유지보수를 어렵게 만들 수 있습니다. 이러한 문제를 해결하기 위해 등장한 것이 바로 MAPPER 원칙입니다.MAPPER 원칙이란?현실 세계를 반영하는 소프트웨어 설계 원칙에서 설명한 내용을 MAPPER라는 원칙으로 설명하는 책..

반응형