which is the best been declaration top or bottom in spring framework?

스프링 프레임워크를 사용하는 프로젝트에서 빈been 선언이 아래에 있는 코드를 보았다. 왜 아래에 두었을까? 팀원들과 이야기를 나눠봤고, 이런 얘기들이 나왔다. 이 내용에 대해서 반론과 함께 내 생각을 정리해본다.

  • 클래스를 처음 볼 때 빈만 나열되어있는 것이 보기 안좋다.

  • 검색 관련 코드를 보려고 SearchService 를 열었을 때 기능을 보고싶은데 불필요한 빈 선언들이 가장 먼저 보인다.

  • 내가 필요한 컴포넌트를 검색하면 바로 기능이 보여야 하는데 빈 선언문만 보인다.

  • 개발을 하다보면 많아질 수 밖에 없다. 컴포넌트에서 무엇이 중요한가? 서론이 많아지는 것이 아닌가.

  • 큰 프로젝트를 해보면 어쩔수 없이 많아진다. 서비스적으로 많아진다.

필드를 어떻게 구분할 것인가?

@Autowired → constructor inject

conventions

  • checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.DeclarationOrderCheck

  • squid:S1213

Conclusion

이러한 문제는 확고한 정답?을 내기가 어려운 것 같다. 더군다마 개인의 성향이라고 말하면 아무것도 정할 수가 없다. "이게 맞다, 이걸로 가자"가 아니라 같이 이해하고, 함께 정해진 결과로 가는게 정답인 것다. 새로운 의견이 있다면 함께 이야기하고, 반론이 나오면 다시 생각해봐야 한다. 큰 변화가 아니라도 나아지는게 있다면 변하는 것이 맞다고 혹은 다수결이라던지..