本条是一些小的技巧(或者说好习惯)的总结。
1)谨慎选择方法的名字
你选用的名字应该遵循标准命名习惯(见【第38条】),选择易懂的、并和他人保持风格一致的名字。比如用remove还是delete,通过看JDK文档的字母索引你就会发现前者比后者多得多。但是,我还是在一个方法中使用了delete。那是因为它确实是一个对数据表中数据的delete操作方法,而且在java.sql.*中也能见到与DB删除操作相关的方法正式那些数量有限的delete开头的方法。
在以往的项目中,甚至见到一些人喜欢用汉语拼音或日文的罗马字来命名(甚至是命名数据库的表名和字段名!),这是应该杜绝的。
2)不要过于追求提供便利的方法
方法太多会是一个很难实现(对于接口而言)、学习、使用、文档化、测试和维护的。
3)避免长长的参数列表
尤其是类型相同的长参数序列,使用者会记不住的。虽然现在有Eclipse等工具但还是不要违背此点为妙。减少参数的方法有三个。一个是分解成多个方法,每个方法只要求这些参数的一个子集(但是当心上一点)。二是将参数放到一个List中(如ArrayList),这也适用于动态参数的情况。三是用一个类的静态域来保持这些参数,然后通过这个辅助性的类来传递,这更适用于一组参数经查集体出现的场合,例如画面间跳转时等。
4)参数类型优先使用接口而不是类
和【第34条】类似。书上说“没有理由在编写一个方法时使用Hashtable作为输入,相反,应该使用Map”。但是我想问的是:一个类可能实现多个接口,如果不同接口中所定义的方法,都要用到,那么该选择哪个接口作为“代表”呢?恐怕哪个都是片面的。比如,如果我要在方法对传入的参数做clone操作,那么就必须使用Hashtable作为参数了,因为它还实现了Cloneable接口。
5)谨慎地使用函数对象
换句话说,就是作者不建议经常使用函数回调。“频繁的创建函数对象,并且将它们从一个方法传递到另一个方法,这种程序设计风格并非主流”——恰恰,在AS3中函数回调是很常见的,而且很可能因此而使程序的执行变为异步的。
【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208