블로그
전체 32024. 10. 13.
0
[워밍업 클럽 스터디 2기 - 백엔드 클린 코드 & 테스트 코드] 2주차 발자국
강의회사일과 병행하는 것이 쉽지 않아서, 저번 주에 많이 진도를 나갔다.강의에서 한 번 소개되었던 '파이브 라인스 오브 코드' 도서를 구매해서 출퇴근에 보고 있다.책에서는 enum을 모두 클래스로 변경하던데, type이 하나 추가 되었을 때, 다 대응이 가능한 지 감이 오지 않는다.새로운 도메인을 발견하여 해당 도메인으로 책임을 부여한다도메인을 발견한다는 것이 쉽지 않다. 실무에서는 그냥 당장 쉬운 방법을 택하게 될 것 같다미션 '리팩토링 연습' 강의 듣기 전 그 전 강의들에서 나온 것들은 적용하려고 했지만 쉽지 않았다다형성을 적용하기 위해 클래스를 다 만들어놨는데, 정작 필요 없어지기도 하였다라이브다양한 코드들을 봐서 좋았고, 좋은 얘기들을 많이 들어서 좋았다특히, 실무에서는 시간이라는 요소가 크게 작용한다는 부분에 많이 공감이 갔다지금 당장 리팩토링을 하지 못하더라도, 나중에 리팩토링을 진행할 수 있도록 미리 장치를 만들어 놓는 게 좋다는 얘기를 듣고 생각을 많이 하게 되었다
2024. 10. 06.
0
[워밍업 클럽 스터디 2기 - 백엔드 클린 코드 & 테스트 코드] 1주차 발자국
회고나름 열심히 했다 진도를 좀 많이 나갔다강의를 볼수록 다음 강의를 빨리 보고싶어진다enum 클래스가 interface를 구현할 수 있다는 것을 이제서야 알았다. 부끄럽다inline variables, method(cmd + opt + N), introduce variables(cmd + opt + V), introduce const(cmd + opt + C)잘 사용해보지 않았던 intellij 단축키들을 사용하시는 걸 보고 손에 익히고 있다 inflearn에 질문도 남기고 답변도 받았는데, 답변을 통해서 새로운 인사이트를 얻을 수 있었다.SOLID에 대해 좀 더 친숙해졌다 intellij ideavim의 plugin multi-cursors를 사용하게 되었다
2024. 10. 03.
0
인프런 워밍업 클럽 스터디 2기 백엔드 클린 코드, 테스트 코드 - Day4 미션
아래 코드와 설명을 보고, [섹션 3. 논리, 사고의 흐름]에서 이야기하는 내용을 중심으로 읽기 좋은 코드로 리팩토링[before]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; } [after]public boolean validateOrder(Order order) { if (order.isItemCountEqualTo(0)) { log.info("주문 항목이 없습니다."); return false; } if (order.isTotalPriceLessThanOrEqualTo(0)) { log.info("올바르지 않은 총 가격입니다."); return false; } if (order.hasCustomerInfo()) { return true; } return false; } SOLID에 대하여 자기만의 언어로 정리해 봅시다.SRP하나의 클래스는 변경의 이유가 하나여야 한다.변경의 파급력이 작아야 한다.OCP수정에는 닫혀 있고, 확장에는 열려 있다.새로운 기능을 추가할 때, 기존 코드의 수정이 최소화되어야 한다. LSP부모 인스턴스가 사용되는 위치에 자식 인스턴스가 와도 의도대로 동작해야 한다.자식 클래스는 선행 조건이 더 까다로우면 안 된다.기존 부모 인스턴스에서는 사전 과정에서 유효했던 것들이 자식 인스턴스에서는 유효하지 않게 될 수 있어, 자식 인스턴스가 왔을 때 의도와 다르게 동작할 수 있다.자식 클래스는 후행 조건이 느슨해선 안 된다.기존 부모 인스턴스에서는 사후 과정에서 통과되었던 범위보다 자식 인스턴스에서 더 큰 범위가 통과되면 클라이언트 입장에서 대응이 어렵다.ISP클래스 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.인터페이스를 잘게 쪼개는 것이 좋다DIP상위 모듈과 하위 모듈은 추상화(인터페이스)에 의존해야 한다.상위 모듈은 하나의 기능이라고 보면, 하위 모듈은