當前位置:編程學習大全網 - 源碼下載 - C++、C、或者java,這些語言寫代碼時應該要怎麽規範格式,

C++、C、或者java,這些語言寫代碼時應該要怎麽規範格式,

C/C++源代碼書寫規範1. 在.h/.cpp的開頭應有壹段格式統壹的說明,內容包括:a. 文件名 (FileName);b. 創建人 (Creator);c. 文件創建時間 (Date);d. 簡短說明文件功能、用途 (Comment)。例:////////////////////////////////////////////// FileName: GetVersion.h// Creator: Liu Haifeng// Date: 2002-10-28// Comment: Get file version information////////////////////////////////////////////2.對於主要功能函數應有註釋說明。內容包括:功能、入口/出口參數,必要時還可有備註或補充說明,對於函數中的主要功能代碼,也應有註釋說明。註釋以英文為主。例://////////////////////////////////////////////Remarks:// Check file whether exist////Parameters:// LPCTSTR lpszPathName : Input full path name////Return values:// int : Non-zero means success// Zero means failure////////////////////////////////////////////3. 每列代碼的長度推薦為80列,最長不得超過120列;折行以對齊為準。例:HANDLE KSOpenFile(const char cszFileName[],int nMode);或者:BOOL KSReadFile(HANDLE hFile,void *pvBuffer,int nReadSize,int *pnReadSize);4. 循環、分支代碼,判斷條件與執行代碼不得在同壹行上。例:正確:if (n == -2)n = 1;elsen = 2;不得寫做:if (n == -2) n = 1;else n = 2;5. 指針的定義,* 號既可以緊接類型,也可以在變量名之前。例:可寫做:int* pnsize;也可寫做:int *pnsize;但不得寫做:int * pnsize;6. 在類的成員函數內調用非成員函數時,在非成員函數名前必須加上"::"。例:::Sleep(2000);7. 函數入口參數有缺省值時,應註釋說明。例:BOOL KSSaveToFile(const char cszFileName[],BOOL bCanReplace /* = TRUE */);或者:BOOL KSSaveToFile(const char cszFileName[],BOOL bCanReplace // = TRUE);8. else if 必須寫在壹行。9. 與‘{’、‘}’有關的各項規定:9.1‘{’、‘}’應獨占壹行。在該行內可有註釋。例:正確:for (i = 0; i < cbLine; i++){ // .....printf("Line %d:", i);printf("%s\n", pFileLines);}不得寫做:for (i = 0; i < cb; i++){ printf("Line %d:", i);printf("%s\n", pFileLines);}9.2‘{’必須另起壹行,‘{’之後的代碼必須縮進壹個Tab。‘{’與‘}’必須在同壹列上。例:正確:if (i > 0){m = 1;n++;}不得寫做:if (i > 0) {m = 1;n++;}例外:if (i == 0){ ASSERT(FALSE); return; }9.3 在循環、分支之後若只有壹行代碼,雖然可省略‘{’、‘}’,但不推薦這麽做。若省略後可能引起歧義,則必須加上‘{’、‘}’。例:正確:if (n == -2)n = 1;elsen = 2;或者:if (n == -2){ n = 1; }else if (n != nTemp){ n = 2; }else{ n = 3; }不得寫做:if (n == -2)n = 1;else if (n != nTemp)n = 2;elsen = 3;不推薦:if (i < 1){ n = 1; }else{if (i == 1){ n = 2; }else{if (i > 1){ n = 3; }}}10. 與空格有關的各項規定。10.1 在所有兩目、三目運算符的兩邊都必須有空格。在單目運算符兩端不必空格。但在‘->’、‘::’、‘.’、‘[’、‘]’等運算符前後,及‘&’(取地址)、‘*’(取值)等運算符之後不得有空格。例:正確:int n = 0, nTemp;for (int i = nMinLine; i <= nMaxLine; i++)不得寫做:int n=0, nTemp;for ( int i=nMinLine; i<=nMaxLine; i++ )10.2 for、while、if 等關鍵詞之後應有1個空格,再接‘(’,之後無空格;在結尾的‘)’前不得有空格。例:正確:if (-2 == n)不得寫做:if(-2 == n)或if ( -2 == n )等等。10.3 調用函數、宏時,‘(’、‘)’前後不得有空格。例:正確:printf("%d\n", nIndex);不得寫做:printf ("%d\n", nIndex);printf( "%d\n", nIndex );等等。10.4 類型強制轉換時,‘(’‘)’前後不得有空格例:可寫做:(KSFile*)pFile;也可寫做:(KSFile *)pFile不得寫做:( KSFile* )pFile( KSFile * ) pFile11. 與縮進有關的各項規定11.1 縮進以 Tab 為單位。1 個 Tab 為 4 個空格11.2 下列情況,代碼縮進壹個 Tab:1. 函數體相對函數名及'{'、'}'。例:int Power(int x){return (x * x);}2. if、else、for、while、do 等之後的代碼。3. 壹行之內寫不下,折行之後的代碼,應在合理的位置進行折行。若有 + - * / 等運算符,則運算符應在上壹行末尾,而不應在下壹行的行首。11.3 下列情況,不必縮進:switch 之後的 case、default。例:switch (nID){case ID_PLAY:......break;case ID_STOP:......break;default:......break;12.對於涉及到系統的功能調用,要求使用系統提供的宏,不得直接使用具體的數值。例: char szSystemPath[MAX_PATH] = {0}; 正確char szSystemPath[260] = {0}; 錯誤13.關於函數編寫的規定13.1 除了非常簡單的函數或者沒有必要,函數需要有返回值,並且推薦返回值的類型為int,成功時為 true,失敗時為false。不推薦直接使用1和0來表示。13.2 在函數內部變量定義全部放在函數的開始處,不能在代碼中間出現 變量定義。變量定義需要初始化值,壹般是0、false、NULL等。13.3 程序員自行編寫的函數不推薦使用DWORD等指明字節長度的變量 類型,推薦使用unsigned long等變量類型。對於ULONG等vc系統定義的變量類型,推薦使用unsigned long 來代替。如果調用系統API,在MSDN中已經指明了是DWORD等類型,則可以使用。13.4 推薦使用int nResult作為函數自身的返回值變量,int nRetCode、BOOL bRetCode作為調用其他函數的返回值變量。13.5 推薦使用goto語句來統壹函數出口,goto語句壹般只能跳轉到壹個函數出口,最多只能有兩個,出口標識必須命名為Exit0和Exit1。在出口處必須顯式檢查曾經申請過的系統資源(如內存),並且進行釋放。13.6 如果編寫DLL,除非特殊情況,導出函數的調用類型必須是__stdcall,便於多模塊協同工作。附錄:1.函數編寫示範///////////////////////////////////////////////////////////////////////// Remarks:// Get file version information//// Parameters:// [in] const char cszPathName : Input file path name// [out] PVERSION_INFO *pVersionInfo : File version information//// Return values:// int : Non-zero means success, zero means failure///////////////////////////////////////////////////////////////////////int GetFileVersion(const char cszPathName, PVERSION_INFO *pVersionInfo){int nResult = false;int nRetCode = false;char szSystemPath[MAX_PATH] = {0};nRetCode = IsFileExist(cszPathname);if (!nRetCode)goto Exit0;//Others code herenResult = true;Exit0:return nResult;}以前妳的習慣可能是我定義壹個函數,通過傳遞參數去實現這個函數的功能。面向對象編程要體現三個特點“封裝、繼承、多態”;比如妳寫壹個飛這個函數,妳需要在這裏傳遞參數飛機。換個角度,妳定義壹個類是飛機,那這個飛機在封裝的過程就有飛。降落等這功能(函數)。妳想要用飛這個功能(函數)的時候,妳只需調用飛機這個類“飛”這個成員函數。

  • 上一篇:基於數控機床的PLC技術的研究
  • 下一篇:微信小程序如何獲取用戶收貨地址
  • copyright 2024編程學習大全網