since 2020.12.23
코딩의 마법사가 되고 싶다!
블로그
전체 32025. 03. 09.
0
[인프런 워밍업 클럽 스터디 3기] 1주차 발자국
이 포스트는 [인프런 워밍업 클럽 스터디 3기](https://www.inflearn.com/course/offline/warmup-club-3-be-code)에 참여한 후, [Readable Code: 읽기 좋은 코드를 작성하는 사고법](https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95)를 수강한 후 작성된 포스트입니다. 후기이번 주는 '읽기 좋은 코드'에 초점을 맞춰 추상과 리팩토링을 효과적으로 하는 법, SOLID 원칙에 대해 공부할 수 있었다.강의를 듣고 난 후, 추상이라는 개념에 대해 애매모호하게 알고 있던 점을 정리할 수 있었다. 또, 코드를 작성할 때 SOLID 원칙을 어떻게 적용할 수 있는지에 대해 공부할 수 있었다. 하지만 가장 도움이 되었던 내용은 리팩토링을 할 때 고려해야 하는 체크포인트들을 배운 일이었다. 흔히 리팩토링한다고 해도 어디서부터 어떻게 시작해야 할지를 고민하는 경우가 많았는데, 이번 주에 수강한 강의를 통해 알 수 있었고, Day 4 미션을 할 때도 이 부분을 적용해 보려고 노력했다.앞으로 사이드 프로젝트를 할 때, 아니면 실무에서 리팩토링을 할 수 있는 기회가 생긴다면 배운 내용을 적극적으로 활용할 것 이다!
백엔드
・
백엔드
・
후기
2025. 03. 07.
0
[인프런 워밍업 클럽 스터디 3기] Day 4 미션
이 포스트는 [인프런 워밍업 클럽 스터디 3기](https://www.inflearn.com/course/offline/warmup-club-3-be-code)에 참여한 후, [Readable Code: 읽기 좋은 코드를 작성하는 사고법](https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95)를 수강한 후 작성된 포스트입니다. Day 4 미션 주어진 코드와 설명을 보고, [섹션 3. 논리, 사고의 흐름]에서 이야기하는 내용을 중심으로 읽기 좋은 코드로 리팩토링 해봅시다.public static final String NO_ORDER_ITEM_EXISTS = "주문 항목이 존재하지 않습니다."; public static final String INVALID_TOTAL_PRICE = "주문한 가격의 총합이 올바르지 않습니다."; public static final String NO_USER_INFO_EXISTS = "사용자 정보가 존재하지 않습니다."; public static boolean isValidTotalPrice(int price) { return price > 0; } public boolean validateOrder(Order order) { if (order.getItems().isEmpty()) { // size() == 0 -> 의미가 같은 isEmpty()로 교체 log.info(NO_ORDER_ITEM_EXISTS); return false; } if (isValidTotalPrice(order.getTotalPrice()) == false) { log.info(INVALID_TOTAL_PRICE); return false; } if (order.hasNoCustomerInfo()) { log.info(NO_USER_INFO_EXISTS); return false; } return true; } SOLID에 대하여 자기만의 언어로 정리해 봅시다.SRP (단일 책임 원칙)식당 안에는 요리사와 종업원이 있다. 요리사는 요리에만 집중하면 되고, 종업원은 음식을 나르는 일에 집중하면 된다. 이렇게 하나의 클래스는 하나의 일에만 집중할 수 있게 설계하는 것을 의미한다.OCP (개방 - 폐쇄 원칙)기존에 개발한 로봇이 물건을 나르는 기능만 있고, 새로 창문을 닦는 기능이 추가된다고 할 때, 창문을 닦을 수 있는 기능이 로봇에 추가됨에도 물건을 나르는 기능을 그대로 있어야 한다. 즉, 클래스는 확장이 자유로워야 하지만 동시에 기존의 내용을 변경하면 안된다.LSP (리스코프 치환 원칙)자동차라는 클래스가 있고, 이 클래스를 상속 받은 전기차라는 클래스가 있다고 가정한다. 이때, 자동차에 운전한다는 뜻의 drive라는 메서드가 존재한다고 한다면, 전기차는 자동차와는 다른 클래스지만 자동차라는 클래스와 똑같이 '운전'할 수 있는 기능이 있어야 한다.ISP (인터페이스 분리 원칙)헬스장에는 트레이너와 회원이 존재한다. 둘 모두 기구를 이용해 운동할 수 있기 때문에 이 기능을 하는 메서드는 별도의 인터페이스에 선언한다. 반면, 회원권을 관리하고 회원을 지도하는 기능을 하는 메서드는 트레이너 클래스에만 존재해야 한다. 따라서 이 두 메서드는 인터페이스에 존재하면 안된다. 이렇게 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하면 안되게 하여 불필요한 메서드 구현을 하지 않게 하는 것을 의미하는 설계 원칙이다.DIP (의존 역전 원칙)피자를 자를 때 피자 커터에만 의존하지 않고, 칼 같이 자를 수 있는 기능이 있는 다른 기구도 이용할 수 있어야 한다. 즉, 고수준 모듈에 대한 저수준 모듈의 의존성을 줄이는 것을 의미한다.
백엔드
・
백엔드
2025. 03. 05.
0
[인프런 워밍업 클럽 스터디 3기] Day 2 미션
이 포스트는 [인프런 워밍업 클럽 스터디 3기](https://www.inflearn.com/course/offline/warmup-club-3-be-code)에 참여한 후, [Readable Code: 읽기 좋은 코드를 작성하는 사고법](https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95)를 수강한 후 작성된 포스트입니다. Day 2 미션추상스타벅스 사이렌 오더로 커피를 주문하고, 테이크아웃한다. 구체스타벅스 어플을 킨다.Order 버튼을 누른다.주문할 매장을 고른다.주문할 메뉴를 고른다.사이즈와 옵션을 고른다.결제할 수단을 고른다.Pay로 결제할 경우, 결제 비밀번호를 입력한다.사용할 쿠폰을 선택한다.결제 버튼을 누른다.결제한 후 화면에 뜨는 주문번호를 확인한다.화면에 주문번호가 뜨거나 준비완료 알림이 뜨면, 주문한 음료를 가져 나온다.
백엔드