====== Code Conventions for the Java Programming Language ======
* description : 2 - File Names
* author : 오션
* email : shlim@repia.com
* lastupdate : 2022-04-13
====== 자바 프로그래밍 언어를 위한 코드 규약 ======
===== 3. 파일 구조 =====
파일은 빈 줄(blank lines)로 구분되어야 하는 섹션과 각각의 섹션을 식별하는 선택적인 주석으로 구성됩니다.\\
\\
2000 라인 보다 더 긴 파일은 번거롭기 때문에 피해야 합니다.\\
\\
올바른 형식의 Java 프로그램 예제는 "[[https://www.oracle.com/java/technologies/javase/codeconventions-codeexamples.html|Java 소스 파일 예제]]"를 참조하세요.\\
===== 3.1 Java 소스 파일 =====
각각의 Java 소스 파일에는 하나의 public 클래스 또는 interface가 포함됩니다. private 클래스 및 interface가 public 클래스와 연결되면, public 클래스와 동일한 소스 파일에 private 클래스 및 interface를 넣을 수 있습니다.\\
\\
Java 소스 파일은 순서는 아래와 같습니다.\\
\\
* 시작 주석 (Beginning comments)
* Package 와 import 선언문
* 클래스와 interface 선언
===== 3.1.1 시작 주석 (Beginning Comments) =====
모든 소스 파일은 클래스 이름, 버전 정보, 날짜 및 저작권 게시를 나열하는 c-스타일 주석으로 시작해야 햡니다.\\
\\
/*
* Classname
*
* Version information
*
* Date
*
* Copyright notice
*/
\\
===== 3.1.2 Package와 import 선언문 =====
대부분의 Java 소스 파일에서 주석이 없는 첫 번째 라인은 **''package''** 선언문입니다. 그 다음에 **''import''** 선언문이 이어질 수 있습니다. 예를 들어:\\
\\
package java.awt;
import java.awt.peer.CanvasPeer;
\\
===== 3.1.3 Class와 Interface 선언문 =====
다음 표에서는 표시되어야 하는 순서대로 class 또는 interface 선언 부분을 설명합니다. 주석이 포함된 예제는 "[[https://www.oracle.com/java/technologies/javase/codeconventions-codeexamples.html#182|Java 소스 파일 예제]]"를 참조하십시오.\\
\\
^ ^ Part of Class / Interface Declaration ^ Notes ^
| 1 | Class / Interface 문서 주석 ( ''**%%/**...*/%%**'' ) | 이 주석에 포함되어야 하는 정보들은 "[[https://www.oracle.com/java/technologies/javase/codeconventions-comments.html#16838|Documentation Comments]]"를 참조하세요. |
| 2 | **''class''** 또는 **''interface''** 선언문 | |
| 3 | 필요시, class / interface 구현 주석 ( ''**%%/*...*/%%**'' ) | 이 주석에는 class / interface 문서 주석에 적합하지 않은 class 전체 또는 interface 전체 정보를 모두 포함해야 합니다. |
| 4 | Class ( **''static''** ) 변수 | 맨 처음에 **''public''** class 변수, 그리고 **''protected''** 변수, 그 다음에 package 레벨[접근 제한자(access modifier)가 없는 경우] 변수, 그리고 **''private''** 변수 |
| 5 | Instance 변수 | 맨 처음에 **''public''** 인스턴스 변수, 그리고 **''protected''** 변수, 그 다음에 package 레벨[접근 제한자(access modifier)가 없는 경우] 변수, 그리고 **''private''** 변수 |
| 6 | Constructors | |
| 7 | Methods | 이러한 메소드는 범위(scope)나 접근성(accessibility)이 아닌 기능별로 그룹화되어야 합니다. 예를 들어, private 클래스 메소드는 2 개의 public 인스턴스 메소드 사이에 있을 수 있습니다. 목표는 코드를 더 쉽게 읽고 이해할 수 있도록 하는 것입니다. |
==== Ref ====
[[https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html|Code Conventions for the Java Programming Language 3 - File Organization]]
{{tag> 오션, Code Conventions, File Organization}}