준호씨의 블로그

Java - 클린코드 10장 클래스에서 언급한 표준 자바 관례 (Standard Java Convention)의 작성 순서 확인 본문

개발이야기

Java - 클린코드 10장 클래스에서 언급한 표준 자바 관례 (Standard Java Convention)의 작성 순서 확인

준호씨 2022. 2. 13. 21:49
반응형

클린코드 "10장 클래스"의 내용에 클래스 내부 작성 순서에 대한 내용이 나옵니다. 표준 자바 관례 (Standard Java Convention)에 따라 다음과 같은 순서로 작성한다고요.

1. static public 상수
2. static private 변수
3. private instance 변수 (public 변수가 필요한 경우는 거의 없음)
4. public method - private method는 자신을 호출하는 공개 함수 직후

정말 그렇게 적혀있는지 궁금해서 표준 자바 관례 (Standard Java Convention)에는 어떻게 적혀 있는지 찾아보았습니다.

https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html#1852

변수뿐만 아니라 주석, class (또는 interface) 정의 부분에 대한 언급까지 있습니다.

1. 클래스/인터페이스 주석
2. 클래스/인터페이스 문
3. 클래스/인터페이스 구현 주석 (필요한 경우)
4. 클래스(static) 변수들 - public, protected, package-private, private 순서
5. 인스턴스 변수들 - public, protected, package-private, private 순서
6. 생성자
7. 메서드들 - scope나 접근성보다 기능 단위로 그룹핑. private 메서드가 public 메서드들 사이에 올 수 있다. 목표는 가독성이다.

클린코드 책과 대체적으로 비슷하지만 좀 다른 부분들도 있으니 참고해 두면 좋을 듯합니다.

다음은 Java Code Convention 문서에 있는 예제입니다.

예제 코드도 있고요.

/*
 * @(#)Blah.java        1.82 99/03/18
 *
 * Copyright (c) 1994-1999 Sun Microsystems, Inc.
 * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of Sun
 * Microsystems, Inc. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Sun.
 */


package java.blah;

import java.blah.blahdy.BlahBlah;

/**
 *  
        Class description goes here.
 *
 * @version      
        1.82 18 Mar 1999  * @author          
        Firstname Lastname  */
public class Blah extends SomeClass {
  
           /* A class implementation comment can go here. */ 
    /**  
        classVar1 documentation comment */
    public static int classVar1;

    /** 
  
            *  
        classVar2 documentation comment that happens to be      *  
        more than one line long      */
    private static Object classVar2;

    /**  
        instanceVar1 documentation comment */
    public Object instanceVar1;

    /**  
        instanceVar2 documentation comment */
    protected int instanceVar2;

    /**  
        instanceVar3 documentation comment */
    private Object[] instanceVar3;

    /** 
     * ...
        constructor Blah documentation comment...      */
    public Blah() {
  
              // ...implementation goes here...     }

    /**
     * ...
        method doSomething documentation comment...      */
    public void doSomething() {
  
               // ...implementation goes here...      }

    /**
     * ...method doSomethingElse  
        documentation comment...      * @param someParam  
        description      */
    public void doSomethingElse(Object someParam) {
  
               // ...implementation goes here...      }
}

주석이 좀 과하게 들어있는 느낌도 있지만 주석을 제외하면 요즘 작성하는 코드와 별반 다르지 않습니다. 대체적으로 개발자들이 알게 모르게 Java Code Convention 기준으로 작업을 하고 있나 봅니다.

 

반응형
Comments