첫 번째 작업은 "수학의 아름다움"생각 + 코드 사양을 읽어

                            "수학의 아름다움을"읽기 느낌

  처음에 나는, 내가 아닌 언어 수업, 왜 책 리뷰를 작성 원하기 때문에 교사는, 우리가이 내가 이해하지 못했다 책은 "수학의 아름다움"을 살펴 보자하지만, 수학의 아름다움,하지만 이후 읽기 왜 수학은보고 이 책의 정말 유용합니다.

  사실, 몇 장을 읽지 만, 통계적 언어 모델의 앞에 말하기 만 나에게 많은 관심을 발생하지뿐만 아니라, 나에게 큰 영감을 주었다있다. P (W3 | 당신이 S에있는 텍스트의 시퀀스의 확률 나타납니다 알고 싶다면,이 책에 언급, P (S) = P (W1) P (W1, W2)로 곱하는 순서에서 각 단어의 발생 확률은 | W1, W2 ..... WN-1) 여기서 P (W2 | | W1) 단어가 먼저 나타나는 경우에 알려져 있으며, 두 번째 단어 W1, W2) ... P (WN 발생 확률. 하지만이 단어와 관련된 이전-1 n으로 단어의 발생 확률을 계산하려는 경우, 양이 마르코프 가정하에, 높은 계산하기 너무 크고 어렵다 계산이 동일한 Wi에서만 나타나는 단어의 확률이 단어 앞에 WI-1 관련. 구조식은 단순화 될 수있다 : P (S) = P (W1) P (W2 | W1) P (W3 | W2) ..... P (WI | WI-1).

  이는 각 기계 번역 시스템 바레인 후, 우리 모두가 모세 BLEU 값 가득 실험실에서 테스트해야, 내 신입생 통계적 기계 번역 시스템을 생각 나게한다. BLEU 값이 두 문장의 유사도를 결정하기 위해 사용되는 간단한 밤나무 수득 두 문장 S1을 = I는 ++ C 내용, S2는 : I 자바 알아 이들 두 문장의 유사성 2/3 분자가입니다 번역 후보 단어 수는 분모는 단어의 수 후보 번역입니다 (여부 같은 문장 참조 번역) 참조 번역에 나타납니다. 왜 BLEU 여러 기준 번역에 해당하는 단어의 기계 번역이기 때문에 같은 문장 번역의 기준이 있지만,보다 더 함께 종합 점수를 계산하기 위해 비교 따라서 문장과 비교하지 여부를 언급하지 번역은 기준 기간에 비해. 간섭 일반적인 단어를 방지하기 위해, 우리는 또한 결과가 최종 BLEU를 얻기 위해 최대로 서로 비교 될, 복수 단어의 비교의 정확성이 문장에서 각각의 기준 변환 나타나는 개선 횟수를 사용 하였다.

  또한 또한 단어가 가장 확률이 가장 좋은 단어 방법입니다 알아 계산 등장 후 각 문장의 통계 언어 모델 확률을 이용하여 중국의 모호한 단어의 문제를 해결하기 위해 통계적 모델을 사용합니다. 이 날 코퍼스 준비에 설치하는 과정에서 모세를 생각해 봅시다.

토큰 화 : 단어와 구두점 사이에 공백을 삽입합니다.
Truecasing : 문장에서 단어의 각 데이터의 희소성을 줄이는 데 도움이 프로토 타입으로 변환 할 수있는 가능성이 가장 높은.
 청소 : 긴 문장 빈 문은 훈련 기간 동안 문제를 일으킬 수 있으므로 제거, 크게 잘못 정렬 된 문장이 삭제 삭제할 수 있습니다.

전처리 코퍼스에서 중국 최초의 단어 코퍼스의 필요성, 병렬 정렬 된 코퍼스 후 사용 GIZA ++을 용이하게합니다.

 나는 통계적 기계 번역에 참조 통계 언어 모델 "수학의 아름다움을"돕는 것은 대단한 있다고 생각합니다.

   천천히 "수학의 아름다움"을 읽어 나는 분리 여전히 많은, 수학 및 컴퓨터를 배울 수 있기를 발견, 많은 알고리즘은 수학에 관한 교육 모델은 내가있을 것으로 예상 ", 수학적 아름다움"를 돌봐 계속 깊은 이해. 

표준으로 C ++ 코드 사양 :

참조 : (1 뉴스) 11 표준 요약 코딩 가장 포괄적 인 C / C ++ - https://blog.csdn.net/p942005405/article/details/80282572 CSDN 블로그 - oada의 블로그

첫째, 문서 조판


1. 헤더 파일을 포함

 • 첫 번째 시스템 헤더 파일, 사용자 헤더 파일.
 • 시스템 헤더, 안정적인 디렉토리 구조는 하위 방식으로 경로를 포함하는 데 사용되어야한다.
 • 사용자 정의 헤더 파일, 디렉토리 구조가 불안정, 그것은 DSP에 포함 된 경로를 지정해야합니다.
 • 응용 프로그램 시스템 헤더 파일 : #include <xxx.h>
 사용자 정의 응용 프로그램 • 파일 : #include "xxx.h"
 • 참조 만 필요한 헤더 파일.

2. 시간과 CPP 파일

 • 헤더 파일, 인라인라는 이름의 파일 .inl을 .H라는 이름 *라는 이름의 C ++ .CPP 파일
 혼합 된 경우, 소문자 또는 혼합과 • 파일 이름. 예를 들어 DiyMainview.cpp, infoview.cpp. 의미없는 이름을 사용하지 마십시오 : 예를 들어 XImage.cpp, SView.cpp, xlog.cpp,
 • 특별한 경우 외에 헤더 파일, 사용되어야 #ifdef블록을 제어 할 수 있습니다.
 • 헤더는 #endif의견을 줄 것이다.
 • 제 문서 매크로 정의 코드 블록 후, 글로벌 변수, 전역 상수 타입 정의, 클래스 정의 인라인 부 뒤에 첫 번째 코드 블록 구비.
 • 명령, 매크로 정의, 전역 변수, 함수 정의를 포함하는 CPP 파일.

3. 파일 구조

 • 파일은 파일 헤더의 의견과 내용을 포함해야합니다.
 두 개의 빈 줄은 빈 줄 여부를 함수 본문은 그 원리에 기초 • 사이에 필요한 특별한 경우가 될 수 있습니다.

4. 빈 행

 • 헤더 제어 블록, #include일부 매크로 정의 부, class두 개의 빈 라인 부분들 사이에 전역 상수 부 전역 변수 부, 함수 및 기능.

둘째, 주석


1. 파일 헤더 코멘트

 • 저자, 파일 이름, 설명, 만든 날짜 (선택 사항)

2. 기능 설명

 주요 기능 •하면 함수의 사용에 대한 메모를 작성해야합니다.
 • 특수 기능 매개 변수, 릴리스 등을 담당 인수의 목적에 대한 설명.
 • 특별한 상황뿐만 아니라, 코드 앞에 서면 의견은, 코드의 행 다음에 넣지 마십시오.
 • 각각에 대해 #else또는 #endif여행의 끝 코멘트.
 • 포함하되 이에 국한되지 키 코드 주석 : 등등 함수 호출, 표현, 가지와, 할당.
 • 좋은 실현 전체 코드, 또는 추가 코드를 최적화 할 필요가 추가되어야 TODO가 ... //이
 • 코드를 디버깅 만 // DEBUG에 대한 의견을 추가
 코멘트 참고로, • 코드는 관심을 끌기 필요가 ... //
 • 더 큰 블록의 끝, 같은 for,while,do할 | 반면 | 등에 대한 // 끝을 추가 할 수 있습니다

셋째, 명명


1. 원칙

 • 식별 : 서브 모듈 또는 파생 클래스를 작성하면, 기본 클래스의 명명 스타일이나 전체 모듈에 따라 모듈을 통해 명명 스타일의 정체성을 유지합니다.
 • 식별자 : 그 영어 단어 또는 조합을 사용하여 식별자, 그것은 직관적이고 맞춤법 예상 EENOW 텍스트해야한다, 용어, 정확 알파벳으로 이름 않도록한다.
 • 정보의 양 길이를 && 최소화의 원칙 극대화 : 식별자 명확한 의미를 유지하면서, 우리는 그것의 길이를 짧게하는 것을 시도해야한다.
 예를 들어, 혼자 식별자의 대소 문자 구분과 유사하게 나타납니다하지 마십시오 • 너무 비슷한 피 "i"与"I", "function"그리고 "Function"등등.
 • 동일한 이름의 서로 다른 수준의 범위를 피하십시오 : 프로그램의 이름은 비록 서로 다른 두 가지 범위,하지만 잘못된 사이에 문법적인 오류없이, 로컬 및 글로벌 변수와 정확히 같은 표시되지 않습니다.
 • 올바른 이름의 식별자는 독점적 인 의미가있다 : 이름 식별자와 같은 정확한 반의어 그룹과 독점 의미를 가지고 "nMinValue" 와 "nMaxValue", "GetName()" 와 "SetName()" . ...
 • 피 번호가 이름이 나타납니다 값 1로, 이름은 번호가 나타나지 않도록하십시오 등 값 2, 논리 숫자를 필요로하지 않는. 이것은 뇌의 이름을 지정하고 (가장 쉬운 때문에 번호가 매겨진에) 의미없는 이름으로 이어질 내키지 게으른 프로그래머를 방지하는 것입니다.

2. T, C, M, R 클래스

 • T 제어 자원에, 자원이 소멸자에서 작동 중에 해제되지 않은이없는 간단한 데이터 타입의 클래스를 나타냅니다.
 • C는 CBase에서 상속하는 클래스를 나타냅니다. 이 클래스는, 스택에서 변수를 정의 할 수없는 경우에만 힙에서 만들 수 있습니다.
 • M 인터페이스 클래스를 나타냅니다.
 • R은 시스템 유형에 일반적으로 고유의 자원이다. 특별한 경우, R 타입은 코드 개발에 나타나지 않아야합니다.

3. 함수 이름

 함수 이름 • M 클래스는해야한다 HandleXXX, 예를 들어, 이름 : HandleTimerEvent;예를 들어, 자바 스타일을 권장하지 않습니다 handleTimerEvent;예를 들어, 밑줄 권장하지 않습니다 표준 C 스타일의 코드에 추가 handle_event.
 접미사 L.와 • 휴가 기능,
 • 휴가 기능, 접미사 LC와 정리 스택에.
 • 휴가 기능, 접미사 LD로, 오브젝트를 삭제합니다.

4. 함수 매개 변수

 • 접두어로 사용되는 함수 매개 변수.
 • 피 이름과 헝가리는 혼합 표시 apBuffer이름입니다. 사용 aBuffer할 수 있습니다.
 • 구조로 대체 상대적으로 긴 시간 함수 매개 변수가 고려되어야한다.
 당신이 더 많은 인수를 피할 수없는 경우 각 매개 변수가 레이아웃에 한 줄을 차지하기위한 • 고려되어야한다, 매개 변수 이름은 수직으로 정렬됩니다.

5. 멤버 변수

 • 대부분의 멤버 변수는 m로 시작.
 • 헝가리를 혼합 mpBuffer 이름으로 명명 마십시오. mBuffer으로 할 수 있습니다.

6. 로컬 변수

 • 루프 변수와 소문자로 간단한 문자열 간단한 변수입니다. 예를 들어, int i;
 • 포인터 변수 p, 예를 들어, 시작,void* pBuffer;

7. 글로벌 변수

 • 글로벌 변수 g_대부분의 접두사.

8. 클래스 이름

 • 클래스와 객체 이름은 명사이어야한다.
 • 동사해야 클래스 멤버 함수 이름의 동작을 구현합니다.
 액세스 및 쿼리 기능 이름 • 클래스 멤버는 명사 또는 형용사해야합니다.

9. 스타일의 호환성

 • 이식 또는 오픈 소스 코드의 경우, 명명 규칙 ++이 아닌 C를 원래의 스타일을 따를 수 있습니다.

넷째, 코딩 스타일 측면

1. 탭과 공간

 각 라인 들여 쓰기의 시작 부분에 • 만하지 공백, 탭을 사용할 수 있으며, 다음 공백으로 통일 입력합니다. 제어 압입 탭의 시작에 더하여, 다른 부분 톱니에 필요한 공간을 정렬한다. 이것은 다른 편집기에서 디스플레이 케이스의 정렬 불량을 방지 할 수 있습니다.
 • 여분의 공백은 코드의 줄 끝에 나타날 수 없습니다.
 •하지 마십시오 "::","->","."주위에 공간을 추가 할 수 있습니다.
 •하지 마십시오 ",",";"전에 공간을 추가 할 수 있습니다.

2. 유형 정의와 {

 • 클래스, 구조체, 열거, 노동 조합 : 별도의 행 교정기

3. 기능

 • {함수 본문이 새로운 라인이 필요합니다, 당신은 {전에 들여 쓰기를 할 수 없습니다.
 • 특별한 경우 외에, 몸은 두 개의 빈 줄을 작동 할 수 없습니다.
 • 특별한 경우 외에, 몸은 매크로 정의 명령을 작동 할 수 없습니다.
 • 밀접하게 몸에 기능에 관련된 사이에 빈 줄없이, 다른 곳은 빈 줄 구분 기호를 추가해야합니다, 논리 문을 절.
 • 헤더 파일에 정의 inline빈 라인으로 추천 기능, 기능 사이의 빈 줄을 가질 수 없습니다.

4. 코드 블록

 •  "if"、"for"、"while"、"do"、"try"、"catch" 그 자체로 다른 명령문 라인은 문이 따르지 실행됩니다. 에 관계없이 어느 정도의는 "{}."문을 실행하기 위해 추가됩니다 이것은 당신이 작성하고 코드를 수정하여 실수를 방지 할 수 있습니다.
 •  "if"、"for"、"while"、"do"、"try"、"catch" 괄호와 괄호 안의 표현식 키워드 옆에있을 수 있습니다, 이러한 표현이 강조되고있다.

다른 사람 (5)

문 다른 if 문이} 다른 {하나 개의 라인으로 작성하는 경우 • 코드의 세 줄 방법을 사용하지 않는 것이 좋습니다.

코드 6. 라인

 • 코드의 라인은 변수의 정의로, 하나의 일을, 또는 하나의 명령문을 작성. 이 코드는 읽기 쉽고 코멘트를 작성하기 쉽습니다.
 • 멀티 라인 변수 정의는, 아름다움을 추구 코드 레이아웃, 변수는 수직으로 정렬 할 수있다.
 최대 라인 길이는 특정 문자 내에서 제어해야한다 • 모든 현재 화면이 적절한 내에서 볼 수 있습니다.

7. switch 문

 • 케이스와 스위치 키워드는 정렬되어야합니다.
 아이가 변수가있는 경우 • case 문은, {가}을 포함 사용할 수 있습니다.
 • 유사한 문이 간단한 경우를 나란히있는 경우, 코드 블록의 경우 코드를 작성 고려한다.
 • 간단한 케이스 사이에 빈 줄이 대가는 복잡한 케이스 사이 빈 줄로 구분 부여해야 없습니다.
 • 경우 단어 문은 별도의 줄에 교정기 및 사례 쓴 행하지 않습니다.
 • 스위치 문의 모든 지점에 대한 기본을 제공합니다.
 • 경우이 댓글이 문을 추가해야 깰 필요하지 않습니다.

8.주기

 • 공기 순환이 가능  for( ;; ) 하거나  while( 1 ) 또는 while( true )

다섯 가지 유형


• * 및 다음 포인터 및 참조 유형의 정의.
• 필요한 경우를 제외하고, 부동 소수점 숫자를 사용하지 않도록하십시오.
• 사용하는 typedef프로그램을 단순화하기 위해 복잡한 구문을.
• 익명의 유형을 정의하지 마십시오. 예를 들어 : typedef enum { EIdle, EActive } TState;
적은 조합 • 우리가 사용하는 경우 간단한 데이터 유형의 멤버입니다.
• 사용 enum상수 (관련 그룹)를 대체합니다.
• 매직 넘버를 사용하지 마십시오.
• 참조 포인터로 교체하려고합니다.
• 사용 때까지 기다리지 않는다, 변수 초기화가 즉시 완료 정의합니다.
더 우아한 해결책이있는 경우 •, 캐스트를 사용하지 마십시오.

여섯째, 식


• 식에 할당 문을 사용하지 마십시오.
• 부동 소수점 유형을하는 것은 동일하거나 동일하지 않은 판단이다 마십시오.
• 당신은 작업을 수행 한 후 열거 형의 열거에 할당 할 수 없습니다.
• 사이클 동안 루프 카운터를 수정하지 마십시오.
• 널 포인터에 의해 검출  if( p )
와 비 - 널 포인터 • 검출 if( ! p )

자바 코드 예제를 조절합니다 :

참조 : 해석 알리 공식 코드 표준 - 술에 특히 - 블로그 공원 https://www.cnblogs.com/renyuanwei/p/9169452.html

명명 규칙 :

1. 코드 이름은 밑줄 또는 달러 기호로 끝날 수 없습니다, 밑줄 또는 달러 기호로 시작할 수 없습니다

2. 코드 혼합 병음 영어를 사용하지 마십시오라는 이름의,하지만 직접 사용 중국어 방법을 허용하지 않습니다

3. UpperCameCase 스타일 클래스 이름 (접두사를 대문자 변환 방법은 여러 단어로 장착)에 혹의 형태 (예 : 같은 모델 이름 종래 기술과 같은 특정 예외 : DO / BO / DTO / VO)를 따라야합니다;

청구항 4 명, 파라미터 명, 멤버 변수, 로컬 변수는 혹 형상 준수해야 일관된 사용 lowerCamelCase (낙 폰트)이다

5. (쉽게 잊어) 모두 대문자 정수 이름 단어 사이에 밑줄로 구분

6. 소문자로 통합 된 패키지 이름과 점 사이의 영어 단어 구분 기호의 의미 론적 특성

 명칭 :

1. 의미 분명, 너무 오래하지 이름을 완료하기 위해 노력하고

2.보고하지 않도록하기위한 것입니다 나는 텍스트를 모르는, 완전히 비표준 약어를 제거

(베스트 약어를 사용하지 말 것)

클래스 이름 :

1. 추상 클래스 이름이나 사용 추상 자료의 시작, Expetion 끝을 사용하여 명명 예외 클래스, 테스트 클래스 이름이 클래스 이름은 테스트를 종료하기 시작 테스트

SOA의 개념에 기초한 서비스 및 DAO 클래스 2. 서비스 인터페이스를 노출되어야 IMPL와 접미어 내부 인터페이스 구현 클래스 차이

3. 인터페이스 이름은 인터페이스 이름과 해당 형용사을 할 수있는 기능을 설명하는 경우

4. 열거 클래스 이름이 열거 접미사를 가지고하는 것이 좋습니다, 유명한 이름은 단어 사이에 밑줄로 구분하여 모두 대문자를 열거 할 필요가

5. 디자인 패턴 경우, 특정 패턴은 권장 클래스 이름에 반영

제 통합 패키지 이름 단수 형태는, 상기 복수의 클래스 이름이 경우, 클래스 이름은 복수형을 사용할 수있다

상수 규정 :

1. 모든 마법 값 (상수가 정의하지 않고 즉,) 코드에서 직접 표시 할 수 없습니다 발생

2. 모든 클래스 상수의 지속적인 유지 보수를 사용하지 마십시오는 일정 기능에 따라 분류되어야하며, 별도의 유지 보수

3. 상수 다중 계층 구조는 다섯 가지가 있습니다 클래스 내에서 상수 간 응용 프로그램 공유, 응용 프로그램 공유 하위 프로젝트, 가방 일정 공유 내 일정, 일정 공유 내에서 공유 상수

단지 열거 형 변수 값이 변경 사용한 경우는 클래스의 이름이 아닌 다른 속성으로 확장되는 경우 4. 범위 열거 내에서 사용되어야합니다

5. 당신은 확실히 인터페이스 방법에 관한 변수를 정의해야하는 경우, 인터페이스에서 변수를 정의하지 않도록 노력하고, 기초 응용 프로그램 전반에 걸쳐 일정입니다

(코어 : 1 상수 사용하지 마십시오 2를 일정하게 제어 할 수 있습니다.)

구문 :

1. 긴 또는 긴 초기 할당, 당신은 자본 L가 아닌 소문자 L를 사용해야하는 경우, 소문자 쉽게 오해의 소지가 숫자 1과 혼동

2. 인터페이스 클래스의 속성과 메소드는 효과적이고 자바 독 주석과 결합, 단순 코드를 유지 (공공 및 추가하지 않음) 어떤 수정 기호를 추가하지 않습니다

3. 모든 재정의 방법은, 당신은 코멘트를 추가해야합니다 @Override

4. 변수 매개 변수는 마지막의 매개 변수 목록에 배치해야합니다

5.final 학습 프로그램 응답의 효율성을 향상

형식 제약 조건 :

1. 탭 문자의 사용을 금지, 네 개의 공간을 사용하여 들여 쓰기

2. 일방 통행 제한 문자 이하 (120)

3. 텍스트 파일 인코딩 UTF-8로 IDE

선 창 형식을 사용하지 않는, 유닉스 파일 형식을 사용하여 IDE에서 나누기

방법은 문장의 생체 기에서 수행되고, 변수들의 세트 사이에 삽입 명령문은 다른 비즈니스 로직의 다른 의미 나 빈 라인 사이에 정의 된

규정은 주 :

1. 모든 필드는 주석 열거 형은, 각 데이터 항목의 사용을 설명해야

2. 주석의 영어 해석이 명확하지 않으면 중국 주석이있는 문제를 분명히. 적절한 이름과 키워드는 원래 영어 텍스트를 유지할 수 있습니다

가능한 한 많은 코드 밖으로 3. 코멘트 (그렇지 않으면 직접 삭제 복원하기 위해 매우 짧은 시간을 권장하지 않는 한) 단순히 주석보다는 설명 넥타이

4. 좋은 이름, 코드 구조는 자명하다, 의견이 장소에 간단하고 정확한 표현이 될 수 있습니다

코드 스타일 :

1. 빠른 스위치에서, 어느 브레이크 / 창 등 서술 정보 또는 프로그램 실행 종료 각 케이스는 케이스까지 계속 어디

2. 괄호를 사용해야하는 경우 / 다른 / / 동안 / 코드 한 줄, 다음과 같은 형식을 사용하지 않는 경우에도 문을 수행합니다

(조건) if 문;

3. 방식은 다음과 같이 다시 쓸 수있는 경우 - 다른 사람, 다른 사용을 최소화 권장

경우 (조건) {

...

OBJ를 반환;

}

// 다음 다른 비즈니스 로직 코드를 작성

(단 코드 들여 쓰기의 문제가 큰 덩어리를 가져올뿐만 아니라, 코드의 가독성을 줄일 수 밖에 때문에)

4. 당신은 () ...) (만약 다른 ... 다른 ... 모드 로직 표현, [할] 상태 디자인 패턴을 사용하여보다 더 개 이상의 레이어를 강제하는 경우 사용해야하는 경우

또한 5. 일반적으로, 다른 복잡한 조건문 가독성을 향상시키기 위해 의미 부울 변수 이름에 할당 복잡한 논리 판정 결과를 수행하지 않은 영속 (예하는 getXXX / isXX 등) 방법을 사용하는

부울 (! "w") = NULL file.open (파일 이름) && (...) || (...)를 =이 존재;

경우 {(존재)

...

}

방법 이름 :

서비스 / DAO 계층의 메소드 명명 규칙 :

1. 접두어 get 메소드와 단일 객체를 가져옵니다

2. 여러 개체는 방법 목록로 시작하기

3. 통계 방법 카운트로 시작하기

4. (권장) 저장 방법을 삽입하거나 접두사 삽입 체

5. (권장) 접두사 제거와 함께 할 삭제 또는 삭제

6. 업데이트를 수정하는 방법은 접두사

나는 다음 연구에서 내 코드로이 두 가지를 조절하는거야.

 

추천

출처www.cnblogs.com/snowlxy/p/11442965.html