JAVA

Java 프로그래밍 언어의 코드 규칙, java 표준 코딩

출처 : https://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html

2. 파일 이름 확장자  .java : 자바소스, .class : 클래스 소스 
일반적사용 파일이름 GNUmakefile , README
3. 파일구성 파일 구성 0. 2000줄 보다 긴 파일은 피할것.  Java Source File Example 참고. 
1. 각 Java 소스 파일에는 단일 공용 클래스, 인터페이스 포함,  공개 클래스는 파일의 첫 번째 클래스 또는 인터페이스. 
Java 소스 파일 의 순서. 
- 주석시작(Beginning Comments)
- 패키지 및 가져오기 문(Package and Import statements)
- 클래스 및 인터페이스 선언(Class and Interface Declaration)
1. 주석시작
: Beginning Comments
모든 소스파일은 c-style 주석으로 시작하고, 클래스이름, 버전, 날짜, copyright 작성
/*
* Classname
* Version information
* Date
* Copyright notice
*/
주석  출처 : https://en.cppreference.com/w/c/comment

C-style      : /* C-style*/
C++-style :  // C++-style
2. package, import 주석이 없는 첫번째 라인
package java.aws;
import java.awt.peer.CanvasPeer;
3. Class, Interface 선언 1. doc 작성은 /**  */
2. class or interface  문구작성
3. class or interface  구현 주석은 /* */
4. class (static) 변수 작성   : 작성순서 : public > protected >(default) > private
5. 인스턴스변수( Instance variables) :
                                     작성순서 :  public > protected >(default) > private
6. 생성자
7. 메소드 : 범위 접근성이 아닌, 기능별 그룹화(개인클래스 매서드는 두개의 공용 인스턴스 메서드 사이에 있을수 있음)
8. 
4. 들여쓰기(Indentation)   4개의 공백을 들여쓰기 단위로 사용, 정확한 구성(space vs tabs)은 지정되지 않음, 탭은 8칸마다 설정
1. 라인 길이  터미널에서 80자 보다 긴 줄은 잘 처리 되지않음으로 피하세요.
document 사용시 70자를 넘기지 않게 작성
2. 줄바꿈 표현식이 한 줄에 맞지 않으면 다음 일반원칙을 따름. 
1. 쉼표(,) 뒤에 엔터
      ~~~(String a,
             String b)
2. 높은레벨과 낮은 레벨에서 줄바꿈이 필요하면 높은레벨에서 줄바꿈
var = method1( a ,
                    method2(c,
                                d));
3. 연산자(operator) 앞에서 줄바꿈
4. 같은 레벨의 새로운 시작은 이전줄의 같은 레벨에서 줄바꿈
      sum = a +~~~ + q
               +r+~ ;
      sum = a +~~~ + q
                        +r+~ ;     // 피할 것.         
5. 위의 규칙으로 코드가 혼란스럽거나 오른쪽 여백에 대해 눌러진 코드가 발생하면 대신 8칸 들여쓰기 하세요.  
public static synchronized longNameMehhodNameLongLong(int a,
         int bLongNamelonglonglonglong, int cLongNamelonglonglonglong,
         int d)
6. 8 칸 들여쓰기 규칙이 보통쓰이지만 내용을 인식하기 어려운경우 4칸을  더 들여쓰세요. 
if ( ( alongLongLongLong  && blongLongLongLong)
           || ( clongLongLongLong  && dlongLongLongLong)
           || ( elongLongLongLong  && flongLongLongLong)
   ) {
      contentDo();
}

if ( ( alongLongLongLong  && blongLongLongLong) || ( clongLongLongLong  && dlongLongLongLong)
           || ( elongLongLongLong  && flongLongLongLong)
   ) {
      contentDo();
}

// 아래 피할것. 
if ( ( alongLongLongLong  && blongLongLongLong)
       || ( clongLongLongLong  && dlongLongLongLong)
       || ( elongLongLongLong  && flongLongLongLong)
   ) {
      contentDo();
}

7. 3항연산자(ternary expressions) 정렬
a = (aLongLongLong) ? b : c;
a = (aLongLongLong) ? b
                             : c;
a = (aLongLongLong)
      ? b
      : c;
 
5. 주석(Comments)   /*...*/ 
: 구현주석(implementation comments)
: C++ 에서 볼수있는주석. 
: 코드 주석처리, 특정 구현에 대한 주석을 작성하기 위함
/**...*/
: 문서주석(documentation comments)
:  java 전용, javadoc 도구를 사용하여 HTML 파일로 추출가능

