develop/etc

udemy 클린코드 강의 정리

아르르르를를르 2022. 8. 9. 16:20

udemy에서 온라인으로 진행했던 클린코드 강의를 정리해본다. (2022.06.16)

강의자는 박재호님으로, 그 유명한 클린코드 책을 번역하신 분이다.

http://www.yes24.com/Product/Goods/11681152

 

Clean Code 클린 코드 - YES24

애자일 소프트웨어의 혁명적인 패러다임을 제시하는 책이다. 저자 로버트 마틴은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 정제

www.yes24.com

 

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++ 개발자 또는 엄청난 레거시 코드 보시는 분들에게 추천)

 

결론: 일관성이 제일 중요하다!

'develop > etc' 카테고리의 다른 글

gRPC  (0) 2022.07.21
실행계획 explain  (0) 2022.07.12
REST API  (0) 2022.07.09
[vscode] java language server requires a JDK 11+ to launch itself  (0) 2022.02.14
개발자 포트폴리오 잘 만들기  (0) 2021.11.03