![[워밍업클럽3기] 클린코드-박우빈 발자국 1주차](https://cdn.inflearn.com/public/files/blogs/dc0fed9e-2e86-4508-b8b9-d03d1812c979/워밍업클럽-클린코드.jpg)
[워밍업클럽3기] 클린코드-박우빈 발자국 1주차
학습내용
섹션1~4📝
미래의 나를 위해, 미래의 자손을 위해
이름 짓기는 깔쌈하게 ! 중요키워드만 뽑아서 !
중요한 정보만 남기는 추상화 잘 하기 !
메서드 생성
클린코드를 위해 각 로직별로 추상화를 하여 메서드로 만들어주자!✅
“한가지 역할” 을 하는 코드 블럭을 찾고, 메서드로 분리✅
그에 맞는 메서드 “이름 “ 지어주기✅
<aside> 💡
⭐메서드 생성 단축키 =ctrl+alt+m
</aside>
학습정리 링크
https://www.notion.so/DAY02-1ab010f075ca81ed8b20fd23dead0c76?pvs=4
https://www.notion.so/DAY-04-SOLID-1-1ab010f075ca81abbcd8c909d84e74ce?pvs=4
👣회고👣
이번 주는 SOLID 원칙을 중심으로 코드 리팩토링을 진행하며, 보다 견고하고 유지보수하기 쉬운 구조를 고민하는 시간을 보냈다.
💡 잘한 점
✅ 메서드 추출을 통해 가독성을 높이고 코드의 역할을 명확히 함
✅ 기존 코드를 무조건 변경하기보다는, 확장 가능성을 고려하면서 구조를 잡아나감
✅ 인터페이스와 추상 클래스의 활용을 고민하며 유연한 설계를 연습함
⚠ 아쉬운 점
아직은 강사님이 따라하는 대로 코드를 있는 그대로 따라치기만 하는 과정으로 수업을 들었음
하나하나씩 로직과 메서드들을 분석해가며 수업을 들으려니, 30분 수업은 나에게 60분이되어 돌아왔음
그만큼 시간을 오래 잡아먹기 때문에 진도 맞추기가 너무 어려웠다..
내가 이 로드맵을 참여한게 올바른 선택이긴 할까? 라는 고민도 많이 들었지만, 일단 코드 100번정도 따라쳐보면 대충 흐름이 파악되지 않을까? 생각하며 수업을 듣고 노션에 정리하던 한주였다....
🎯 다음 주 목표
단순히 원칙을 따르는 것이 아니라, 상황에 맞는 적용법을 체득하기
미션을 해결할 때, "왜 이렇게 설계했는가"를 먼저 고민하고 코드를 작성하는 습관 들이기
📢미션📢
Day02
추상 : 눈사람을 만든다 구체 :
대기중에 떠다니는 먼지가 핵이 되어, 이 핵을 중심으로 수증기가 응결해가며 형성되는 결정체의 집합체를 손으로 뭉친다
2덩이로 둥글게 뭉쳐서 몸통과 머리로 붙여준다
주변에 굴러다니는 , 자연에서 산출되는, 생물이 아닌 단단한 고체 물질을 눈과 코에 붙여준다
Day04
SOLID원칙
단일책임원칙
클래스는 하나의 책임만 가져야 한다.
책임을 인지하고 분리하고 다른 클래스 만들기.
메인 도입부에 게임 실행부 넣지 않고 → 지뢰찾는 로직을 담은 클래스를 하나 생성해서 하나의 책임만 갖도록
Minesweeper
개방 폐쇄 원칙
기존 코드를 많이 변경하지 않고 확장할 수 있도록 설계하기 추후 유지보수나 조건들이 추가로 생겨날때 당황하지 않도록 너무 상수로만 값이나 데이터 정의 내리지 않기
리스코브 치환 원칙
자식은 부모를 대체해서 일할 수 있고, 부모는 자식을 대체할 수 없다. 부모 클래스를 사용하는 곳에 자식 클래스를 넣어도 문제가 없어야 함
인터페이스 분리 원칙
하나의 커다란 인터페이스 사용하는게 아니라, 여러개의 인터페이스로 분리하기 하나의 인터페이스에는 하나의 메서드만 , 관련된 메서드만 넣어야함
의존성 역전 원칙
구체적인 구현 클래스가 아니라, 인터페이스나 추상 클래스에 의존 하도록 설계
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;
}
👣회고👣
미션을 해결하면서 "추상화"의 중요성을 몸소 체감한 한 주였음
특히, 눈사람 만들기 예제를 통해 구체적인 행동을 추상화하는 연습을 했고, 이를 코드에도 적용하려 노력했다.
댓글을 작성해보세요.
안녕하세요 예은님 🙂
학습 정리와 회고가 나눠져 있어 더욱 재밌게 읽었습니다.
(정리에도 힘써주셔서 놀랐습니다)
저도 강의를 수강할 때 비슷한 고민을 해서 공감되네요.
결국 끝맺음을 맺어야 다음을 확장할 수 있더라고요.
완주하시고 아쉬움이 작은 성공으로 전환되길 바랍니다.
감사합니다.