Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 10장 클래스
#clean_code
2년 전
737

오늘 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)

    • 클래스는 구현이 아닌 추상화에 의지해야 한다.

    • 결합도를 줄이면 자연스럽게 따라오게 되는 원칙

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

클래스에 관한 내용은 읽어도 읽어도 실천하기가 쉽지 않다..

오늘도 시간이 쫓겨 미루고 온 클래스 쪼개기를.. 이번 주 안에는 꼭 시도해보자