-
关注本质,而非形式。
-
华而不实的东西中看不中用。
-
花点时间来学习你手边所有隐藏的快捷键。
-
不要浪费时间动手去做可以被自动化的事情。——用Selenium浏览网页,以及用Selenium IDE来记录网站交互的脚本
-
做简单重复的事是在浪费注意力。——用Ruby或者Rake
-
是否应该自动化的关键在于投资回报率和缓解风险。研究性的工作应该放在时间盒里做。——我应该把它自动化吗
-
“不要重复你自己(Dont Repeat Yourself,DRY)”——Andrew Hunt & David Thomas in 《The Pragmatic Programmer》
-
利用虚拟平台使项目依赖标准。(学会使用VMWare来创建工作台)
-
测试代表着软件开发行为中工程式的严谨部分。——TDD测试驱动设计
-
单元测试是一项提升代码质量的极佳实践。各种级别的测试:单元测试、功能测试、集成测试以及用户可用性测试。
-
封装:保护内部域(Field)不受外界的干扰。慎用getter /setter和properties。
-
不再放任默认构造函数(无参数签名的构造函数),应该使得这个对象的消费者能够通过构造函数,建立对象和其消费者的一个合约性的关系,要使这个对象合法且字段得到正确初始化。
-
Singleton是面向对象版本的全局变量。Singleton模式邪恶的地方在于它内藏的状态使它不能被测试。因此不要创建全局变量,即使是对象层次的全局变量。
-
静态方法的过度使用如何显示一个人的过程式思维方式,如果你发现自己使用很多的静态方法,你就应该检查一下你的抽象是否正确。
-
静态方法还有另外一个陷阱:Java允许你通过对象实例来调用它们,这样会引起混淆,因为你不能覆盖静态方法。
-
只开发当下需要的东西。不沉溺于过度开发和预想开发。如无必要,勿增复杂度。
-
SOA是一个把迥异的两个应用程序绑定在一起,使之能够相互通信的架构风格。
-
致力本质复杂性,去除附属复杂性。——亚里士多德的“事物的本质性质和附属性质”
-
如果对于一个现象有好几种解释,那么最简单的解释往往是最正确的。——奥卡姆(Ockham)剃刀原理
-
即使是通用目的编程语言(4GL,VB\JAVA\C#\Dephi)也逃不出“80-10-10准则”的魔咒。(注:80%的客户需求可以很快完成;下一个10%需要花很大的努力才能完成;而最后的10%却几乎是不可能完成的,因为你不能把所有的工具和框架都招至麾下,而你的用户却希望能够满足一切需求。)
-
只跟最亲密的朋友说话。——Demeter法则(注:任何对象都不需要知道与之交互的那些对象的任何内部细节;Demeter,古罗马掌管食物分配的女神)
-
任何一个对象或者方法,他应该只能调用该对象本身,作为参数传进来的对象,在方法内创建的对象。——Demeter法则的诠释(详见David Bock《The Paperboy,the Wallet,and The Law Of Demeter》
关于——犯罪行为
java.util.Calendar是Java世界中的反社会罪犯。它的工程洁癖盖过了常理,例如定义月份的常数从0开始计数(和Java其他地方一致),也就是当你传入2时,它实际上是三月。另外Calendar也不能正确维护自己的内在状态。例如
c = Calendar.getInstance(); c.set(Calendar.MONTH,Calendar.FEBRUARY); c.set(Calendar.DATE,31);//定义了一个反常规的日期,2月31号 System.out.println(c.get(Calender.MONTH)+"月"+c.get(Calendar.DATE)+"日");//输出了3月2号
Calendar不知道自己内在状态,它允许你设定一个不存在的日期,也不抛出任何异常,只是静静的给你一个完全不同的日期。开源的Joda库完全能取而代之。