标题可能无法解释我真正想要达到的目标,无法真正想出一种描述我的意思的方法.
我想知道在使用它们之前检查函数接受空值或空的参数是否是好的做法.我有这个函数,它只包含一些哈希创建.
Public Shared Function GenerateHash(ByVal FilePath As IO.FileInfo) As String If (FilePath Is Nothing) Then Throw New ArgumentNullException("FilePath") End If Dim _sha As New Security.Cryptography.MD5CryptoServiceProvider Dim _Hash = Convert.ToBase64String(_sha.ComputeHash(New IO.FileStream(FilePath.FullName, IO.FileMode.Open, IO.FileAccess.Read))) Return _Hash End Function
正如您所看到的,我只是将IO.Fileinfo作为参数,在我检查的函数的开头,以确保它不是什么.
我想知道这是一个好习惯还是我应该让它到达实际的hasher然后抛出异常,因为它是null.
谢谢.
一般来说,我建议在使用它们之前验证公共函数/方法的所有参数是一种好的做法,并且在执行函数的一半之后而不是提前失败.在这种情况下,您抛出异常是正确的.
根据您的方法正在做什么,早期失败可能很重要.如果您的方法正在改变类上的实例数据,则不希望它改变一半数据,然后遇到null并抛出异常,因为对象的数据可能处于中间且可能无效的状态.
如果您使用的是OO语言,那么我建议验证公共方法的参数是必不可少的,但对于私有和受保护的方法则不那么重要.我的理由是你不知道公共方法的输入是什么 - 任何其他代码都可以创建你的类的实例并调用它的公共方法,并传入意外/无效的数据.但是,私有方法是从类内部调用的,并且该类应该已经验证了内部传递的任何数据.