네이밍 스타일
1. [필수] 코드의 이름은 밑줄이나 달러 기호로 시작할 수 없고 밑줄이나 달러 기호로 끝날 수 없습니다.
카운터 예시: _name / __name / $name / name_ / name$ / name__
2. [필수] 코드 내 네이밍에 병음과 영어를 혼합하여 사용하는 것은 엄격히 금지되어 있으며, 이는 허용되지 않습니다. 중국어를 직접 사용합니다.
지침: 정확한 영어 철자와 문법을 사용하면 독자가 쉽게 이해하고 모호함을 피할 수 있습니다. 순수 병음 이름 지정은 피해야 합니다.
올바른 예: renminbi / alibaba / taobao / youku / hangzhou 및 기타 국제적으로 통용되는 이름은 영어와 동일하게 간주할 수 있습니다.
카운터 예시: DaZhePromotion [Discount] / getPingfenByName() [Rating] / int 특정 변수 = 3
3, [Mandatory] 클래스 이름은 UpperCamelCase 스타일을 사용하지만 다음 예외가 적용됩니다. DO / BO / DTO/VO/AO/PO/UID 등
긍정적인 예: JavaServerlessPlatform / UserDO / lowerCamelCase 스타일, 카멜 표기법을 따라야 합니다.
긍정적 예: localValue / getHttpMessage() / inputUserId
5. [필수] 상수 이름은 모두 대문자여야 하며 단어는 밑줄로 구분되어야 하며 완전하고 명확한 의미를 표현하도록 노력해야 합니다. 이름이 너무 긴 것 같아요.
긍정적 예: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
카운터 예: MAX_COUNT / EXPIRED_TIME6. [
Mandatory] 추상 클래스 이름은 Abstract 또는 Base로 시작합니다. 테스트 클래스 이름은 다음을 기반으로 합니다. 테스트할 클래스입니다. 이름으로 시작하고 Test로 끝납니다.
7. [
mandatory] 유형은 대괄호로 밀접하게 연결되어 배열을 나타냅니다. 긍정적 예: 정수 배열 정의 int[] arrayDemo;
Counter 예: 기본 매개변수에서 String args[]를 사용하여 정의합니다. 8. [
필수] POJO 클래스의 부울 유형 변수에 is 접두사를 추가하지 마십시오. 그렇지 않으면 일부 프레임워크 구문 분석으로 인해 직렬화 오류가 발생합니다.
참고: 이 글의 MySQL 사양 첫 번째 테이블 생성 계약에서 yes 또는 no를 표현하는 값은 is_xxx라는 명명 방법을 사용하므로 is_xxx에서 xxx까지의 매핑 관계를
Counter 예: 기본 데이터 유형 Boolean isDeleted로 정의된 속성과 해당 메소드도 isDeleted()입니다. RPC 프레임워크가 역분석을 수행할 때 해당 속성 이름이 삭제되는 "실수"가 발생하여 속성이 삭제됩니다. 획득한 후 Exception이 발생했습니다. 9. [
필수] 패키지 이름은 소문자를 사용해야 하며, 점 구분 기호 사이에는 자연스러운 의미를 지닌 영어 단어가 하나만 있어야 합니다. 패키지 이름은 항상 단수형을 사용하지만, 클래스 이름이 복수형의 의미를 갖는 경우 클래스 이름은 복수형을 사용할 수 있습니다.
긍정적인 예: 애플리케이션 도구 클래스 패키지 이름은 com.alibaba.ai.util이고 클래스 이름은 MessageUtils입니다(이 규칙은 스프링 프레임워크 구조를 참조함)
10 [Mandatory] 멤버 변수를 사이에 배치하지 마세요. 하위 및 상위 클래스 지역 변수 사이 또는 서로 다른 코드 블록의 지역 변수 사이에 정확히 동일한 이름을 사용하면 가독성이 떨어집니다.
참고: 하위 클래스와 상위 클래스의 멤버 변수 이름은 동일합니다. 동일한 메서드의 다른 코드 블록에서 동일한 이름을 가진 로컬 변수도 컴파일할 수 있지만 피해야 합니다. setter/getter가 아닌 매개변수 이름의 경우 멤버 변수 이름과 동일하지 않도록 하세요.
Counter 예: public class ConfusingName { public int age; // non-setter/getter 매개변수 이름은 이 클래스의 멤버 변수와 동일한 이름을 가질 수 없습니다. public void getData(String alibaba) { if(condition) { final int Money = 531 ; // ... } for (int i = 0; i < 10; i++) { // 동일한 메소드 본문에서 다른 코드 블록의 Money와 동일한 이름은 허용되지 않습니다. final int Money = 615; // .. } } } class Son extends ConfusingName { // 상위 클래스의 멤버 변수와 동일한 이름은 허용되지 않습니다. public int age }
Mandatory1. - 의미 없는 의미를 피하기 위해 표준 약어를 사용합니다.
카운터 예: AbstractClass의 "약어"는 AbsClass로 명명되고, 조건의 "약어"는 condi로 명명됩니다.
12. [
권장] 코드의 자체 설명 목표를 달성하려면 사용자 정의 프로그래밍 요소의 이름을 지정할 때 가능한 한 완전한 단어 조합을 사용하여 의미를 표현하세요. 긍정적인 예: JDK에서 원자 업데이트를 표현하는 클래스 이름은 AtomicReferenceFieldUpdater입니다.
반대 예: int a의 임의 이름 지정.
13. [추천] 상수, 변수의 이름을 지을 때, 종류를 나타내는 명사를 단어 끝에 넣어서 인지도를 높이세요.
긍정적 예: startTime/workQueue/nameList/TERMINATED_THREAD_COUNT
카운터 예: startAt/QueueOfWork/listName/COUNT_TERMINATED_THREAD
14. [추천] 모듈, 인터페이스, 클래스, 메소드 등이 디자인 패턴을 사용하는 경우 해당 패턴을 네이밍에 반영해야 합니다.
참고: 디자인 패턴을 이름에 반영하면 독자들이 건축 디자인 컨셉을 빠르게 이해하는 데 도움이 됩니다.
긍정적인 예:
public class LoginProxy; public class ResourceObserver;
15. [Recommended] 인터페이스 클래스의 메서드와 속성에 수정자를 추가하지 마세요. 효과적인 Javadoc 주석과 결합하여 코드를 깔끔하게 단순하게 유지합니다. 인터페이스에서 변수를 정의하지 마십시오. 변수를 정의해야 하는 경우 해당 변수는 인터페이스 메소드와 관련되어야 하며 전체 애플리케이션의 기본 상수입니다.
긍정적인 예: 인터페이스 메소드 서명 void commit(); 인터페이스 기본 상수 String COMPANY = "alibaba";
Counter 예: 인터페이스 메소드 정의 public abstract void f()
설명: JDK8의 인터페이스는 기본 구현을 허용합니다. 이 기본 메소드는 모든 구현 클래스에 유용한 기본 구현입니다.
16. 인터페이스 및 구현 클래스의 이름 지정에는 두 가지 규칙이 있습니다.
1) [필수] 서비스 및 DAO 클래스의 경우 SOA 개념을 기반으로 노출된 서비스는 인터페이스여야 하며 내부 구현은 클래스는
Impl의 접미사와 인터페이스의 차이점을 사용합니다.
긍정적인 예: CacheServiceImpl은 CacheService 인터페이스를 구현합니다.
2) [Recommended] 기능을 설명하는 인터페이스 이름인 경우 해당 형용사를 인터페이스 이름으로 사용합니다(보통 –able 형용사).
긍정적인 예: AbstractTranslator는 Translatable 인터페이스를 구현합니다.
17. [Reference] 열거형 클래스 이름 뒤에는 Enum이 붙어야 하며, 열거형 멤버 이름은 모두 대문자여야 하며 밑줄로 구분되어야 합니다.
설명: 열거형은 실제로 특수 클래스입니다. 도메인 멤버는 모두 상수이며 생성자는 기본적으로 비공개로 설정됩니다.
긍정적인 예: ProcessStatusEnum이라는 열거형의 멤버 이름: SUCCESS / UNKNOWN_REASON.
18. [참고] 레이어별 명명 규칙:
A) 서비스/DAO 레이어 메서드 명명 규칙
1) 단일 객체를 얻는 메서드에는 get이라는 접두사가 붙습니다.
2) 여러 객체를 얻는 방법에는 list 접두사가 붙고 복수형은 listObjects로 끝납니다.
3) 통계값을 구하는 방법 앞에는 count가 붙습니다.
4) 삽입 방법 앞에는 저장/삽입이 붙습니다.
5) 삭제 방법 앞에는 제거/삭제가 붙습니다.
6) 수정 방법 앞에는 update가 붙습니다.
B) 도메인 모델 명명 규칙
1) 데이터 객체: xxxDO, xxx는 데이터 테이블 이름입니다.
2) 데이터 전송 객체 : xxxDTO, xxx는 해당 사업 분야와 관련된 이름입니다.
3) 표시 개체: xxxVO, xxx는 일반적으로 웹 페이지의 이름입니다.
4) POJO는 DO/DTO/BO/VO의 총칭이며, xxxPOJO로 명명하는 것은 금지되어 있습니다.
상수 정의
1. [Mandatory]에서는 마법의 값(즉, 미리 정의되지 않은 상수)이 코드에 직접 나타나는 것을 허용하지 않습니다.
카운터 예시:
String key = "Id#taobao_" + tradeId;cache.put(key, value);// get 캐싱 시 코드 복사 시 밑줄이 누락되어 캐시 고장 및 문제 발생
2 [필수] long 또는 Long에 값을 지정할 때는 값 뒤에 소문자 l이 아닌 대문자 L을 사용하세요. 소문자는 숫자 1과 쉽게 혼동될 수 있습니다.
설명: Long a = 2l; 21을 숫자로 쓰는 건가요, 아니면 2를 Long으로 쓰는 건가요?
3. [권장] 모든 상수를 유지하기 위해 하나의 상수 클래스를 사용하지 말고 기능별로 분류하여 별도로 유지하세요.
참고: 크고 포괄적인 상수 클래스는 체계적이지 않습니다. 검색 기능만 사용하여 수정된 상수를 찾을 수 있으므로 이해 및 유지 관리에 도움이 되지 않습니다.
긍정적인 예: 캐시 관련 상수는 CacheConsts 클래스 아래에 배치됩니다. 시스템 구성 관련 상수는 ConfigConsts 클래스 아래에 배치됩니다.
4. [권장] 상수 재사용 수준에는 애플리케이션 간 공유 상수, 애플리케이션 내 공유 상수, 하위 프로젝트 내 공유 상수,
패키지 내 공유 상수, 클래스 내 공유 상수 등 5가지 수준이 있습니다.
1) 애플리케이션 간 상수 공유: 일반적으로 client.jar의 상수 디렉터리에 있는 보조 라이브러리에 배치됩니다.
2) 애플리케이션 내의 공유 상수: 일반적으로 서브모듈의 상수 디렉토리에 있는 라이브러리에 배치됩니다.
카운터 예: 이해하기 쉬운 변수도 애플리케이션 내에서 공유 상수로 균일하게 정의되어야 합니다. 두 엔지니어가 두 클래스에 "YES" 변수를 정의했습니다.
클래스 A: public static final String YES = "yes";
클래스 B: public static final String YES = "y";
A.YES.equals(B.YES), 이는 true일 것으로 예상되지만 실제로는 false를 반환하여 온라인 문제를 일으킵니다.
3) 하위 프로젝트 내의 공유 상수, 즉 현재 하위 프로젝트의 상수 디렉터리에 있습니다.
4) 패키지 내 공유 상수, 즉 현재 패키지 아래의 별도 상수 디렉터리에 있습니다.
5) 클래스 내 공유 상수: 클래스 private static final 내부에서 직접 정의됩니다.
5【권장】변수 값이 고정된 범위 내에서만 변경되는 경우 enum 유형을 사용하여 정의합니다.
참고: 이름 이외의 확장 속성이 있는 경우 enum 유형을 사용해야 합니다. 아래 예시의 숫자는 해당 연도의
번째 시즌을 나타내는 확장 정보입니다.
긍정적인 예:
public enum SeasonEnum { SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); private int seq; SeasonEnum(int seq) {this.seq = seq;} public int getSeq() {return seq ;} }
코드 형식
1. [필수] 중괄호가 비어 있으면 중괄호 사이에 줄 바꿈이나 공백 없이 {}를 작성하세요. 비어 있지 않은 코드 블록이면
1) 여는 중괄호 앞에는 줄 바꿈이 없습니다.
2) 왼쪽 중괄호 뒤의 줄바꿈입니다.
3) 오른쪽 중괄호 앞에 줄 바꿈이 있습니다.
4) 오른쪽 중괄호 뒤에 else 코드가 있는 경우 줄 바꿈은 종료를 나타내는 오른쪽 중괄호 뒤에 있어야 합니다.
2. 왼쪽 괄호와 문자 사이에는 공백이 없습니다. 마찬가지로 오른쪽 괄호와 문자 사이에는 공백이 필요합니다. 자세한 내용은 기사 5 아래의 올바른 예시 팁을 참조하세요.
카운터 예시: if (space a == b space)
3. [필수] if/for/while/switch/do와 같은 예약어와 괄호 사이에는 공백이 있어야 합니다.
4. [필수] 모든 이항 또는 삼항 연산자에는 왼쪽과 오른쪽에 공백이 필요합니다.
설명: 연산자에는 할당 연산자 =, 논리 연산자 &&, 덧셈, 뺄셈, 곱셈 및 나눗셈 기호 등이 포함됩니다.
5. [필수] 들여쓰기에는 공백 4개를 사용하며 탭 문자는 금지됩니다.
참고: 탭 들여쓰기를 사용하는 경우 탭 1개를 공백 4개로 설정해야 합니다. IDEA가 탭을 4개의 공백으로 설정하는 경우 Eclipse에서 탭 문자 사용을 선택하지 말고 탭에 대한 공백 삽입을 확인해야 합니다.
긍정적 예: (1-5점 포함)
public static void main(String[] args) {//4칸 들여쓰기 String say = "hello";//왼쪽과 오른쪽에 공백 int가 있어야 함 연산자 플래그 = 0;//if 키워드와 대괄호 사이에는 공백이 있어야 합니다. f와 왼쪽 대괄호, 0과 대괄호 안의 오른쪽 대괄호 if (flag == 0 사이에는 공백이 필요하지 않습니다. ) {System.out.println(say); }// 왼쪽 중괄호 앞에 공백을 추가하고 왼쪽 중괄호 뒤에 줄바꿈을 추가하지 않습니다. if (flag == 1) { System.out.println("world") ;// 오른쪽 중괄호 앞에 줄 바꿈을 넣고 오른쪽 중괄호 뒤에 줄 바꿈이 있습니다. else, 줄 바꿈 없음} else {System.out.println("ok");//오른쪽 중괄호 바로 뒤에서 끝나는 경우 중괄호, 줄 바꿈이 필요합니다.}}
6. [필수] 댓글의 이중 슬래시 및 댓글 내용 사이에는 정확히 한 칸의 공백이 있어야 합니다.
긍정적 예:
// 이것은 예시 주석입니다. 이중 슬래시 뒤에 공백이 있다는 점에 유의하세요. String param = new String();
위 내용은 Java 명명 스타일, 상수 정의 및 코드 형식이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!