Wu.Country@侠缘

勤学似春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日所有亏!

导航

随笔分类 -  30.Effective C#

上一页 1 2 3 下一页

EffectiveC#的翻译文章。 这里可能还有一些关于C#程序设计效率相关的问题。
Effective C# 原则33:限制类型的访问(译)
摘要:Effective C# 原则33:限制类型的访问Item 33: Limit Visibility of Your Types 并不是所有的人都须要知道所有的事。也不是所有的类型须要是公共的。对于每个类型,在满足功能的情况下,应该尽可能的限制访问级别。而且这些访问级别往往比你想像的要少得多。在一个私有类型上,所有的用户都可以通过一个公共的接口来访问这个接口所定义的功能。 让我们回到最根本的情况上... 阅读全文

posted @ 2007-03-24 21:32 Wu.Country@侠缘 阅读(782) 评论(1) 推荐(0) 编辑

Effective C# 原则32:选择小而内聚的程序集(译)
摘要:Effective C# 原则32:选择小而内聚的程序集 Item 32: Prefer Smaller, Cohesive Assemblies 这一原则实际应该取这个名字:“应该创建大小合理而且包含少量公共类型的程序集”。但这太沉长了,所以就以我认为最常见的错误来命名:开发人员总是把所有的东西,除了厨房里水沟以外(译注:夸张说法,kitchen sink可能是个口语词,没能查到是什么意思... 阅读全文

posted @ 2007-03-23 21:17 Wu.Country@侠缘 阅读(727) 评论(1) 推荐(0) 编辑

Effective C# 原则31:选择小而简单的函数(译)
摘要:Effective C# 原则31:选择小而简单的函数Item 31: Prefer Small, Simple Functions 做为一个有经验的程序员,不管你在使用C#以前是习惯用什么语言的,我们综合了几个可以让你开发出有效代码的实际方法。有些时候,我们在先前的环境中所做的努力在.Net环境中却成了相反的。特别是在你试图手动去优化一些代码时尤其突出。你的这些行为往往会阻止JIT编译器进行最有... 阅读全文

posted @ 2007-03-22 20:51 Wu.Country@侠缘 阅读(745) 评论(1) 推荐(0) 编辑

Effective C# 原则30:选择与CLS兼容的程序集(译)
摘要:Effective C# 原则30:选择与CLS兼容的程序集Item 30: Prefer CLS-Compliant Assemblies .Net运行环境是语言无关的:开发者可以用不同的.Net语言编写组件。而且在实际开发中往往就是这样的。你创建的程序集必须是与公共语言系统(CLS)是兼容的,这样才能保证其它的开发人员可以用其它的语言来使用你的组件。 CLS的兼容至少在公共命名上要与互用性靠近... 阅读全文

posted @ 2007-03-21 20:39 Wu.Country@侠缘 阅读(1042) 评论(0) 推荐(0) 编辑

Effective C# 第4章:创建基于二进制的组件(译)
摘要:Effective C# 第4章:创建基于二进制的组件 Chapter 4. Creating Binary Components 随着类的数量增加,创建二进制的组件就变得很平常了:你想分离部分功能。所有不同的是,二进制组件可以让你独立的保存这些离散的功能。创建的组件程序集可以方便的共享逻辑,方便交叉语言 编程,以及方便布置。 在.Net程序就是组件包,每一个程序什么样可以随时更新和发布。你应该... 阅读全文

posted @ 2007-03-20 19:21 Wu.Country@侠缘 阅读(911) 评论(3) 推荐(0) 编辑

Effective C# 原则29:仅在对基类进行强制更新时才使用new修饰符(译)
摘要:Effective C# 原则29:仅在对基类进行强制更新时才使用new修饰符 Item 29: Use the new Modifier Only When Base Class Updates Mandate It 你可以用new修饰符来重新定义一个从基类中继承来的非虚成员。你可以这样做,但并不意味着需要这样做。重新定义非虚方法会导致方法含意的混乱。如果两个相关的类是继承关系,那么很多... 阅读全文

posted @ 2007-03-19 20:15 Wu.Country@侠缘 阅读(829) 评论(3) 推荐(0) 编辑

Effective C# 原则28:避免转换操作(译)
摘要:Effective C# 原则28:避免转换操作 Item 28: Avoid Conversion Operators 转换操作是一种等代类型(Substitutability)间操作转换操作。等代类型就是指一个类可以取代另一个类。这可能是件好事:一个派生类的对象可以被它基类的一个对象取代,一个经典的例子就是形状继承。先有一个形状类,然后派生出很多其它的类型:长方形,椭圆形,圆形以及其它。你可以... 阅读全文

