public? private? 자바 메소드 정렬 순서는 어떻게 해야 할까?

sojukang·2022년 2월 15일
3

한 클래스 내에서 메소드를 어떻게 정렬할까?

레벨1의 자동차 경주 미션의 피드백에서 코니가 달아주신 질문이다.

지금 메서드 배치 순서가 default → private 순인 것으로 보이는데, 이렇게 배치했을 때 어떤 장점을 느끼셨을까요?

처음에는 넓은 scope 순서로 배치하여 위쪽에 다른 클래스에서 사용하는 메소드가 위치하고, 아래 쪽에 내부에서만 이용하는 메소드가 위치하는 것이 클래스 역할, 책임 파악에 좋다고 생각하여
public -> protected -> default -> private 순서로 메소드를 정렬하였다. 그런데 받은 질문을 보고 일반적인 컨벤션이나 자주 쓰이는 순서가 있을까 싶어서 찾아보았다.

기능별로 모아 논리적으로 배치하자

찾아본 결과 일반적인 컨벤션은 없었지만 다음과 같은 글들이 동의를 얻는 것으로 파악하였다.

These methods should be grouped by functionality rather than by scope or accessibility. For example, a private class method can be in between two public instance methods. The goal is to make reading and understanding the code easier.
Code Conventions for the java(Oracle)
https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html

The order you choose for the members and initializers of your class can have a great effect on learnability. However, there's no single correct recipe for how to do it; different classes may order their contents in different ways.
What is important is that each class uses some logical order, which its maintainer could explain if asked. For example, new methods are not just habitually added to the end of the class, as that would yield "chronological by date added" ordering, which is not a logical ordering.
Google Java Style Guide
https://google.github.io/styleguide/javaguide.html

즉 scope의 관점보다는 읽는 사람이 쉽도록 메소드의 기능별로 응집도있게 논리적으로 배치하는 것이 좋다고 생각하였다. public 메소드 두 개 사이에 private 메소드가 있더라도, 기능별로 논리적으로 배치되어 있다면 더 읽기 쉬운 좋은 배치라는 것이다.

profile
기계공학과 개발어린이

0개의 댓글