吐槽一万遍,买的最后悔的一本,没有之一,大量篇幅抄袭<高性能javascript>,我记得还有部分抄袭<javascript精粹>,<javascript模式>有没有抄我就不知道了,内容章节安排也很不合理.…
逗号运算符比较怪异.如    var a =(1,2,3,4);alert(a);// 4      var a = 1,2,3,4;//报错 注意a++和++a的差别,变量在参与运算中不断地变化.var a; a = (a++) + (++a) - (a++) - (a++); 在if语句中禁止使用function语句,虽然大多数的浏览器都允许在if语句中使用function,但它们在解析function语句的处理各不相同,因此造成了可移植性方面的问题.一个语句不能以一个函数表达式开头(?).…
建议136:优先使用后缀表示已有类型的新版本 加后缀在某些情况下是很奇怪的形式,我们都不愿意看到OrderProcessor2这样的类型.但是,有的时候仍旧有必要这样做.最典型的是FCL中关于数字证书操作的X509Certificate和X509Certificate2这两个类型. X509Certificate类型最早出现在FCL 1.0/1.1版本中,后来在FCL2.0版本中出现了一个后续的版本:类型X509Certificate2.这个后续的版本不是一个先前版本的子类,而是作为替代版本出现…
编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start() { // 判断线程状态,必须是为启动状态 /** * This method is not invoked for the main method thread or "system" * group threads created/set up by the VM. Any new…
2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实,人和代码一样都在成长,都在变好其中.有时候仅仅是实现功能的编程,长进不了呀. 博客提供的优点就能够交流,讨论的学习方法你们应该知道. 在这里,我会陆陆续续的进行对<编写高质量代码改善java程序的151个建议>看法,希望大家点击交流. 正文 看这本书原因   1.项目做的仅仅是实现功能,然而没有…
建议150:使用匿名方法.Lambda表达式代替方法 方法体如果过小(如小于3行),专门为此定义一个方法就会显得过于繁琐.比如: static void SampeMethod() { List<string> list=new List<string>(){"Mike","Rose","Steve"}; var mike = list.Find(new Predicate<string>(HaveLength…
建议140:使用默认的访问修饰符(我不太赞成作者的这个观点,这样减少的代码基本可以忽略不计,但是,如果把访问修饰符补充完整,反而会使代码更加易读.我认为自己写代码时应该尽量加上访问修饰符,看别人写的代码时能看懂就可以了.以下是作者的观点) 代码整洁的要求之一,就是尽量减少代码,我们从使用默认的访问修饰符开始. 类型成员的修饰符默认是private,即下面的代码: class SampleClass { string name; void SampleMethod(){} } 等同于: class…
建议120:为程序集指定强名称 虽然强名称在设计之初有防止被未授权的第三方软件非法执行程序的作用,但是因为它的破解方法并不难,所以现在强名称更多的意义在于它可以避免出现“DLL HELL”现象. “DLL HELL”是指多个应用程序可能调用同一个DLL的情况.在应用程序使用过程中,常常会碰到这样一种情况:应用程序需要更新.在更新过程中,很有可能将会和别的应用程序公用的DLL也更新了.在以前,这可能会导致其他应用程序无法继续正常工作. 强名称原则上扩大了DLL的唯一标识,这个标识包括:程序集名称.…
建议118:使用SecureString保存密钥等机密字符串 托管代码中的字符串是一类特殊的对象,它们不可用被改变.每次使用System.String类张的方法之一时,或者使用此类型进行运算时(如赋值.拼接等),都要在内存中创建新的字符串对象,也就是为该新对象分配新的空间.这就带来了两个问题: 原来的字符串是不是还在内存当中? 如果在内存当中,那么机密数据(如密码)该如何保存才足够安全? 针对第一个问题,我们来看一段代码: static void Method1() { string str =…
建议114:MD5不再安全 MD5不再安全不是就算法本身而言的.如果从可逆性的角度出发,MD5值不存在被破解的可能性. MD5被广泛应用于密码验证和消息完整性验证.假设新注册一个用户,当注册用户的密码第一次被存储到数据库时,往往会将其转换为MD5值存储: static string GetMd5Hash(string input) { using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()) { return Bi…