IDesign 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.

之三

时间: 2025-01-02 14:13:20

IDesign C#编程规范(二)的相关文章

IDesign C#编程规范(之四)

编程|规范 续之三,本文是IDesign C#编程规范的第三章. 3 项目设置和项目结构 Project Settings and Project Structure 1. 总是以4级警告建立项目(图略). Always build your project with warning level 4 2. 在发布版中将警告作为错误(注意这不是VS.NET的缺省设置)(图略). Treat warning as errors in Release build (note that this is

IDesign C#编程规范(一)

编程|规范 IDesign发布了C#编程规范,小鸡射手从Only4Gurus下载浏览后决心抽时间翻译一下,以更好地学习. 目录内容如下: 1 命名规则和风格 Naming Conventions and Style 2 编码惯例 Coding Practices 3 项目设置和结构 Project Settings and Structure 4 Framework特别指导 Framework Specific Guidelines 4.1 数据访问 Data Access 4.2 ASP.NE

C# 编程规范

编程|规范 C# 编码规则 一.命名 1.用pascal规则来命名方法和类型. public class TextBox { public void DataBind() { } } 2.用camel规则来命名局部变量和方法的参数. string userName; public AddUser(string userId, byte[] password); 3.所有的成员变量前加前缀 _ public class Database { private string _connectionSt

IDesign C#编码规范(之三)

编码|规范 续之二,IDesign C#编码规范之三. 34. 避免使用new继承修饰符,而是使用override. Avoid using the new inheritance qualifier. Use override instead. 35. 对非密封类总是将public和protected方法标记为virtual. Always mark public and protected methods as virtual in a non sealed class. 36. 除非涉及到

PB编程规范

作者:达通兴电脑科技公司(www.study01job.com) 郭宝利 一.PB编程规范综述 二.PB对象命名规范 三.PB变量命名 四.PB程序规范 五.PB控件编程规范 六.PB的用户反馈 七.提高PB程序的健壮性 八.PB的文档标准 九.PB的错误处理

Oracle PL/SQL编程规范指南

一.PL/SQL编程规范之大小写 就像在SQL中一样,PL / SQL中是不区分大小写的.其一般准则如下: 关键字(BEGIN, EXCEPTION, END, IF THEN ELSE,LOOP, END LOOP).数据类型(VARCHAR2, NUMBER). 内部函数(LEAST, SUBSTR)和用户定义的子程序(procedures, functions,packages),使用大写. 变量名以及SQL中的列名和表名,使用小写. 二.PL/SQL编程规范之空白 空白(空行和空格)在P

IOS团队编程规范

本文讲的是IOS团队编程规范,需求是暂时的,只有变化才是永恒的,面向变化编程,而不是面向需求编程. 不要过分追求技巧,降低程序的可读性. 简洁的代码可以让bug无处藏身.要写出明显没有bug的代码,而不是没有明显bug的代码. 先把眼前的问题解决掉,解决好,再考虑将来的扩展问题. 一.命名规范 1.统一要求 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释,使用全称,不使用缩写. 2.类名 大驼峰式命名:每个单词的首字母都采用大写字母 ==例:== MFHomePageViewCo

android 编程规范 谁那里有啊

问题描述 android 编程规范 谁那里有啊 谁那里有android 编程规范 google的英文的也行?谁有指教一下呗,O(∩_∩)O谢谢 解决方案 http://blog.csdn.net/huangyabin001/article/details/30717841 解决方案二: http://blog.csdn.net/wwj_748/article/details/42347283 参考这个. 解决方案三: https://github.com/ribot/android-guidel

指针-好的编程规范有哪些,希望大家集思广益

问题描述 好的编程规范有哪些,希望大家集思广益 比如在动态为一个指针分配完内存后,使用这块内存,最后通过这个指针释放这块内存,这时候比较好的规范是在释放完内存之后将指针置为NULL. 再比如刚刚声明一个指针的时候,最好显式将它初始化为NULL. 类似这样的小细节但是很重要的编程规范,当然其他的任何形式的好的编程规范都希望大家能说一下,供大家互相学习! 解决方案 看<林锐-高质量C.C++编程指南> 就你现在的水平,不需要什么集思广益和讨论,把那本教程看明白足够你学的了. 解决方案二: 参考:h