C# 编码标准(二)

  先八卦一下,昨天写了C# 编码标准(一),得到了@h82258652的补充,感到非常欣慰,一是感觉他的观点扩展了我的视野,丰富了我的看法,所以更坚定了我继续写博客的想法,由于是五笔打字,经常不写东西,有些字的字根都忘记了,所以通过写博客也可以多记些字根,二是决定把多年的一些东西分享出来,一起沟通交流,这样也能够共同进步,共同成长。

一、编码实践

1、一个文件的代码避免超过500行。当然这个在特殊情况下也是可以的,只是一个建设吧!

2、方法要避免超过25行。当然这个在特殊情况下也是可以的,只是一个建设吧!

3、每行不要超过80个字符。

4、不要手动编辑任何机器代码。

5、避免对显而易见的代码作注释,代码应该是自解释的,由可读性强的变量和方法组成的好的代码应该不需要注释。

6、除了“0”与“1”, 不要用数值硬编码,声明一个常量代替。

7、仅对本来就是常量的值使用const修饰符,例如一周的天数。

8、避免对只读的变更使用const,在此情况下,使用readonly修饰符:

public class MyClass
{
     public const int DaysInWeek = 7;
     public readonly int Number;

     public MyClass(int someValue)
     {
           Number = someValue;
     }
}    

9、仅捕捉你需要显式处理的异常。

10、在抛出异常的catch语句中,总是抛出最初异常(或由最初异常构建的另一个异常),以保持最初错误的堆栈位置。

第一种:
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
    throw;     // 等同于抛出原始异常
}
第二种:
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
    throw ex;     // 这样会吃掉异常点,重置堆栈中的异常起始点
}
第三种:
catch
{
    throw;  // 可捕获所有类型的异常
}
第四种:
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
    throw new Exception("经过进一步包装的异常", ex);  // 经过进一步包装的异常,第二个参数保存了原来的异常信息
}
推荐使用第一种用法

11、最小化应用程序的程序集代码(即EXE客户端程序集)。用类库来包含业务逻辑。

12、避免显式类型转换。使用as操作符防御性地进行转换类型:

Dog dog = new GermanShepherd();
GermanShepherd shepherd = dog as GermanShepherd;
if (shepherd != null)
{
   ...
}

13、调用委托前始终检查委托是否为空。

14、不要假定一种类型能支持某个接口。防御性地为接口查询是否支持该接口。

SomeType obj1;
IMyInterface obj2;

obj2 = obj1 as IMyInterface;
if(obj2 != null)
{
   obj2.Method1();
}
else
{
    ...
}

15、永远不要硬编码将呈现给用户的字符串,而是使用资源。

16、永远不要硬编码布署时可能修改的字符串,例如连接字符串。

17、用String.Empty代替"":

// 避免
string name = "";

//推荐
string name = String.Empty;

18、当频繁地使用一个字符串超过4次,使用StringBuilder,不要使用string。

19、当提供一个静态成员变量时,总是提供一个静态构造函数。

20、除非在switch语句中跳转,否则永远不要用goto语句。

21、不要在使用泛型的代码中对System.Object进行类型转化。使用约束或as运算符:

class SomeClass
{}
// 避免
class MyClass<T>
{
   void SomeMethod(T t)
   {
        object temp = t;
        SomeClass obj = (SomeClass)temp;
    }
}

// 建议
class MyClass<T> where T : SomeClass
{
    void SomeMethod(T   t)
    {
        SomeClass obj = t;
    }
}

22、不要在泛型接口中定义约束条件。接口级别的约束常常可以用强类型代替:

public class Customer
{...}

// 避免
public interface IList<T> where T : Customer
{...}
// 建议
public interface ICustomerList : IList<Customer>

23、lock锁私有只读静态对象。不要使用lock (this)lock (typeof (MyType))lock ("myLock")等

时间: 2024-10-27 11:27:33

C# 编码标准(二)的相关文章

(转)视频编码标准汇总及比较

