[워밍업 클럽 2기 BE 클린코드&테스트] 발자국 1주차 회고
인프런 1주차가 끝났다.
강의 수강과 과제를 제때제 하지 못해서 100% 얻어 가지 못하는 것 같아 속상하지만..!
2주차는 1주차 보다 더 열심히 해보고자 한다! (더 이해하고, 기록하고, 나만의 언어로 설명하기)
강의를 들으며 기억에 남았던 부분을 정리하며 마무리해보려고 한다.
추상 (抽象)
도메인 용어 정리의 필요성
새 프로젝트를 시작하기 이전에 팀원들과 코드컨벤션을 정해본 경험이 있었다. 도메인 용어같은 경우에는 눈치껏 기존 프로젝트에 따라서 사용하고 있었는데 정리하고 시작한다면 모두에게 도움이 될것 같다.
메서드 선언부
메서드 시그니처 : 메서드명 + 파라미터
파라미터의 타입, 개수, 순서를 통해 의미를 전달할 수 있다는 점을 기억하자.
추상화 레벨
하나의 세계 안에서는, 추상화 레벨이 동등해야 한다.
"서점의 책들 사이에 책 제목이 없는 문서 뭉치가 껴있다". 라는 강사님의 비유가 인상적 이였다.
추상화 레벨이 맞지 않는다면 읽는 사람은 고민을 하게 될 것이다.
논리, 사고의 흐름
Early return
void일 경우에는 early return 할 생각을 못하고 있었는데 코드를 이해하기에 return 이 있는 편이 좋겠다.
Optional을 해소하는 방법
분기문을 만드는 isPresent()-get() 대신 풍부한 api를 사용하자.
orElseGet(), orElseThrow(), ifPresent(), ifPresentOrElse()
객체 지향 패러다임
객체를 만드는 처음부터 getter, setter을 만들지 말아라.
SOLID
SRP 단일책임원칙 : 이 객체가 하나의 책임만을 가지고 있는지 질문을 던져야 한다.
OCP: 확장에는 열려있고, 수정에는 닫혀있다. =>
새로운 기능 또는 요구사항이 생겼을때 기존 코드가 과도하게 변경 된다면 OCP 를 지키지 못한것이다.
LSP :상속 구조에서, 부모 클래스의 인스턴스를 자식 클래스의 인스턴스로 치환할 수 있어야 한다.
ISP : 자신이 사용하지 않는 인터페이스에 의존하면 안된다.
=> 인터페이스를 잘게 쪼개라!
DIP : 의존성 역전 원칙
어려운 이론이지만 코드를 통해서 설명해 주셔서 이해하기 편했다.
++ 더 듣고 추가 예정
이번 강의를 들으면서 내가 작성했던 코드를 어떻게 더 읽기 좋은 코드로 만들어어야 할지 알게 되었고, 동료들이 작성했던 코드도 더 이해 할수 있게 되었다.
2주차도 화이팅!
강의 : Readable Code: 읽기 좋은 코드를 작성하는 사고법 (박우빈)
댓글을 작성해보세요.