posted @ 2007-03-18 15:26 Wu.Country@侠缘 阅读(810) 评论(2) 推荐(0) 编辑

Effective C# 原则27:避免使用ICloneable(译)
摘要:Effective C# 原则27:避免使用ICloneable Item 27: Avoid ICloneable ICloneable看上去是个不错的主意:为一个类型实现ICloneable接口后就可以支持拷贝了。如果你不想支持拷贝,就不要实现它。但你的对象并不是在一个“真空”的环境中运行,但考虑到对派生类的些影响,最好还是对ICloneable支持。一但某个类型支持ICloneable, ... 阅读全文

posted @ 2007-03-17 11:38 Wu.Country@侠缘 阅读(1410) 评论(7) 推荐(0) 编辑

Effective C# 原则26:用IComparable和IComparer实现对象的顺序关系(译)
摘要:Effective C# 原则26:用IComparable和IComparer实现对象的顺序关系 Item 26: Implement Ordering Relations with IComparable and IComparer 你的类型应该有一个顺序关系,以便在集合中描述它们如何存储以及排序。.Net框架为你提供了两个接口来描述对象的顺序关系:IComparable 和IComparer... 阅读全文

posted @ 2007-03-16 20:09 Wu.Country@侠缘 阅读(1485) 评论(3) 推荐(0) 编辑

Effective C# 原则25: 让你的类型支持序列化(译)
摘要:Effective C# 原则25: 让你的类型支持序列化 Item 25: Prefer Serializable Types 对象的持久是类型的一个核心功能。这是一个在你忽略对它的支持以前,没有人会注意到的基本元素之一。 如果你的类型不能恰当的支持序列化,那么对于把你类的做为基类或者成员的开发人员来说,你会给他们增加很多的工作量。当你的类型不支持序列化时,他们不得不围绕这工作,自己添加实现这... 阅读全文

posted @ 2007-03-15 21:02 Wu.Country@侠缘 阅读(1675) 评论(1) 推荐(0) 编辑

Effective C# 原则24:选择申明式编程而不是命令式编程(译)
摘要:Effective C# 原则24:选择申明式编程而不是命令式编程 Item 24: Prefer Declarative to Imperative Programming 与命令式编程相比,申明式编程可以用更简单,更清楚的方法来描述软件的行为。申明式编程就是说用申明来定义程序的行为,而不是写一些指令。在C#里,也和其它大多数语言一样,你的大多数程序都是命令式的:在程序中写一个方法来定义行为。... 阅读全文

posted @ 2007-03-14 20:05 Wu.Country@侠缘 阅读(1053) 评论(2) 推荐(0) 编辑

Effective C# 原则23:避免返回内部类对象的引用(翻译)
摘要:Effective C# 原则23:避免返回内部类对象的引用 Item 23: Avoid Returning References to Internal Class Objects 你已经知道,所谓的只读属性就是指调用者无法修改这个属性。不幸运的是,这并不是一直有效的。如果你创建了一个属性,它返回一个引用类型,那么调用者就可以访问这个对象的公共成员,也包括修改这些属性的状态。例如: publi... 阅读全文

posted @ 2007-03-13 20:35 Wu.Country@侠缘 阅读(1259) 评论(1) 推荐(0) 编辑

Effective C# 原则22:用事件定义对外接口(译)
摘要:Effective C# 原则22:用事件定义对外接口 Item 22: Define Outgoing Interfaces with Events 可以用事件给你的类型定义一些外部接口。事件是基于委托的,因为委托可以提供类型安全的函数签名到事件句柄上。加上大多数委托的例子都是使用事件来说明的,以至于开发人员一开始都认为委托与事件是一回事。在原则21里,我已经展示了一些不在事件上使用委托的例子。... 阅读全文

posted @ 2007-03-12 20:15 Wu.Country@侠缘 阅读(1325) 评论(2) 推荐(1) 编辑

Effective C# 原则21:用委托来表示回调(译)
摘要:Effective C# 原则21:用委托来表示回调 Item 21: Express Callbacks with Delegates 我:“儿子,到院子里除草去,我要看会书。”斯科特:“爸,我已经打扫过院子了。”斯科特:“爸,我已经把草放在除草机上了。”斯科特:“爸,除草机不能启动了。”我:“让我来启动它。”斯科特:“爸,我做好了。” 这个简单的交互展示了回调。我给了我儿子一个任务,并且他可... 阅读全文

