代码改变世界

随笔分类 -  FxCop翻译

[FxCop.性能规则]1. 避免调用需要Unboxing

2005-08-10 21:20 by Colin Han, 1936 阅读, 收藏, 编辑
摘要: 1. 避免调用需要Unboxing 翻译概述: 在Java和C#中,所有的数据类型都是从System.Object继承来的,包括数值型类型。这样的设计使我们可以用相同的方式处理引用类型和值类型。从而为我们提供了很大的灵活性,实现更加通用的算法。 但是,将所有数据都放在堆中进行管理无疑会降低程序的性能。因此,C#(包括Java)中都将数据类型分为值类型和引用类型,在常规状态下,值类型局部变量... 阅读全文

[FxCop.设计规则]16. 不要在封闭类中声明虚成员

2005-08-08 20:04 by Colin Han, 1007 阅读, 收藏, 编辑
摘要: 16. 不要在封闭类中声明虚成员 翻译概述: 一条比较无聊的规则,并且VB.NET和C#编译器都已经内嵌的禁止代码违反这条规则。 引起的原因: 一个公共的封闭类型中包含虚成员。这条规则不检查delegate类型。因为delegate肯定符合这条规则。 描述: 一个类型声明虚成员是为了它的继承类型可以重载虚成员的实现。但是,你不能继承一个封闭类型。因此声明封闭类型的虚成员是没有意义的。 ... 阅读全文

[FxCop.设计规则]15. 不要在范型类中声明静态成员

2005-08-01 20:37 by Colin Han, 1979 阅读, 收藏, 编辑
摘要: 15. 不要在范型类中声明静态成员 翻译概述: 又是一个关于范型的规则。据说微软公司开始很反对将范型引入到C#语言中来,认为范型会严重的影响代码的易理解性。但是范型所提供的强大功能,以及它确确实实提高了开发效率和降低了维护成本。在.NET 2.0中,微软不得不将范型的概念引入到C#中来。 但是范型过于强大的语法能力确确实实影响了代码的可读性,因此微软在C#中对标准C++中的范型语法作了裁减... 阅读全文

[FxCop.设计规则]14. 不要在封闭类中定义保护型成员