MPEG-1 类型:Audio&Video 制定者:MPEG(Moving Picture Expert Group) 所需频宽:2Mbps 特性:对动作不激烈的视频信号可获得较好的图像质量,但当动作激烈时,图像就会产生马赛克现象.它没有定义用于额外数据流进行编对码的格式,因此这种技术不能广泛推广.它主要用于家用VCD,它需要的存储空间比较大. 优点:对动作不激烈的视频信号可获得较好的图像质量. 缺点:当动作激烈时,图像就会产生马赛克现象.它没有定义用于额外数据流进行编对码的格式,因此这种技术不

视频编码标准简介

文章转自:http://www.cnblogs.com/CoderTian/p/8261727.html 1.视频编码发展简史 1988 年CCITT 通过了"p×64Kbps(p=1,2,3,4,5,,,,30) "视像编码标准 H.261 建议, 被称为视频压缩编码的一个里程碑.从此, ITU-T. ISO 等公布的基于波形的一系列视频编码标准的编码方法都是基于 H.261 中的混合编码方法. 1986 年,ISO 和 CCITT 成立了联合图像专家组(JPEG,Joint Pho

jQuery的编码标准和最佳实践

加载jQuery 1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢.点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地址. <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script>window.jQuery

零基础JavaScript编码(二)

任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM中的内容 任务描述 参考以下示例代码,页面加载后,将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示在网页上 <!DOCTYPE html> <html> <head> <meta charset=&

[C语言]Unicode编码(二)-中文字符刷选

Unicode编码(二)-中文字符刷选 1,UTF-8编码中三字节中文字符的刷选方法如下: int chinese_filter(unsigned char one, unsigned char two ) {     int flag = -1;     if ( one >= 0x4E && one < 0x9F )     {         flag = 1;     }     else if ( one == 0x9F && two <= 0x

C#编码标准66条

http://www.educity.cn/develop/1389490.html C#编码标准66条 1.  避免将多个类放在一个文件里面. 2.  一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面. 3.  一个文件最好不要超过500行的代码(不包括机器产生的代码). 4.  一个方法的代码长度最好不要超过25行. 5.  避免方法中有超过5个参数的情况.使用结构来传递多个参数. 6.  每行代码不要超过80个字符. 7.  不要手工的修改机器产生的代码. a)  如果需

视频编解码学习之四:视频处理及编码标准

1.视频处理 在视频压缩前后,对视频图像质量增强的操作 视频编解码系统输出的图像主观质量不仅与压缩算法的性能有关,还受视频处理的影响 压缩之前对视频的处理称作预处理(Pre-processing) 压缩之后对视频的处理称作后处理(Post-processing) 2. 预处理 预处理的目的 为了减少原图像受到的损害,保持原图像的重要特征,使原图像能被高效的压缩 噪声污染 光照差 抖动 为了进行视频格式转换 去隔行 空间缩放 帧率转换 去噪声处理 去隔行(Deinterlace) 隔行扫描的视频图

C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)——互动出版网

这篇是计算机类的优质预售推荐>>>><C安全编码标准:开发安全.可靠.稳固系统的98条规则(原书第2版)> 部分目录 译者序 前言 贡献者简介 第1章 预处理器(PRE) 1 1.1 PRE30-C. 不要通过连接创建通用字符名称 1 1.2 PRE31-C. 避免不安全宏参数的副作用 3 1.3 PRE32-C. 不要在类函数的宏调用中使用预处理器指令 7 第2章 声明和初始化(DCL) 9 2.1 DCL30-C. 声明具有正确存储持续期的对象 10 2.2 DCL

四:视频处理及编码标准

第10章 视频处理 1.视频处理 在视频压缩前后,对视频图像质量增强的操作 视频编解码系统输出的图像主观质量不仅与压缩算法的性能有关,还受视频处理的影响 压缩之前对视频的处理称作预处理(Pre-processing) 压缩之后对视频的处理称作后处理(Post-processing) 2. 预处理 预处理的目的 为了减少原图像受到的损害,保持原图像的重要特征,使原图像能被高效的压缩 噪声污染 光照差 抖动 为了进行视频格式转换 去隔行 空间缩放 帧率转换 去噪声处理 去隔行(Deinterlace