程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> IDesign C#編程規范(二)

IDesign C#編程規范(二)

編輯:關於C語言
續之一,小雞射手接著翻譯了IDesign編碼規范的第二章前部。

2 編碼慣例
Coding Practices


1. 避免在一個文件中放多個類。
Avoid putting multiple classes in a single file.
2. 一個文件應該只對一個命名空間提供類型。避免在同一文件中有多個命名空間。
A single file should only contribute types to a single namespace. Avoid having multiple namespaces in the same file.
3. 避免文件長度超過500行(除了機器自動產生的代碼)。
Avoid files with more than 500 lines (excluding Machine-generated code).
4. 避免方法定義超過25行。
Avoid methods with more than 25 lines.
5. 避免超過5個參數的方法。使用結構傳遞多個參數。
Avoid methods with more than 5 arguments. Use structures for passing multiple arguments.
6. 每行應該不超過80個字符。
Lines should not exceed 80 characters.
7. 不要手工編輯任何機器生成的代碼。
Do not manually edit any Machine generated code.
a) 如果修改機器生成的代碼,修改代碼格式和風格以符合本編碼標准。
If modifying Machine generated code, modify the format and style to match this coding standard.
b) 盡可能采用partial類以分解出需要維護的部分。
Use partial classes whenever possible to factor out the maintained portions.
8. 避免對顯而易見的內容作注釋。
Avoid comments that explain the obvious.
a) 代碼應該是自解釋的。 由可讀性強的變量和方法組成的好的代碼應該不需要注釋。
Code should be self explanatory. Good code with readable variable and method names should not require comments.
9. 僅對操作的前提、內在算法等寫文檔。
Document only Operational assumptions, algorithm insights and so on.
10. 避免方法級的文檔。
Avoid method-level documentation.
a) 對API文檔采用大量的外部文檔。
Use extensive external documentation for API documentation.
b) 方法級注釋僅作為對其他開發人員的提示。
Use method-level comments only as tool tips for other developers.
11. 決不要硬編碼數值, 而總是聲明一個常量。
Never hard-code a numeric value, always declare a constant instead.
12. 僅對本來就是常量的值使用const修飾符,例如一周的天數。
Use the const directive only on natural constants such as the number of days of week.
13. 避免對只讀變量使用const修飾符。在此情況下,采用readonly修飾符。
Avoid using const on read-only variables. For that, use the readonly directive.
public class MyClass
{
public readonly int Number;
public MyClass(int someValue)
{
Number = someValue;
}
public const int DaysInWeek = 7;
}
14. 對任何假設采用assert。
Assert every assumption.
a) 平均地,每5行中就有一行是斷言。
On average, every fifth line is an assertion.
using System.Diagnostics;
object GetObject()
{
object obj = GetObject();
Debug.Assert(obj != null);
15. 每行代碼應該經過白盒測試。
Every line of code should be walked through in a 搘hite box?testing manner.
16. 僅捕獲已經顯式處理了的異常。
Only catch exceptions for which you have explicit handling.
17. 在拋出異常的catch語句中,總是拋出最初異常以保持最初錯誤的堆棧位置。
In a catch statement that throws an exception, always throw the original exception to maintain stack location of original error.
catch(Exception exception)
{
MessageBox.Show(exception.Message);
throw; //Same as throw exception;
}
18. 避免將錯誤代碼作為方法的返回值。
Avoid error code as methods return values.
19. 避免定義自定義的異常類。
Avoid defining custom exception classes.
20. 定義自定義異常時:
When defining custom exceptions:
a) 從ApplicationException繼承
Derive the custom exception from ApplicationException.
b) 提供自定義的序列化。
Provide custom serialization.
21. 避免在一個程序集中有多個Main()方法。
Avoid multiple Main() methods in a single assembly.
22. 僅對最需要的類型標記為public,其他的標記為internal。
Make only the most necessary types public, mark others as internal.
23. 避免采用frIEnd程序集,因為這樣增加了程序集間的耦合度。
Avoid friend assemblIEs, as it increases inter-assembly coupling.
24. 避免使用依賴於從特定位置運行的程序集的代碼。
Avoid code that relIEs on an assembly running from a particular location.
25. 盡量減少應用程序集(客戶端EXE程序集)的代碼。采用類庫而不要包含業務邏輯層代碼。
Minimize code in application assemblies (EXE client assemblies). Use class librarIEs instead to contain business logic.
26. 避免對枚舉提供明確的值。
Avoid providing explicit values for enums .
//Correct
public enum Color
{
Red,Green,Blue
}
//Avoid
public enum Color
{
Red = 1,Green = 2,Blue = 3
}
27. 避免對枚舉指定類型。
Avoid specifying a type for an enum.
//Avoid
public enum Color : long
{
Red,Green,Blue
}
28. if語句總是使用括號,即使它包含一句語句。
Always use a curly brace scope in an if statement, even if it conditions a single statement.
29. 避免使用?:條件算符。
Avoid using the trinary conditional Operator.
30. 避免在布爾條件語句中調用函數。賦值到局部變量並檢查它們的值。
Avoid function calls in Boolean conditional statements. Assign into local variables and check on them:
bool IsEverythingOK()
{...}
//避免:
//Avoid:
if(IsEverythingOK())
{...}
//采用:
//Instead:
bool ok = IsEverythingOK();
if(ok)
{...}
31. 總是使用從0開始的數組。
Always use zero-based arrays.
32. 總是使用一個for循環顯式地初始化一個引用類型的數組。
Always explicitly initialize an array of reference types using a for loop.
public class MyClass
{}
MyClass[] array = new MyClass[100];
for(int index = 0; index < array.Length; index++)
{
array[index] = new MyClass();
}
33. 不用提供public或protected成員變量,而是使用屬性。
Do not provide public or protected member variables. Use propertIEs instead.

之三
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved