Mik*_*ike 5 c# interface return-type
我有一组具有相同功能但具有不同逻辑的类.但是,每个类函数都可以返回许多对象.将返回类型设置为接口是安全的吗?
每个类(都使用相同的接口)使用不同的业务逻辑来执行此操作.
protected IMessage validateReturnType; <-- This is in an abstract class
public bool IsValid() <-- This is in an abstract class
{
return (validateReturnType.GetType() == typeof(Success));
}
public IMessage Validate()
{
if (name.Length < 5)
{
validateReturnType = new Error("Name must be 5 characters or greater.");
}
else
{
validateReturnType = new Success("Name is valid.");
}
return validateReturnType;
}
Run Code Online (Sandbox Code Playgroud)
单元测试函数的返回类型是否存在任何缺陷?另外,为了让它们成功运行需要运行的功能,它被认为是不好的设计吗?在此示例中,必须在IsValid()之前运行Validate(),否则IsValid()将始终返回false.
谢谢.
Bri*_*ndy 10
但是,每个类函数都可以返回许多对象.将返回类型设置为接口是安全的吗?
这是一种很好的做法和共同点.例如,看看COM的构建方式,它很大程度上依赖于这种方法.
单元测试函数的返回类型是否存在任何缺陷
没有.
另外,为了让它们成功运行需要运行的功能,它被认为是不好的设计吗?在此示例中,必须在IsValid()之前运行Validate(),否则IsValid()将始终返回false.
这对于使用面向对象的编程范例来说很好,例如使用套接字.在发送和接收数据之前,通常会有一个connect方法.
可以说,保持较少的状态而不是更多的状态作为一般规则是好的,因为通过这种方式,更容易证明你的程序是正确的.例如,您必须以一种方式测试依赖于此函数的每个函数,而不是现在以两种方式.如果您有很多州,可能的计划状态会呈指数级增长.如果您对状态为坏事感兴趣,请查看函数式编程.