1. 주석은 코드의 개요를 제공하고, 코드 자체에서 쉽게 사용할 수 없는 추가 정보를 제공하는데 사용해야 합니다. 
2. 설명에는 프로그램을 읽고 이해하는 데 관련된 정보만 포함되야 합니다. 
(해당 패키지가 어떻게 빌드되었는지, 어떤디렉토리에 있는지에 대한 정보 주석포함 안됨. )
3. 애매한코드(nontrivial or nonobvious) 에대한 주석은 적절하지만, 명확한 코드에는 작성하지 않습니다. ( 중복된 내용 발생)
4. 주석을 추가해야 하는경우 코드를 다시 작성해서 명확하게 하는것이 좋습니다. 
5. 주석에 특수문자 백스페이스, 들여쓰기 줄바꿈(form-feed) 사용하지 말것 ex)\f, \b
6. 주석을 별표나 문자로 되어 있는 넓은 범위에 코드에 사용하지 말것
(해석 불분명 : Comments should not be enclosed in large boxes drawn with asterisks or other characters.)
Carriage return
Line feed
Form feed

 출처 : https://stackoverflow.com/questions/3091524/what-are-carriage-return-linefeed-and-form-feed
https://ko.wikipedia.org/wiki/%EC%BA%90%EB%A6%AC%EC%A7%80_%EB%A6%AC%ED%84%B4

carriage return (= Return= CR = 0x0D) : 커서를 현재 줄의 맨 처음으로 보냄
$) note\rbook
note
book


Line feed (= New line = LF = 0x0A): 줄을 옮김  
$) note\nbook
note
book

Form feed (= FF = 0x0C) : 들여쓰기 줄바꿈
$) note\fbook
note
      book
https://itng.tistory.com/25

스페이스바 띄워쓰기 

백스페이스 바 
1. 구현 주석 형식 블록(block)
한줄(single-line)
후행(trailing)
줄끝(end-of-line)
1.1. 블록주석 파일, 메서드, 데이터 구조 및 알고리즘에 대한 설명제공
함수, 메서드 내부 블록 주석은 설명하는 코드와 동일한 수준 들여쓰기 사용
블록 주석은 코드의 나머지 부분과 구분하기 위해 공백 행이 앞에와야함
/*
 * block comment
 */
들여쓰기(indent) indent (-)가 형식을 재구성 할수없는 블록 주석으로 인식하게 한다. 
/*-
 * block comment
 */
1.2 한줄주석 한줄 주석은 다음 라인에 오는 소스만큼 들여쓰기 작성
만약 주석을 한줄로 쓸수없다면 블록주석포멧으로 작성.
한줄 주석 앞에는 공백이 있어야 합니다. 
    /* 주석 */
    public ....
1.3 후행(Trailing) 주석 매우 짧은주석으로, 코드와 분리 되어 있을수 있도록 멀리이동
둘이상 짧은 주석이 있으면 도일한 탭으로 들여쓰기 

if (a==1){
    return true;         /* 주석1*/
} else {
    return false;        /* 주석2*/
}
1.4 줄끝(End-of-line)주석 "//" 구분자 는 전체행, 또는 일부행만 주석처리 가능
연속된 여러줄에 사용하면안됩니다. 
그러나 코드를 주석처리할때는 사용할수있습니다. 

한줄주석처럼, 후행주석처럼, 코드만 연속된줄에 사용가능. 


2. 문서 주석 https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html 이위치에 더자세한 설명
java class, interfaces, constructors, method, field 에 사용

/**...*/  인터페이스, 클래스, 멤버당 하나의 주석 존재, 선언직전 사용. 

/**
 * 문서주석
 */
public class Example {

- 클래스, 인터페이스
최상위 클래스와 인터페이스는 들여쓰기가 되어 있지 않지만, 그 구성원은 들여쓰기. 
첫번째 줄은 들여쓰지 않고 후행 1칸씩 들여쓰기. (별표 세로정렬위해)

- 생성자를 포함한 구성원. 
첫번째 문서 줄에 4개의 공백, 그후 5개의 공백

문서화에 적합하지 않은 클래스, 인터페이스, 변수 또는 메서드에 대한 정보를 제공해야 하는 경우 바로 뒤에 구현블록 주석 혹은 한줄블록 주석
예를들어 클래스 구현에 대한 세부정보는 클래스 문 다음의 구현블록 주석에 들어가야
Java 는 문서 주석을 주석 뒤의 첫 번째 선언과 연관시키기 때문에 문서 주석은 메소드 또는 생성자 정의 블록 내부에서 위치해서는 안됩니다. 
6 선언(Declarations) 1. 줄당 숫자 줄당 하나의 선언을 추천합니다.  
주석을 권장 하기위해 
int aLevel; // 주석1
int bLevel; // 주석2

int aLevel, bLevel;  이것보다 줄당 하나의 선언 추천.  같은타입만 사용. 
  2. 초기화 선언된 지역 변수를 초기화할것.
초기화 하지 않는 유일한 이유는 초기 값이 먼저 발생하는 계산에 의존하는경우
  3. 위치(Placement)  
     

Conventions 규약

'JAVA' 카테고리의 다른 글

카페24 jsp 호스팅  (0) 2022.07.26
[1028web JSTL ]커스텀 라이브러리  (0) 2022.03.19
VelocityEngine  (0) 2022.02.19
[1028web annotation] 어노테이션  (0) 2021.08.29