浅谈如何设计更好的java方法
方法的设计好坏,直接影响方法的可读性、重用性和可扩展性。在一个小项目中,似乎还看不出方法设计的作用,但对于一个大型项目,它有成千上百个方法(并且有的方法耦合紧密),这时如果不考虑这样的问题,等项目上线维护时,必然会造成巨大的维护成本,真是得不偿失啊。
笔者有两个目的,一:方法的设计需要引起读者的注意了,不能再被忽视;二:在方法设计上为读者提供一种思路,未必最好,仅供参考
方法的设计,我以为不外乎四点:
方法名
在方法名的定义上,当然是要可读性好了。比如读文件的方法名为 readFile 写文件的方法名为 writeFile ,如果写成 fileRead 和 fileWrite 就不是很好了,这里要注意命名规范,第一个词首字母小写,其余词的首字母大写。方法命名一般第一个词为动词(有例外,如监听器,listener),可千万不要小看方法名的定义。
参数
参数选取有规律,但首先有一条,那就是方法得能完成你最初想要完成的事情。参数选择分为逻辑选择和实际选择。所谓逻辑选择,也就是说,逻辑上它应该包括什么。如读写文件,那就应该包括文件对象(这两个文件对象的区别是,前者是文件源,后者是归属文件)即readFile(new File(“文件路径”)) 和 writeFile(new File(“文件路径”)) ;又如洗衣服,那就应该包括衣服对象,即washClothes(new Clothes(衣服需要的参数)) 。 这里的实际选择和语言有关系,如java语言不可以操作指针,则要操作数组时,就不止传入数组对象,还包括他的索引标识,可以参考我的 实现数组元素互换位置(乘机理解java参数传递)。
返回类型
这个是我比较纠结的问题,因为我们可能返回不止一个类型,这个时候会有一些难点:
返回一种类型的值
public void function1() {
“功能实现”
}或者
public int function1() {
“功能实现”
}返回多值同类型的值
public List function1() {
“功能实现”
}
这里的返回值就是可以返回多值同类型的集合,如数组,列表等。返回多值不同类型的值
public Map<Integer, Object> function1() {
"功能实现"
}
返回类型不一定要和上面一样,只是举例而已。
访问权限
访问权限有四种:public 、protected、private和默认不写。
这个设计的时候要注意它的作用范围,如果它只是类内部使用,当然设计成private最好;如果是都可能使用,用成public。不管怎样,一定要从面向对象思想入手设计。
至于是否使用static,则要看不同实例是否通用,如果所有实例都这么用,则设计为static合适。
这里仅是参考,不可尽信啊 - - -
最后还是那句老话: 实事求是 。