블로그
전체 2#카테고리
- 백엔드
2025. 03. 07.
0
[인프런 워밍업 클럽 3기 BE 클린코드 & 테스트] - Day 4 미션 제출
1. 아래 코드와 설명을 보고, [섹션 3. 논리, 사고의 흐름]에서 이야기하는 내용을 중심으로 읽기 좋은 코드로 리팩토링해 봅시다.원본public boolean validateOrder(Order order) { if (order.getItems().size() == 0) { log.info("주문 항목이 없습니다."); return false; } else { if (order.getTotalPrice() > 0) { if (!order.hasCustomerInfo()) { log.info("사용자 정보가 없습니다."); return false; } else { return true; } } else if (!(order.getTotalPrice() > 0)) { log.info("올바르지 않은 총 가격입니다."); return false; } } return true;}리팩토링public boolean validateOrder(Order order) { if (order.getItems().isEmpty()) { log.info("주문 항목이 없습니다."); return false; } if (order.getTotalPrice() log.info("올바르지 않은 총 가격입니다."); return false; } if (!order.hasCustomerInfo()) { log.info("사용자 정보가 없습니다."); return false; } return true;} 2. SOLID에 대하여 자기만의 언어로 정리해 봅시다.1) 단일 책임 원칙 (SRP: Single Responsibility Principle)클래스는 하나의 책임만 가져야 한다.변경이 필요한 이유가 하나뿐이어야 한다.기능을 분리하여 유지보수를 쉽게 만든다.2) 개방-폐쇄 원칙 (OCP: Open/Closed Principle)확장에는 열려 있고, 수정에는 닫혀 있어야 한다.기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있도록 설계한다.다형성을 활용하여 유연하게 설계한다.3) 리스코프 치환 원칙 (LSP: Liskov Substitution Principle)자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.상속을 사용할 때 부모 클래스의 기능을 변경하지 않도록 한다.다형성을 해치지 않고 일관성을 유지한다.4) 인터페이스 분리 원칙 (ISP: Interface Segregation Principle)클라이언트가 사용하지 않는 인터페이스에 의존하지 않도록 한다.하나의 큰 인터페이스보다는 여러 개의 작은 인터페이스로 분리한다.불필요한 기능을 강제하지 않도록 한다.4) 의존 역전 원칙 (DIP: Dependency Inversion Principle)상위 모듈이 하위 모듈에 의존해서는 안 된다.추상화(인터페이스, 추상 클래스)에 의존해야 한다.구체적인 클래스가 아닌 인터페이스를 활용하여 유연성을 높인다.
백엔드
2025. 03. 07.
0
[인프런 워밍업 클럽 3기 BE 클린코드 & 테스트] - Day 2 미션 제출
"추상과 구체" 강의를 듣고, 생각나는 추상과 구체의 예시가 있다면 한번 3~5문장 정도로 적어봅시다.‘프로그래밍 문제 해결 과정’을 구체 레벨에서 표현한다면?사용자가 문제를 해결하기 위해 논리적으로 사고하면, 해결 방법을 단계적으로 정리한다.프로그래머는 주어진 문제를 해결하기 위해 요구 사항을 분석하고, 적절한 알고리즘을 설계한 후 프로그래밍 언어를 사용해 이를 코드로 구현한다.작성된 코드는 컴파일 또는 인터프리터를 통해 기계어로 변환되며, 컴퓨터는 이를 실행하여 원하는 결과를 도출한다.
백엔드