2005-07-10 19:05 by Colin Han, 1859 阅读, 收藏, 编辑
摘要: 14. 不要在封闭类中定义保护型成员 翻译概述: 使用Sealed声明密封类可以提高程序的执行效率(详细内容可以看:sealed能提高性能),因此比较推荐将不再需要继承的类型声明为密封类型。 当一个类型被声明为密封类型后,在其中定义保护型成员就变得没有意义了。同时,这样做可能会增加将来的维护成本(见本文中的例外段)。 个人认为,密封类型并没有被编译器优化从而增加程序的效率(使用IL... 阅读全文

[FxCop.设计规则]13. 定义自定义属性参数的访问属性

2005-06-28 00:01 by Colin Han, 1788 阅读, 收藏, 编辑
摘要: 13. 定义自定义属性参数的访问属性 翻译概述: 一个比较无聊的规则,实在看不出在什么情况下,一个开发者会做出违反这条规则的设计。没有别的内容,只是说应该为自定义特性的构造函数中的参数提供一个相关的属性去读取它们的值。 一个让我比较费解的规则,即没有看出其中所传达的设计思想,也没发现任何优秀的设计技巧。 原文引用: Define accessors for attribute ar... 阅读全文

[FxCop.设计规则]12. 不要捕获所有异常

2005-06-20 19:14 by Colin Han, 2549 阅读, 收藏, 编辑
摘要: 12. 不要捕获所有异常 翻译概述: 在传统的C++中,对于大多数错误逻辑使用返回错误码的方式来定义。从而使程序逻辑中充斥了大量的条件判断逻辑,严重的影响了代码的可维护性和美观。而异常机制为开发提供了一套相对独立和易管理的错误处理方式,因此,在目前的大多数程序设计语言中都提供了对异常的支持,包括C++。 但是,异常属于一个脱离程序逻辑之外的控制流程,因此,对异常的滥用很多时候反而会降低程序... 阅读全文

[FxCop.设计规则]11. 不应该使用默认参数

2005-06-14 23:02 by Colin Han, 1819 阅读, 收藏, 编辑
摘要: 11. 不应该使用默认参数翻译概述: 在MSDN中对于调用使用默认参数的函数的说明如下: .NETFramew... 阅读全文

[FxCop.设计规则]10. 类型应该被声明在命名空间中

2005-06-09 20:15 by Colin Han, 2275 阅读, 收藏, 编辑
摘要: 10. 类型应该被声明在命名空间中 翻译概述: 命名空间的概念在C++中已经存在,但是对于大多数C++程序员来说,命名空间却很少被用到,C++程序员更喜欢在一组相关的类型前面添加相同的缩写,当项目变得越来越大时,这种传统的处理方式就很难适应软件系统规模。因此,在新的面向对象开发语言中无一例外的强化了命名空间的概念。 毋庸置疑,将类型放在全局命名空间中是一个很不好的设计。FxCop设计规则的... 阅读全文

[FxCop.设计规则]9. 事件句柄声明不恰当

2005-06-08 18:20 by Colin Han, 1929 阅读, 收藏, 编辑
摘要: 9. 事件句柄声明不恰当翻译概述: 微软在.NET中使用了一种新的数据类型——委托,通过委托实现了动态挂接和挂断程序执行逻辑,从而降低了模块之间的耦合度,提高了类型的可重用性。在.NET中,事件就使用了委托来实现。但是委托为我们提供了灵活性的同时,也为滥用提供了很大的便利性。因此,在本文中,微软建议了一个比较标准的事件声明格式,从而减低程序员或用户了解设计的难度。 在目前的程序设计语言中... 阅读全文

[FxCop.设计规则]8. 也许参数类型应该是基类型

2005-06-07 21:45 by Colin Han, 1553 阅读, 收藏, 编辑
摘要: 8. 也许参数类型应该是基类型 翻译概述: 这条规则中,微软建议为了提高代码的可重用性,如果可能,尽量将参数类型修改为它的基类型。但是,这条规则并不是一条强制规则,在最后,微软提到,如果需要,使用子类型作为参数可以提高代码的健壮性。 关于这一点,译者比较趋向于尽量使用子类型作参数的类型,因为这样可以减少函数被滥用的情况(个人认为滥用比起重用的优先级更高一下)。而且,如果将来发现确实需要,我... 阅读全文

[FxCop.设计规则]4. 避免太多的范型参数

2005-06-02 19:43 by Colin Han, 2149 阅读, 收藏, 编辑
摘要: 4. 避免太多的范型参数 原文引用: Avoid excessive parameters on generic types TypeName: AvoidExcessiveParametersOnGenericTypes CheckId: CA1005 Category: Microsoft.Design Message Level: Error ... 阅读全文

[FxCop.设计规则]7. 集合类应该实现泛型接口

2005-05-29 17:16 by Colin Han, 1881 阅读, 收藏, 编辑
摘要: 7. 集合类应该实现泛型接口翻译概述:这条规则中提到了.NET framework 2.0中新引入的技术“范型”,.NET Framework提供了很多使用范型实现的类,其中最主要的就是关于集合的类型。使用这些类型,我们不再需要定义太多的强制类型安全的集合类型。但是往往我们为了满足独特的需求,必须建立一些自定义的集合类型。如何让他们.NET Framework中提供的范型集... 阅读全文

[FxCop.设计规则]6. 避免使用输出参数

2005-05-28 18:32 by Colin Han, 2298 阅读, 收藏, 编辑
摘要: 1. 避免使用输出参数 原文引用: Avoid out parameters TypeName: AvoidOutParameters CheckId: CA1021 Category: Microsoft.Design Message Level: Warning Certainty: 50% Breaking Change: Br... 阅读全文

[FxCop.设计规则]5. 避免命名空间中包含太少的类型

2005-05-24 21:41 by Colin Han, 1536 阅读, 收藏, 编辑
摘要: 5. 避免命名空间中包含太少的类型 原文引用: Avoid namespaces with few types TypeName: AvoidNamespacesWithFewTypes CheckId: CA1020 Category: Microsoft.Design Message Level: Warning Certainty: 50% ... 阅读全文

[FxCop.设计规则] 3. 避免定义空的接口

2005-05-24 21:38 by Colin Han, 1263 阅读, 收藏, 编辑
摘要: 3. 避免定义空的接口 原文引用: Avoid empty interfaces TypeName: AvoidEmptyInterfaces CheckId: CA1040 Category: Microsoft.Design Message Level: Warning Certainty: 90% Breaking Change: B... 阅读全文

[FxCop.设计规则]2. 程序集应该拥有一个有效的强名称

2005-05-24 21:32 by Colin Han, 1085 阅读, 收藏, 编辑
摘要: 2. 程序集应该拥有一个有效的强名称 原文引用: Assemblies should have valid strong names TypeName: AssembliesShouldHaveValidStrongNames CheckId: CA2210 Category: Microsoft.Design Message Level: Cri... 阅读全文

[FxCop.设计规则]1. 抽象类不应该拥有构造函数

2005-05-24 21:03 by Colin Han, 1437 阅读, 收藏, 编辑
摘要: 1. 抽象类不应该拥有构造函数 原文引用: http://www.gotdotnet.com/team/fxcop/docs/rules.aspx?version=unstable&url=/Design/AbstractTypesShouldNotHaveConstructors.htmlAbstract types should not have constructors ... 阅读全文