参数检查调用者和被调用者之间的责任?

gre*_*emo 1 methods design-patterns programming-languages call

一般来说,在呼叫者应保证形成良好的数据传送到所调用的方法(因此所调用的方法假定数据始终有效)或是称为应该携带数据验证方法?每种方法的优缺点是什么?

this.data = user.input;

// Caller check data
if (!this.data) throw new Exception("Data cannot be null.");
obj.consume(this.data);

public void consume(data)
{
   // Called check data
   if (!data) throw new Exception("data cannot be null.");
}
Run Code Online (Sandbox Code Playgroud)

Dom*_*nic 5

面向外部(公共,受保护,导出等)方法应验证其输入,因为未知的未来呼叫者可以调用它们.对于面向内部(私有,内部,内部等)方法,这不是必需的,因为调用者在您的控制之下并且可以假设知道它正在做什么.