노마드코더 개발자북클럽 Clean code TIL 9 : 10장. 클래스

        

오늘 TIL 3줄 요약


  • 구체적인 클래스는 상세한 구현을 포함한다.
    추상 클래스는 개념만 포함한다.


  • 새 기능을 수정하거나 기존 기능을 변경할 때,
    건드릴 코드가 최소인 시스템 구조가 바람직하다.


  • 이상적인 시스템이라면 
    새 기능을 추가할 때, 
    시스템을 확장할 뿐 기존 코드를 변경하지 않는다.



TIL (Today I Learned) 날짜

2025. 06.08



오늘 읽은 범위

10장 클래스



기억하고 싶은 내용을 써보세요.

  • 리팩터링한 프로그램은 좀 더 길고 서술적인 변수 이름을 사용한다.


  • 리팩터링한 프로그램은 코드에 주석을 추가하는 수단으로
    함수 선언과 클래스 선언을 활용한다.


  • 가독성을 높이고자 공백을 추가하고 형식을 맞춘다.


  • 클래스에 손대는 순간 설계를 개선하려는 고민과 시도가 필요하다.


  • 모든 파생 클래스가 공통적으로 사용하는 비공개 메서드는
    유틸리티 클래스에 넣었다.


  • DIP는 클래스가 상세한 구현이 아니라
    추상화에 의존해야 한다는 원칙이다.







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

  • 변경으로부터의 격리 Part에서,
    시시각각 값이 변하는 외부 API 테스트를 위한 방법을 설명한다.

    고정된 주가를 반환하는 테스트 코드를 통해
    시스템 결합도를 낮추는 것에 핵심이 있다.

    Java를 배우지 않았지만
    그냥 눈으로 읽으며 이해하는 것과 , 따라 치면서 이해하는 것엔 큰 차이가 있다.
    그래서 Java코드를 따라 치면서 코드를 이해했다.



    Portfolio 클래스에서 TokyoStockExchange API를 직접 호출하는 대신
    Stock Exchange라는 인터페이스를 생성한 후 메서드를 하나 선언한다.



    public interface StockExchange {
    
    Money currentPrice(String symbol);



    다음으로 StockExchange 인터페이스를 구현하는
    TokyoStockExchange 클래스를 구현한다.


    또한 Portfolio 생성자를 수정해 StockExchange 참조자를 인수로 받는다.

    public Portfolio {
    
    private StockExchange exchange;

    public Portfolio(StockExchange exchange) {

    this.exchage = exchange;

     

     //...


    }

    public class PortfolioTest {
    
    private FixedStockExchangeStub exchange;

    private Portfolio portfolio;

     

    @Before

    protected void setUp() throws Exception {

    exchange = new FixedStockExchangeStub();

    exchange.fix("MSFT",100);

    portfolio = new Portfolio(exchange); 

     }

     

     @Test

     public void GivenFiveMSFTTotalShouldBe500() throws Exception {

    portfolio.add(5, "MSFT");

    Assert.assertEquals(500, portfolio.value()); 

     }


    }  

      
      
         



궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • @before 데코레이터가 하는 역할은 무엇일까?





댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Intel 14th gen CPU의 칩 충돌 사태와 해결 방법