Effective C# 原则37:使用标准的配置机制

JerryXia 发表于 , 阅读 (1,935)
我们要寻求一种避免直接写代码的应用程序配置和信息设置方法,我们已经创建了多种不同的策略来存储配置信息。而我们是要寻求一种正确的方法,我们要不断提高和改我们的想法,关于哪里是放置这些信息的好地方。INI文件?这是Windows3.1做的事,配置信息的结构是受限制的,而且在文件名上可能还会与其它程序程序相冲突。注册表?是的,是这个正确的想法,但它也有它的限制。乱七八糟的程序可能会通过在注册表里写一些错误信息来严重破坏计算机。正因为写注册表存在危险,一个应用程序必须有管理员权限来写注册表的一部份... 阅读全文

Effective C# 原则36:利用.Net运行时诊断

JerryXia 发表于 , 阅读 (1,875)
当有问题发生时,它们往往并不是在实验的时候发生的,机器有轻松调试的工具。在很多实际情况中,你不好修正的问题总是发生在用户的机器上,那里没有调试环境,也没有好的方法计算出问题的情况。在实际情况中,有经验的开发人员会创建一个方法,让系统在运行时捕获尽可能多的信息。.Net框架已经包含一些类集合,利用这些集合,你可以做一些通用的调试。而且这些类可以在运行时或者编译时进行配置。如果你利用它们,你就可以轻松的发现在实际运行时的问题。使用框架里已经存在的代码,你可以发送一条诊断信息到一个文件,或者到调... 阅读全文

Effective C# 原则35:选择重写函数而不是使用事件句柄

JerryXia 发表于 , 阅读 (2,082)
很多.Net类提供了两种不同的方法来控制一些系统的事件。那就是,要么添加一个事件句柄;要么重写基类的虚函数。为什么要提供两个方法来完成同样的事情呢?其实很简单,那就是因为不同的情况下要调用为的方法。在派生类的内部,你应该总是重写虚函数。而对于你的用户,则应该限制他们只使用句柄来响应一些不相关的对象上的事件。例如你很了一个很不错的Windows应用程序,它要响应鼠标点下的事件。在你的窗体类中,你可以选择重写OnMouseDown()方法:public class MyForm : Form ... 阅读全文

Effective C# 原则34:创建大容量的Web API

JerryXia 发表于 , 阅读 (2,269)
交互协议的开销与麻烦就是对数据媒体的如何使用。在交互过程中可能要不同的使用媒体,例如在交流中要不同的使用电话号码,传真,地址,和电子邮件地址。让我们再回头来看看上次的订购目录,当你用电话订购时,你要回答售货员的一系列问题:“你可以把第一项填一下吗?” “这一项的号码是123-456” "您想订购多少呢?" "三件" 这样的问题一直要问到销售人员填写完所有的信息为止,例如还要知道你的订购地址,信用卡信息,运送地址,以及其它一些必须的信息来完成这比... 阅读全文

Effective C# 原则33:限制类型的访问

JerryXia 发表于 , 阅读 (1,773)
并不是所有的人都须要知道所有的事。也不是所有的类型须要是公共的。对于每个类型,在满足功能的情况下,应该尽可能的限制访问级别。而且这些访问级别往往比你想像的要少得多。在一个私有类型上,所有的用户都可以通过一个公共的接口来访问这个接口所定义的功能。让我们回到最根本的情况上来:强大的工具和懒惰的开发人员。VS.net对于他们来说是一个伟大的高产工具。我用VS.net或者C#Builder轻松的开发我所有的项目,因为它让我更快的完成任务。其中一个加强的高产工具就是让你只用点两下按钮,一个类就创建了... 阅读全文

Effective C# 原则32:选择小而内聚的程序集

JerryXia 发表于 , 阅读 (1,859)
这一原则实际应该取这个名字:“应该创建大小合理而且包含少量公共类型的程序集”。但这太沉长了,所以就以我认为最常见的错误来命名:开发人员总是把所有的东西,除了厨房里水沟以外(译注:夸张说法,kitchensink可能是个口语词,没能查到是什么意思,所以就直译了。),都放到一个程序集。这不利于重用其中的组件,也不利于系统中小部份的更新。很多以二进制组件形式存在的小程序集可以让这些都变得简单。然而这个标题对于程序集的内聚来说也很醒目的。程序集的内聚性是指概念单元到单个组件的职责程度。聚合组件可以... 阅读全文

Effective C# 原则31:选择小而简单的函数

JerryXia 发表于 , 阅读 (1,962)
做为一个有经验的程序员,不管你在使用C#以前是习惯用什么语言的,我们综合了几个可以让你开发出有效代码的实际方法。有些时候,我们在先前的环境中所做的努力在.Net环境中却成了相反的。特别是在你试图手动去优化一些代码时尤其突出。你的这些行为往往会阻止JIT编译器进行最有效的优化。你的以性能为由的额外工作,实际上产生了更慢的代码。你最好还是以你最清楚的方法写代码,其它的让JIT编译器来做。最常见的一个例子就是预先优化,你创建一个很长很复杂的函数,本想用它来避免太多的函数调用,结果会导致很多问题。... 阅读全文