[워밍업 클럽 스터디 2기 백엔드(클린코드, 테스트코드)] 1주차 발자국
1주차 강의
섹션 1. 추상과 구체
섹션 2. 논리, 사고의 흐름 | 객체 지향 패러다임
섹션 3. 객체 지향 패러다임 (SOLID)
요약 : 좋은 코드(클린코드)를 작성하기 위한 도구와 사용 방법을 학습
강의 내용
추상과 구체 (클린코드의 목적과 도구)
논리, 사고의 흐름
우리는 코드를 읽는 시간이 더 많다.
따라서, 코드는 쉽게 읽히고 이해되어야 한다.
이를 위해, 우리는
추상
,구체
를 이해하고 분리해야 한다.메서드 작성, 파라미터 선언, 반환값 고민, 매직 스트링 등 좋은 코드 작성을 위한 고민과 도구를 학습
조기 리턴, 공백 라인, 부정어 등 이해하기 쉬운 코드 작성을 위해 조심해야 하는 부분 학습
한번쯤 들어보거나, 읽어본 이야기다. 그렇지만, 현업에서 개발하면서 시간을 핑계로, 선배들이 좋게 보지 않는다는 이유로 실무 개발과 공부한 내용을 분리해서 개발해왔다. 그렇기에, 실제 코드를 바탕으로 고민하고 코드를 작성해보는 경험이 좋았다. 개발자는 고민하고, 코드를 직접 작성해봐야 뭐가 된다는 것을 새삼 느낄 수 있었다.
객체 지향 패러다임
단일 책임 원칙
객체의 변경 기준은 책임이다.
책임이 단일하지 않다면, 변경의 기준도 단일하지 않다.
이로 인해 객체의 코드 변경의 원칙이 무너진다. 코드를 읽고, 객체를 사용해야 하는 입장에서 어려움을 겪게 된다.
개방 / 폐쇄 원칙
책임이 과중히 부과되어서는 안된다.
즉 객체는 자신의 책임에 대해서는 기능을 확장할 수 있지만, 자신이 아닌 책임에 대해서는 영향을 받으면 안된다.
현재의 책임이 구체인지 추상인지 고민하고, 구체라면 추상화와 다형성을 활용해서 원칙을 지킬 수 있다.
리스코프 치환 원칙
사용하는 입장에서 부모 클래스와 자식 클래스의 차이를 알지 못해야 한다.
즉 슈퍼 클래스는 불필요한 기능을 상속해서는 안된다. 객체의 상속 사용시 주의해야 할 것 같다.
인터페이스 분리 원칙
책임을 명확하게 갖는 것은, 인터페이스도 예외가 아니다.
인터페이스는 추상화, 다형성의 중요한 도구인 동시에 책임을 갖는다.
의존성 역전 원칙
기능은 변하고, 요구사항은 추가된다.
그렇기에 고수준 모듈은 구체(저수준 모둘)를 참조하는 것이 아니라 추상에 의존해야 한다.
새로운 요구 사항이 추가되고, 기능이 변경된다고 하더라도 추상에 의존한다면 코드의 변경 범위를 최소화 할 수 있다
미션 : 배운 내용을 바탕으로 고민해보기
미션1. 추상과 구체 사례 예시 제출
미션2. 과제 코드 리팩토링 제출
미션은 강의를 학습한 내용을 적용해보는 방향으로 접근했다.
특히, 고민 해보는 것
을 중요하게 생각했다.
과거에도 강의를 보고 학습하면서, 직접 고민해보는 시간이 부족했다고 생각했다.
public class Delivery {
private Order order;
public boolean validateOrder(Order order) {
if (validateItemSize(order)) {
log.info("주문 항목이 없습니다.");
return false;
}
if (validateTotalPrice(order)) {
log.info("올바르지 않은 총 가격입니다.");
return false;
}
if (DoesNotHaveCustomerInfo(order)) {
log.info("사용자 정보가 없습니다.");
return false;
}
return true;
}
private boolean validateTotalPrice(Order order) {
return order.getTotalPrice() <= 0;
}
private boolean validateItemSize(Order order) {
return order.doesNotHaveItems();
}
private boolean DoesNotHaveCustomerInfo(Order order) {
return order.doesNotHaveCustomInfo();
}
}
1주차 회고
계획한 것 보다 강의와 미션에 시간을 할애하지 못했다.
과제를 제출하고, 다른 참여생분들이 작성한 미션을 보면서 반성하고 자극되었다.
특히 아쉬운 점은, 과제를 pdf, github 등을 통해 더 깔끔하게 제출할 수 있었는데 하지 못한점이 아쉽다.
좋았던 점은, 워밍업 클럽이라는 곳에 소속감이 생겨서 주어진 기간내에 강의를 완강했다는 것. 혼자 수강했다면 이 정도 진로를 나갈 수 없었을 것이라고 생각한다.
가장 좋았던 것은 미션이었다. 강의에서도 가장 좋은 점이 직접 리팩토링을 하는 시간이 많다는 것.
워밍업 클럽에서도 미션이 가장 좋았다. 직접 무언가를 하는 경험이 지금의 내게 가장 맞다고 생각되었다.
댓글을 작성해보세요.