posted @ 2007-03-11 19:35 Wu.Country@侠缘 阅读(1090) 评论(2) 推荐(0) 编辑

Effective C# 原则20:明辨接口实现和虚函数重载的区别(译)
摘要:Effective C# 原则20:明辨接口实现和虚函数重载的区别Item 20: Distinguish Between Implementing Interfaces and Overriding Virtual Functions 粗略的看一下,感觉实现接口和虚函数重载是一样的。你定义了一些对象,但是这些对象是在另一个类型里申明的。你被第一感觉骗了,实现接口与虚函数重载是完全不同的。在接口... 阅读全文

posted @ 2007-03-10 19:54 Wu.Country@侠缘 阅读(1327) 评论(4) 推荐(0) 编辑

Effective C# 原则19:选择定义和实现接口而不是继承(译)
摘要:Effective C# 原则19:选择定义和实现接口,而不是继承 Item 19: Prefer Defining and Implementing Interfaces to Inheritance 抽象类在类的继承中提供了一个常规的“祖先”。一个接口描述了一个可以被其它类型实现的原子级泛型功能。各有千秋,却也不尽相同。接口是一种合约式设计:一个类型实现了某个接口的类型,就必须实现某些期望的方... 阅读全文

posted @ 2007-03-09 21:34 Wu.Country@侠缘 阅读(1313) 评论(3) 推荐(0) 编辑

Effective C# 第三章,用C#表达你的设计(译)
摘要:第三章,用C#表达你的设计Chapter 3. Expressing Designs with C# C#语言为你的设计介绍了一种新的语法,你可以选择这种技术让你的设计与其它的开发人员进行交流,这些开发人员可以维护,扩展或者是使用你设计的软件。C#的所有类型都是生存在.Net环境下的,这个环境对于所有类型的兼容性做了一些好的假设。但如果你违反了这些假设,你就增加了类型不能正确工作的可能性。 这些... 阅读全文

posted @ 2007-03-08 20:42 Wu.Country@侠缘 阅读(832) 评论(0) 推荐(0) 编辑

Effective C# 原则18:实现标准的处理(Dispose)模式(译)
摘要:Effective C# 原则18:实现标准的处理(Dispose)模式 我们已经讨论过,处理一个占用了非托管资源对象是很重要的。现在是时候来讨论如何写代码来管理这些类占用的非内存资源了。一个标准的模式就是利用.Net框架提供的方法处理非内存资源。你的用户也希望你遵守这个标准的模式。也就是通过实现IDisposable接口来释放非托管的资源,当然是在用户记得调用它的时候,但如果用户忘记了,析构函数... 阅读全文

posted @ 2007-03-07 22:18 Wu.Country@侠缘 阅读(1132) 评论(5) 推荐(0) 编辑

Effective C# 原则17:装箱和拆箱的最小化(译)
摘要:Effective C# 原则17:装箱和拆箱的最小化Item 17: Minimize Boxing and Unboxing 值类型是数据的容器,它们不具备多太性。另一方面就是说,.Net框架被设计成单一继承的引用类型,System.Object,在整个继承关系中做为根对象存在。设计这两种类型的目的是截然不同的,.Net框架使用了装箱与拆箱来链接两种不同类型的数据。装箱是把一个值类型数据放置... 阅读全文

posted @ 2007-03-06 21:44 Wu.Country@侠缘 阅读(994) 评论(1) 推荐(0) 编辑

Effective C# 原则16:垃圾最小化(译)
摘要:Effective C# 原则16:垃圾最小化Item 16: Minimize Garbage 垃圾回收器对内存管理表现的非常出色,并且它以非常高效的方法移除不再使用的对象。但不管你怎样看它,申请和释放一个基于堆内存的对象总比申请和释放一个不基于堆内存的对象要花上更多的处理器时间。你可以给出一些严重的性能问题,例如应用程序在某个方法内分配过量的引用对象。 你不应该让垃圾回收器超负荷的工作,为了... 阅读全文

posted @ 2007-03-05 20:31 Wu.Country@侠缘 阅读(967) 评论(1) 推荐(0) 编辑

上一页 1 2 3 下一页