자바 이상 및 로그 처리 규범
6845 단어 Java
하나 java 이상 처리 규범 (다음 에서:http://www.vxzsk.com/521.html)
1. 【 강제 】 자바 라 이브 러 리 에서 정 의 된 Runtime Exception 의 운행 시 이상 류 를 포착 하지 마 십시오. 예 를 들 어 Index OutOf Bounds Exception / NullPointer Exception 등 이상 은 프로그래머 가 미리 검사 하여 회피 하고 프로그램의 건장 성 을 확보 합 니 다.정규: if (obj! = null) {...} 반 례: try {obj. method ()} catch (NullPointer Exception e) {...}
(NPE 던 지지 마)
2. [강제] 이상 은 절차 통제, 조건 통제 에 사용 하지 마 세 요. 이상 한 처리 효율 이 조건 보다 낮 기 때 문 입 니 다.
(이상 을 조건 으로 하 는 사람 은 드물다)
3. [강제] 대형 코드 에 대해 try - catch 를 하 는 것 은 무책임 한 표현 이다.catch 시 안정 코드 와 비 안정 코드 를 구분 하 십시오. 안정 코드 는 어쨌든 오류 가 없 는 코드 를 말 합 니 다.불안정 코드 의 catch 에 대해 서 는 가능 한 한 이상 유형 을 구분 한 다음 에 대응 하 는 이상 처 리 를 합 니 다.
(대면 적 으로 try - catch 를 하 는 것 은 무책임 한 표현 이다)
4. [강제] 포획 이상 은 그것 을 처리 하기 위 한 것 입 니 다. 포획 하고 도 아무것도 처리 하지 않 고 버 리 지 마 십시오. 처리 하지 않 으 려 면 이 이상 을 호출 자 에 게 던 져 주 십시오.최 외층 의 업무 사용 자 는 반드시 이상 을 처리 하여 사용자 가 이해 할 수 있 는 내용 으로 전환 시 켜 야 한다.
(일반적으로 캡 처 이상 은 로 그 를 인쇄 하고 많이 처리 하지 않 습 니 다)
5. [강제] 트 리 블록 을 트 랜 잭 션 코드 에 넣 었 습 니 다. catch 이상 후 스크롤 백 이 필요 하 다 면 수 동 스크롤 백 에 주의해 야 합 니 다.
(이 상황 은 아직 만난 적 이 없다)
6. [강제] finally 블록 은 자원 대상, 흐름 대상 을 닫 아야 하고 이상 이 있 으 면 try - catch 를 해 야 합 니 다.설명: JDK 7 이 라면 try - with - resources 방법 을 사용 할 수 있 습 니 다.
(파일 흐름 닫 기, http 흐름 등)
7. [강제] finally 블록 에서 return 을 사용 할 수 없습니다. finally 블록 에서 return 을 반환 한 후 방법 이 끝 났 습 니 다. try 블록 에서 return 문 구 를 실행 하지 않 습 니 다.
(return 은 방법 종료 표지)
8. [강제] 포획 이상 과 포 이상 은 완전히 일치 하거나 포획 이상 은 포 이상 의 부류 여야 합 니 다.수국 을 던 질 것 으로 예상 되 고 실제로 포환 을 받 으 면 의외 의 상황 이 발생 할 수 있다 는 설명 이다.
(이상 하 게 던 지 려 면 정확 해 야 한다)
9. 【 추 천 】 방법의 반환 값 은 null 일 수 있 으 며, 빈 집합 이나 빈 대상 등 을 강제로 되 돌려 주지 않 으 며, 어떤 상황 에서 null 값 을 되 돌려 주 는 지 설명 을 충분히 추가 해 야 합 니 다.호출 자 는 NPE 문 제 를 방지 하기 위해 null 판단 을 해 야 합 니 다.설명: 본 규약 은 NPE 를 방지 하 는 것 이 호출 자의 책임 임 을 명 확 히 한다.호출 된 방법 이 빈 집합 이나 빈 대상 으로 돌아 가도 호출 자 에 게 는 안심 이 되 지 않 습 니 다. 원 격 호출 실패, 운행 시 이상 등 장면 이 null 로 돌아 가 는 상황 을 고려 해 야 합 니 다.
(어떤 상황 에서 null 로 돌아 가 는 지 설명 하 는 것 이 좋 습 니 다)
10. 【 추 천 】 NPE 를 방지 하 는 것 은 프로그래머 의 기본 소양 입 니 다. NPE 가 발생 하 는 장면 을 주의 하 십시오. 1) 반환 유형 은 포장 데이터 형식 일 수 있 습 니 다. null 일 수 있 습 니 다. int 값 을 되 돌 릴 때 빈 반 례 를 주의 하 십시오. Public int f () {return Integer 대상}, null 이면 자동 으로 상 자 를 풀 고 NPE 를 던 집 니 다.2) 데이터베이스 조회 결 과 는 null 일 수 있 습 니 다.3) 집합 에 있 는 요 소 는 isNotEmpty 라 도 추출 한 데이터 요 소 는 null 일 수 있 습 니 다.4) 복귀 대상 을 원 격 호출 하고 일률적으로 NPE 판단 을 요구한다.5) 세 션 에서 가 져 온 데이터 에 대해 서 는 NPE 검 사 를 통 해 빈 지침 을 피 하 는 것 을 권장 합 니 다.6) 직렬 호출 obj. getA (). getB (). getC ();일련의 호출 은 NPE 가 생기 기 쉽다.
(NPE 는 자주 만 나 므 로 회피 하 는 것 이 좋다)
11. [추천] 코드 에서 '이상 버 리 기' 를 사용 하 는 지, '오류 코드 되 돌리 기' 를 사용 하 는 지, 회사 밖의 http / api 오픈 인터페이스 에 대해 서 는 '오류 코드' 를 사용 해 야 합 니 다.내부 추천 이상 던 지기;크로스 응용 프로그램 간 RPC 호출 은 Result 방식 을 우선 고려 하여 isSuccess, "오류 코드", "오류 짧 은 정보" 를 패키지 합 니 다.설명: RPC 방법 반환 방식 에 Result 방식 을 사용 하 는 이유: 1) 이상 반환 방식 을 사용 합 니 다. 호출 자가 캡 처 하지 않 으 면 실행 중 오류 가 발생 합 니 다.2) 스 택 정 보 를 추가 하지 않 고 new 사용자 정의 이상 일 뿐 이해 하 는 error message 를 추가 하면 호출 단 에서 문 제 를 해결 하 는 데 도움 이 되 지 않 습 니 다.스 택 정 보 를 추가 하면 자주 호출 오류 가 발생 하 는 상황 에서 데이터 직렬 화 와 전송 성능 손실 도 문제 다.
(우호 적 인 이상 정보 알림 이 있어 야 합 니 다)
12. 【 추 천 】 정의 시 unchecked / checked 이상 을 구분 하고 Runtime Exception 을 직접 사용 하지 않도록 하 며 Exception 이나 Throwable 을 던 지 는 것 을 허용 하지 않 으 며 업무 적 의미 가 있 는 사용자 정의 이상 을 사용 해 야 합 니 다.추천 업계 에서 정 의 된 사용자 정의 이상, 예 를 들 어 DaoException / ServiceException 등.
13. [참고] 중복 되 는 코드 (Don 't Repeat Yourself), 즉 DRY 원칙 이 나타 나 지 않도록 합 니 다.설명: 코드 를 임의로 복사 하고 붙 여 넣 으 면 코드 가 중복 되 기 때문에 나중에 수정 해 야 할 때 모든 사본 을 수정 해 야 하 며 누락 되 기 쉽다.필요 할 때 공통성 방법 이나 추상 적 인 공공 류, 심지어 공용 모듈 을 추출 합 니 다.정규: 한 클래스 에 여러 개의 Public 방법 이 있 습 니 다. 모두 같은 매개 변수 검사 작업 을 해 야 합 니 다. 이 럴 때 추출 하 십시오.
private boolean checkParam(DTO dto){...}
(코드 재 활용)둘. 자바 프로그램 로그 규범http://www.vxzsk.com/584.html)
1. [강제] 응용 프로그램 에 서 는 로그 시스템 (Log4j, Logback) 의 API 를 직접 사용 할 수 없 으 며 로그 프레임 워 크 SLF4J 의 API 에 의존 하여 외관 모드 의 로그 프레임 워 크 를 사용 하면 유지 와 각 유형의 로그 처리 방식 이 통일 되 는 데 유리 합 니 다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);
(이 건 왜 그런 지 잘 모 르 겠 어 요)2. [강제] 로그 파일 은 최소 15 일 동안 저장 하 는 것 을 추천 합 니 다. '주' 를 자주 발생 하 는 특징 이 있 기 때 문 입 니 다.(정시 미 션 이상 인가요?)
3. [강제] 응용 프로그램의 확장 로그 (예 를 들 어 타 점, 임시 모니터링, 방문 로그 등) 이름: appnamelogType_logName.log。 logType: 로그 형식, stats / desc / monitor / visit 등 으로 분류 하 는 것 을 추천 합 니 다.로그 이름: 로그 설명.이러한 이름 의 장점: 파일 이름 을 통 해 로그 파일 이 어떤 응용 프로그램 에 속 하 는 지, 어떤 유형, 어떤 목적 에 속 하 는 지 알 수 있 고 분류 검색 에 도 유리 합 니 다.정규: mppserver 응용 에서 시간 대 전환 이상 을 단독으로 감시 합 니 다. 예 를 들 어 mppservermonitor_timeZone Convert. log 설명: 로 그 를 분류 하 는 것 을 추천 합 니 다. 오류 로그 와 업무 로 그 는 가능 한 한 따로 보관 하여 개발 자 들 이 보기 편리 하고 로 그 를 통 해 시스템 을 신속하게 감시 할 수 있 습 니 다.
(각 단계 의 출력 파일 을 설정 할 수 있 습 니 다)
4. 【 강제 】 trace / debug / info 급 로그 출력 은 조건 부 출력 형식 이나 자리 표시 자 를 사용 해 야 합 니 다.설명: logger. debug ("id 로 무역 처리:" + id + "symbol:" + symbol);로그 단계 가 warn 이면 위 로 그 는 인쇄 되 지 않 지만 문자열 연결 작업 을 수행 합 니 다. symbol 이 대상 이 라면 toString () 방법 을 실행 하고 시스템 자원 을 낭비 하 며 위 작업 을 실 행 했 지만 로 그 는 인쇄 되 지 않 았 습 니 다.정규: (조건)
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
}
정규 예: (자리 표시 자)logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
(내 가 이해 하 는 말 은 일 지 는 간결 해 야 한 다 는 뜻 이 겠 지)
5. [강제] 로 그 를 중복 인쇄 하지 않 고 디스크 공간 을 낭비 하지 않도록 log4j. xml 에 additivity = false 를 설정 해 야 합 니 다.정규:
6. [강제] 이상 정 보 는 사건 현장 정보 와 이상 스 택 정 보 를 포함해 야 한다.처리 하지 않 으 면 위로 던 져 라.정규: logger. error (각종 매개 변수 또는 대상 toString + "" + e. getMessage (), e);
7. 출력 된 POJO 클래스 는 toString 방법 을 다시 써 야 합 니 다. 그렇지 않 으 면 이 대상 의 hashCode 값 (주소 값) 만 출력 하고 참고 할 가치 가 없습니다.
(앞으로 pojo 를 만 들 려 면 toString 을 꼭 넣 어야 합 니 다)
8. [추천] warn 로그 단 계 를 사용 하여 사용자 가 입력 한 매개 변수 가 잘못된 상황 을 기록 하고 사용자 가 신고 할 때 어 쩔 수 없 음 을 피 할 수 있 습 니 다.로그 출력 단 계 를 주의 하 십시오. error 단 계 는 시스템 논리 오류, 이상 또는 중요 한 오류 정보 만 기록 합 니 다.필요 하지 않 으 면 이 장면 에서 error 단 계 를 쳐 서 자주 신고 하지 마 십시오.
(warn 이 error 를 일 으 키 기 쉬 운 가 봐 요)
9. [추천] 조심스럽게 일 지 를 기록한다.생산 환경 에서 debug 로 그 를 출력 하 는 것 을 금지 합 니 다.info 로 그 를 선택 적 으로 출력 하기;만약 warn 을 사용 하여 처음 출시 되 었 을 때의 업무 행위 정 보 를 기록 하려 면 로그 출력 문 제 를 주의해 야 합 니 다. 서버 디스크 가 터 지지 않도록 하고 이 관찰 로 그 를 제때에 삭제 하 는 것 을 기억 하 십시오.설명: 잘못된 로 그 를 대량으로 출력 하면 시스템 성능 향상 에 불리 하고 빠 른 포 지 셔 닝 오류 점 에 도 불리 합 니 다.일 지 를 기록 할 때 생각해 보 세 요. 이 일 지 는 정말 누가 봅 니까?이 일 지 를 보면 당신 은 무엇 을 할 수 있 습 니까?문제 의 조사 에 좋 은 점 을 가 져 다 줄 수 있 습 니까?
(쓸모없는 로그 출력 감소)
10. [참고] 로그 가 영어 로 설명 되 지 않 으 면 중국어 주석 을 사용 하 는 것 을 추천 합 니 다.중국어 UTF - 8 로그 에 대해 secureCRT 에서 set encoding = utf - 8;중국어 문자 가 어 지 러 우 면 전역 > 기본 세 션 설정 > 외관 > 글꼴 > 문자 집합 gb 2312 를 선택 하 십시오.아직 안 되면 명령: set terencoding = gbk 를 실행 하고 중국어 로 검색 합 니 다.
(중국어 주석 은 반드시 조심해 야 합 니 다. 함부로 부 호 를 하지 마 세 요)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.