개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
클래스는 작고 하나의 책임만 가져야 한다.
응집도가 높고 결합도가 낮은 클래스를 만들자.
클래스를 쪼개고 추상화하자.
TIL (Today I Learned) 날짜
2022.05.10
오늘 읽은 범위
10장. 클래스
책에서 기억하고 싶은 내용을 써보세요.
단일 책임 원칙 (Single Responsibility Principle, SRP)
클래스나 모듈을 변경할 이유는 단 하나 뿐이어야 한다.
응집도를 높게 하자.
응집도가 높다는 것은 클래스에 속한 메소드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 것
클래스에서 인스턴스 변수를 사용하다 보면 특정 메소드만 사용하는 변수가 생긴다
이럴 때가 클래스를 쪼개야 한다는 신호이다.
개방 폐쇄의 원칙 (Open-Closed Principle, OCP)
클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다.
새 기능을 수정하거나 기존 기능을 변경할 때 건들리 코드가 최소인 것이 좋다.
추상 클래스와 인터페이스 사용
구현이 미치는 영향을 격리시킨다.
외부 API 를 사용하는 경우 인터페이스를 생성하여 테스트할 수 있다.
public interface StockExchange {
Money currentPrice(String symbol);
}
public Portfolio {
private StockExchange exchange;
public Portfolio(StockExchange exchange) {
this.exchange = exchange
}
...
}
public class PortfolioTest {
private FixedStockExchangeStub exchange;
private Portfolio portfolio;
@Before
protected void setUp() thorws Exception {
exchange = new FiexedStockExchangeStub();
exchange.fix("MSFT", 100);
portfolio = new Portfolio(exchange);
}
@Test
public void GivenFiveMSFTTotalShouldBe500() throws Exception {
portfolio.add(5, "MSFT");
Assert.assertEquals(500, portfolio.value());
}
}
의존 역전 원칙 (Dependency Inversion Principle, DIP)
클래스는 구현이 아닌 추상화에 의지해야 한다.
결합도를 줄이면 자연스럽게 따라오게 되는 원칙
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
클래스에 관한 내용은 읽어도 읽어도 실천하기가 쉽지 않다..
오늘도 시간이 쫓겨 미루고 온 클래스 쪼개기를.. 이번 주 안에는 꼭 시도해보자