【代码优化】方法签名及参数检查

参数检查:

绝大多数方法的构造器对于传递给它的参数值会有某些限制。例如,索引值必须是非负数,对象不能

为null等等。

如果传递无效参数给方法,在执行前没对参数进行检查,该方法可能在处理过程中失败,并且产生令

人费解的异常。更糟的是,该方法可以正常返回数据。但是会得到一个错误的结果,你还认为是正确的,

没发现其中的倪端。

所以对于方法参数的检查是有必要的。

常见的几个错误,IllegalArgumentException,IndexOutOfBoundsException和NullPointException

对这些常见的错误进行处理,可以给你减少很多麻烦。

不过有时候的参数检查会带来相当大的开销,这样你就要考虑怎么做才更好的保护程序健壮性的同时

具有高效性。比如,考虑一个为对象列表排序方法:Collections.sort(List).列表中的所有对象都必须是可以

相互比较的。如果不能比较,就会抛出ClassCastException,这正是sort方法做的事情。你就没必要去对

sort的参数List进行检查了,而且检查会带来很大开销。

总之,编写每个方法时候都应该想到检查参数,有不有必须去进行检查就要仔细思考方法的限制了。

谨慎设计方法签名:

谨慎的使用方法名称。遵循标准的命名习惯,首要目的是容易理解,让其他开发者懂得你所表达的意思。

第二目的是选择大众认可的,尽量使用大家平时习惯相一致的名称。

不要过于追求提供便利的方法。每个方法在容易读的前提下,尽其所能。方法太多会使类难以学习。

避免过长的参数列表。参数列表太长,不美观,也难读,就好4个一下。

对于参数类型,要优先使用接口而不是类。比如方法参数应该传map,不应该传Hashmap,这使你可以

传入hashtable,hashmap,treemap这些类型。如果传入的是类,就对方法做了限制。

【代码优化】方法签名及参数检查

时间: 2024-08-29 18:16:03

【代码优化】方法签名及参数检查的相关文章

多态 这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

多态 类具有继承关系,并且子类类型可以向上转型看做父类类型,如果我们从 Person 派生出 Student和Teacher ,并都写了一个 whoAmI() 方法: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def whoAmI(self): return 'I am a Person, my name is %s' % self.name clas

安卓实战开发之JNI入门及高效的配置(android studio一键生成.h,so及方法签名)

前言 以前也讲过NDK开发,但是开始是抱着好玩的感觉去开始的,然后呢会helloWord就觉得大大的满足,现在静下来想这NDK开发到底是干什么呢? NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西:另外就是为了效率更加高效些但是在java与C相互调用时平白又增大了开销(其实效率不见得有所提高),然后呢,基于安全性的考虑也是为了防止代码被反编译我们为了安全起见,使用C语言来编写这些重要的部分来增大系统的安全性,最后呢生成so库便于给人提供方便. 好了,我们来看一下qq的结构,我们就

4、参数检查

我们在使用一个方法的时候,经常要传入参数.而参数有可能是有问题的,也就是不符合方法需要. 那么这时候,这个方法如果能对参数进行检测是否符合,如果是因为参数错了我们就可以很清晰地知道错误.否则可能导致很多奇怪的错误. 参数检查的示例: public void a(int i){ if(i == 0){ throw new Exception("不能为0"); } // doSomething... } 如果i的值是0,抛出异常后我们很清晰的知道问题在i的值. 但是,我们不应该处处都进行参

C# 方法签名以及怎样的两个方法才算是不同的方法

方法签名由方法名称和一个参数列表(方法的参数个数.顺序和类型)组成. 注意:方法的签名并不包括方法的返回值和修饰符. 在C#中,同一个类中的两个或两个以上的方法可以相同的名字,只要他们的参数列表声明不同即可.在这种情况下,该方法就被称为重载(overload),这个过程称为方法重载(method overloading).方法重载是C#最有用的特性之一. 当一个方法被调用时,C#用方法签名确定调用哪一个方法.因此,每个重载方法的参数列表必须是不同的.虽然每个重载方法可以有不同的返回类型,但是返回

java方法签名

方法的名字和参数列表称为方法的签名. 方法名 (参数列表(方法参数的顺序和类型)) 如下:方法中,方法名字:quaryAll.参数列表:( String  a , int  b ) public  int  quaryAll( String a , int b ) { return 0; } 方法的返回类型不是方法签名的一部分. 返回类型 : int ;

第四十条:谨慎设计方法签名

先明确:方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成,不包括返回值类型. 谨慎的选择方法的名称. 不要对于追求提供便利的方法. 避免过长的参数列表.目标是四个参数,或者更少. 有三种方法可以缩短过长的参数列表: 1.把过长参数列表的方法分解成多个方法,每个方法只需要这些参数的一个子集. 2.创建辅助类,用来保存参数的分组,这些成员类一般是静态成员类.如果一个频繁出现的参数序列可以被看作是代表了某个独特的实体,则建议 使用这种方法. 3.从对象构建到方法使用都使用Builder模

[转]BX9054: 各浏览器对 document.execCommand 方法的首参数可选值范围存在差异

作者:钱宝坤 标准参考 无. 问题描述 execCommand 方法通常用于控制可编辑的 IFRAME 内容,制作富文本编辑器. 但他现在为止还是非标准的,方法的首参数 Commmands 的可选值由各个浏览器厂商制定,支持程度并不统一. 造成的影响 使用仅有某个浏览器支持的 Commmands 参数会造成其他浏览器运行时脚本出错,从而影响其他浏览器内正常脚本继续执行. 受影响的浏览器 所有浏览器   问题分析 document.execCommand 方法提供了对浏览器内置命令调用的接口,他暂

C#方法签名

网上有人说方法签名包含方法返回类型,也有人说不包含.到底什么是方法签名呢? Visual C# 2010在线帮助,方法(C# 编程指南)是这样说的: 方法签名 通过指定方法的访问级别(例如 public 或private).可选修饰符(例如abstract 或sealed).返回值.名称和任何方法参数,可以在类或 结构中声明方法. 这些部分统称为方法的"签名". 为进行方法重载,方法的返回类型不是方法签名的一部分. 但是,在确定委托和委托所指向方法之间的兼容性时,返回类型是方法签名的一

请求处理方法签名

一:请求处理方法签名介绍 1.介绍 二:@RequestParam 1.使用@RequestParam绑定请求参数 注意点:required. 2.index.jsp 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 <!DOCTYPE html PUBLIC "-