develop/etc
udemy 클린코드 강의 정리
아르르르를를르
2022. 8. 9. 16:20
udemy에서 온라인으로 진행했던 클린코드 강의를 정리해본다. (2022.06.16)
강의자는 박재호님으로, 그 유명한 클린코드 책을 번역하신 분이다.
http://www.yes24.com/Product/Goods/11681152
commit message
동사로 시작해야 함
SRP (Single Responsibility Principle)
글로벌시대에 맞게 되도록이면 영어로 작성
주석
TODO:, XXX:, FIXME: 적극 사용하기
한 행에 대한 주석은 짧은 건 오른쪽에
함수, 클래스에 대한 주석은 위에 적기
@PreAuthorize: spring에서 권한제어에 사용 (참고: https://roytuts.com/preauthorize-annotation-haspermission-example-in-spring-security/)
객체지향
함부로 메소드 추가하지 말 것
다형성 명심
인터페이스
리펙토링
유지보수성, 가독성 관점에서 리펙토링 하면 된다!
내가 주니어라면, “가설, 얻고자 하는바, 실제 결과” 가지고 가서 코드리뷰 요청하기
리펙토링 이슈 따로 등록해서 하는지, 아니면 그 부분 수정할때 겸사겸사 하는지
- 이슈 따로 등록해서 해야한다!
- 주의: 밖으로 드러나는 동작은 바뀌지 않는다!
- 커밋1개: 논리적인 작은 단위, 작업 단위
- 하는 행위가 다르면 다른 커밋으로 올려야 한다.
- DRY(Do not Repeat Yourself), SRP: 가장 중요한 2가지
- 시간 vs 코드품질: 동작하는 코드 우선, 완성 버전이 아니라는 인식
- 성능 vs 가독성: 콜 오버헤드.. 예시로 rust를 들 수 있다. 요즘 컴파일러 뛰어나다, 컴퓨터 성능도 충분히 뛰어나다, 차라리 알고리즘을 개선하도록 하자.
리팩토링 시점 타이밍: 본인 판단에 달려있지만 굳이 수치화 해본다면
- DRY 위반 3회 이상
- 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기
함수형 프로그래밍
side effect 일어나는 거 분리하고,
Thread나 병행 코드 두기
그 밖에
- RESTApi는 http method를 사용하여 구현해야 한다.
- 오류 메세지로 기능을 알 수 있는건 굳이 주석으로 중복하여 또 쓰지 말자.
- readUserById에서 굳이 byId 이런게 필요한가?? 파라미터로 들어가는데? → 빼자, 아니면 아예 일관성 지키기
- 코드부 주석처리는 금물: 잠깐 뺀건지, 아예 필요 없는 건지, 만들다 만건지 알수가 없다.
- 상수는 대문자로 하자.
- 주석과 코드 내용은 항상 일치해야 한다.
- 머신러닝 파라미터 같은거는 왜 그 값을 했는지 논문같은거 달아두면 좋다.
- 3항연산자
? : ;
이런거는 되도록이면 사용하지 말 것, nullCheck 이런 단순한 거 아니면 가독성이 떨어진다.
+ 추천책: 레거시 코드 활용 전략 - 마이클 페더스 요거 (C++ 개발자 또는 엄청난 레거시 코드 보시는 분들에게 추천)