#小程序推广渠道

【转】编写高质量代码改善C#程序的157个建议——建议118:使用SecureString保存密钥等机密字符串

 建议118:使用SecureString保存密钥等机密字符串托管代码中的字符串是一类特殊的对象,它们不可用被改变。每次使用System.String类张的方法之一时,或者使用此类型进行运算时(如赋值、拼接等),都要在内存中创建新的字符串对象,也就是为该新对象分配新的空间。这就带来了两个问题:原来的字符串是不...

【转】编写高质量代码改善C#程序的157个建议——建议117:使用SSL确保通信中的数据安全

 建议117:使用SSL确保通信中的数据安全SSL(SecureSocketLayer)最初是由NetScape公司设计的,用于Web安全的网络协议。目前它已经广泛应用到各类网络传输通信中了。SSL利用数字证书技术(非对称加密),保证了通信过程中的唯一性、不可篡改性、不可抵赖性。SSL通道原理图:非对称加密中...

【转】编写高质量代码改善C#程序的157个建议——建议116:避免用非对称算法加密文件

 建议116:避免用非对称算法加密文件MD5值或者说HASH值是一种不可逆的算法。如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法了。对称算法示意图:在对称算法中,首先需要发送方和接收方协定一个密钥K。K可以是一个密钥对,但必须是加密密钥和解密密钥之间能相互推算出来的。在最简单也是最常用的对称算...

【转】编写高质量代码改善C#程序的157个建议——建议115:通过HASH来验证文件是否被篡改

 建议115:通过HASH来验证文件是否被篡改 MD5算法作为一种最通用的HASH算法,也被广泛用于文件完整性的验证上。文件通过MD5-HASH算法求值,总能得到一个固定长度的MD5值。虽说MD5是一种压缩算法,以致可能存在多个样本空间会得到相同目标字符串的情况,但是这种概率很小。一个1GB的文件,...

【转】编写高质量代码改善C#程序的157个建议——建议114:MD5不再安全

 建议114:MD5不再安全MD5不再安全不是就算法本身而言的。如果从可逆性的角度出发,MD5值不存在被破解的可能性。MD5被广泛应用于密码验证和消息完整性验证。假设新注册一个用户,当注册用户的密码第一次被存储到数据库时,往往会将其转换为MD5值存储:staticstringGetMd5Hash(string...

【转】编写高质量代码改善C#程序的157个建议——建议113:声明变量前考虑最大值

 建议113:声明变量前考虑最大值假设正在开发一个工资系统,其中一个模块负责处理加薪。代码如下:staticvoidMain(string[]args){ushortsalary=65534;salary=(ushort)(salary+1);Console.WriteLine(string.Format("...

【转】编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间

 建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”。那么,什么东西算得上是一个对象呢?对象有属性、有行为。以动物为例,比如猫(Cat)。Cat可以有Name,这就是属性;Cat有一个恶习ScratchSof...

【转】编写高质量代码改善C#程序的157个建议——建议111:避免双向耦合

 建议111:避免双向耦合双向耦合是指两个类型之间相互引用。下面的代码是一种典型的双向耦合:classA{privateBb;publicvoidMethodA(){b.MethodB();}}classB{privateAa;publicvoidMethodB(){a.MethodA();}}双向耦合在同一...

【转】编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum

 建议110:用类来代替enum枚举(enum)用来表示一组固定的值。例如,为了表示星期信息,我们可以定义枚举Week:enumWeek{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}枚举最大的优点在于它的类型是值类型。相比较引用类型来说,它...

【转】编写高质量代码改善C#程序的157个建议——建议109:谨慎使用嵌套类

 建议109:谨慎使用嵌套类使用嵌套类的原则是:当某类型需要访问另一个类型的私有成员时,才将它实现为嵌套类。一个典型的例子是在实现集合时,要为集合实现迭代器,这时用到了嵌套类。代码如下所示:publicclassArrayList:IList,ICollection,IEnumerable,ICloneabl...

【转】编写高质量代码改善C#程序的157个建议——建议108:将类型标识为sealed

 建议108:将类型标识为sealedsealed能够阻止类型被其他类型继承。代码如下:sealedclassSampleClass{}classOtherClass:SampleClass{}这段代码提示:“无法从密封类型SampleClass派生。”将类型修饰为sealed能够有效...

【转】编写高质量代码改善C#程序的157个建议——建议107:区分静态类和单例

 建议107:区分静态类和单例有一种观点认为:静态类可以作为单件模式的一种实现方式。事实上,这是不妥当的。按照传统的观点来看,单例是一个实例对象。而静态类并不满足这一点。静态类也直接违反面向对象三大特性的两项:继承和多态。无法让一个静态类从其它类型继承的实例如下:interfaceISample{}stati...

【转】编写高质量代码改善C#程序的157个建议——建议106:为静态类添加静态构造函数

 建议106:为静态类添加静态构造函数静态类可以拥有构造方法,这就是静态构造方法。静态构造方法与实例构造方法比较有几个自己的特点:只被执行一次,且在第一次调用类成员之前被运行时执行。代码无法调用它,不像实例构造方法使用new关键字就可以被执行。没有访问标识符。不能带任何参数。 使用静态构造方法的好处...

【转】编写高质量代码改善C#程序的157个建议——建议104:用多态代替条件语句

 建议104:用多态代替条件语句假设要开发一个自动驾驶系统。在设计之初,此自动驾驶系统拥有一个驾驶系统命令的枚举类型:enumDriveCommand{Start,Stop}当前该枚举存在两个命令:开始、停止。又假设有一个驾驶方法可以处理车辆接收到的指令。一开始我们可能像下面这样编码:staticvoidMa...

【转】编写高质量代码改善C#程序的157个建议——建议103:区分组合和继承的应用场合

 建议103:区分组合和继承的应用场合 继承所带来的多态性虽然是面向对象的一个重要特性,但这种特性不能在所有的场合中滥用。继承应该被当做设计架构的有用补充,而不是全部。组合不能用于多态,但组合使用的频率却要远远高于继承。继承UML图如下:对应的代码如下:abstractclassStream{//省...
首页上一页...144145146147148...下一页尾页