개인적으로 코딩을 하면서 문제발생을 야기했거나, 가독성을 해치는 코드를 만들었던 케이스들을 정리하고 지킬수 있도록 합니다.
[한번쯤 생각해 볼만한 Coding Convention]
- AOP나 intercep등 횡단 관심사의 공통 처리 로직의 경우 최대한 가볍게 만든다.
- 다수의 query문이나 복잡도가 높은 로직을 실행할 경우 이슈가 발생할 소지가 높다. (게다가 이후에 성능문제가 발생했을때 찾기도 어렵다)
- switch~case나 try~catch 문등의 묶음 단위로 처리되는 구문안에 들어가는 행을 짧게 만든다.
- 로직이 길어질경우 break;를 누락하거나 return;문을 누락하는 경우가 매우 많다.한눈에 들어오도록 만들수 있도록 한다. (private나 적절하게 기능을 다른 class에 위임하도록)
- Controller -> Service -> Repository의 레벨은 될 수 있으면 지키자.
- 내가 만든 Service의 경우 (예를들면 MemberService)에 개념적으로 다른 부분의 영역을 호출할 경우 (예를들어 Profile)에는 Repository를 직접 가져다 쓰기 보다는 Service를 가져다 사용하도록 한다.
- CheckedException과 RuntimeException을 잘 구분해서 사용한다.
- 호출하는 쪽에서 복구처리가 필요하거나 반드시 재처리 해줘야 하는 경우에만 CheckedException을 사용한다. (CheckedException은 남용하지 않는다.)
- 기본제공되는 Exception을 잘 활용한다. (IllegalArgumentException등..)
- 다중 if문, 다중 for문은 지양한다.
- 다중 if문은 가독성을 낮추고(code complexity를 높인다), 다중 for문은 성능에 영향을 미칠 가능성이 높다. (기본적인 Collection 자료구조를 잘 활용하면 이중 for문은 거의 사용하지 않을 수 있다.)
- private안에 private메소드는 될 수 있으면 지양한다.
- 어느 depth 까지 허용할지는 팀내 합의가 필요한 부분이기도 하다.
- 남발하면 코드의 가독성이 떨어진다.
- 2depth까지 필요한 private 메소드의 경우엔 어쩌면 새로운 클래스가 필요하다는 신호일지도 모른다.
댓글
댓글 쓰기