[워밍업클럽3기] 클린코드-박우빈 발자국 1주차

[워밍업클럽3기] 클린코드-박우빈 발자국 1주차

학습내용

섹션1~4📝

  • 미래의 나를 위해, 미래의 자손을 위해

    이름 짓기는 깔쌈하게 ! 중요키워드만 뽑아서 !

    중요한 정보만 남기는 추상화 잘 하기 !

  • 메서드 생성

    • 클린코드를 위해 각 로직별로 추상화를 하여 메서드로 만들어주자!

    • “한가지 역할” 을 하는 코드 블럭을 찾고, 메서드로 분리

    • 그에 맞는 메서드 “이름 “ 지어주기

    <aside> 💡

    메서드 생성 단축키 =ctrl+alt+m

    </aside>

 

 

 

학습정리 링크


👣회고👣

이번 주는 SOLID 원칙을 중심으로 코드 리팩토링을 진행하며, 보다 견고하고 유지보수하기 쉬운 구조를 고민하는 시간을 보냈다.

 

💡 잘한 점
메서드 추출을 통해 가독성을 높이고 코드의 역할을 명확히 함
기존 코드를 무조건 변경하기보다는, 확장 가능성을 고려하면서 구조를 잡아나감
인터페이스와 추상 클래스의 활용을 고민하며 유연한 설계를 연습함

 

아쉬운 점

  • 아직은 강사님이 따라하는 대로 코드를 있는 그대로 따라치기만 하는 과정으로 수업을 들었음

  • 하나하나씩 로직과 메서드들을 분석해가며 수업을 들으려니, 30분 수업은 나에게 60분이되어 돌아왔음

  • 그만큼 시간을 오래 잡아먹기 때문에 진도 맞추기가 너무 어려웠다..

  • 내가 이 로드맵을 참여한게 올바른 선택이긴 할까? 라는 고민도 많이 들었지만, 일단 코드 100번정도 따라쳐보면 대충 흐름이 파악되지 않을까? 생각하며 수업을 듣고 노션에 정리하던 한주였다....

     

     

🎯 다음 주 목표

  • 단순히 원칙을 따르는 것이 아니라, 상황에 맞는 적용법을 체득하기

  • 미션을 해결할 때, "왜 이렇게 설계했는가"를 먼저 고민하고 코드를 작성하는 습관 들이기

 

 


 

📢미션📢

Day02

추상 : 눈사람을 만든다 구체 :

  1. 대기중에 떠다니는 먼지가 핵이 되어, 이 핵을 중심으로 수증기가 응결해가며 형성되는 결정체의 집합체를 손으로 뭉친다

  2. 2덩이로 둥글게 뭉쳐서 몸통과 머리로 붙여준다

  3. 주변에 굴러다니는 , 자연에서 산출되는, 생물이 아닌 단단한 고체 물질을 눈과 코에 붙여준다

 

 

Day04

SOLID원칙

  1. 단일책임원칙

클래스는 하나의 책임만 가져야 한다.

  • 책임을 인지하고 분리하고 다른 클래스 만들기.

  • 메인 도입부에 게임 실행부 넣지 않고 → 지뢰찾는 로직을 담은 클래스를 하나 생성해서 하나의 책임만 갖도록 Minesweeper

 

  1. 개방 폐쇄 원칙

기존 코드를 많이 변경하지 않고 확장할 수 있도록 설계하기 추후 유지보수나 조건들이 추가로 생겨날때 당황하지 않도록 너무 상수로만 값이나 데이터 정의 내리지 않기

  1. 리스코브 치환 원칙

자식은 부모를 대체해서 일할 수 있고, 부모는 자식을 대체할 수 없다. 부모 클래스를 사용하는 곳에 자식 클래스를 넣어도 문제가 없어야 함

  1. 인터페이스 분리 원칙

하나의 커다란 인터페이스 사용하는게 아니라, 여러개의 인터페이스로 분리하기 하나의 인터페이스에는 하나의 메서드만 , 관련된 메서드만 넣어야함

  1. 의존성 역전 원칙

구체적인 구현 클래스가 아니라, 인터페이스나 추상 클래스에 의존 하도록 설계

 


public boolean validateOrder(Order order) {
    if (isInvalidOrder(order)) {
        return false;
    }
    return true;
}

private boolean isInvalidOrder(Order order) {
    if (order.doesNotHaveAnyItem()) {
        log.info("주문 항목이 없습니다.");
        return true;
    }
    if (order.doesNotHaveCustomerInfo()) {
        log.info("사용자 정보가 없습니다.");
        return true;
    }
    if (order.hasNegativeTotalPrice()) {
        log.info("올바르지 않은 총 가격입니다.");
        return true;
    }
    return false;
}

 



👣회고👣

미션을 해결하면서 "추상화"의 중요성을 몸소 체감한 한 주였음
특히, 눈사람 만들기 예제를 통해 구체적인 행동을 추상화하는 연습을 했고, 이를 코드에도 적용하려 노력했다.

 

댓글을 작성해보세요.


  • 장태근
    장태근

    안녕하세요 예은님 🙂

    학습 정리와 회고가 나눠져 있어 더욱 재밌게 읽었습니다.

    (정리에도 힘써주셔서 놀랐습니다)

    저도 강의를 수강할 때 비슷한 고민을 해서 공감되네요.

    결국 끝맺음을 맺어야 다음을 확장할 수 있더라고요.

    완주하시고 아쉬움이 작은 성공으로 전환되길 바랍니다.

    감사합니다.

채널톡 아이콘