我思考模式,允许我回到这两个计算结果和状态:返回计算结果和状态。最佳实践
有,我能想到的几种方法:
函数返回计算结果,正在返回的状态通过参数(不是所有的语言都支持参数,这看起来是错误的,因为一般来说你不希望参数被修改)。 (缺点是你必须创建仿真类来返回函数结果或使用没有语义含义的对 - 你知道哪个参数是它的顺序)。
如果你的状态就是成功/失败就可以返回计算值,并在错误的情况下抛出异常(看起来像最好的方法,但只有成功/失败情况的工作,不应该被滥用控制正常的程序流程)。
函数返回值,函数参数委托给onSuccess/onFailure过程。
有一个(state-full)方法类有状态字段,并且方法返回计算结果(我更喜欢有无状态/不可变对象)。
请给我利弊和情况使用上述方法或告诉我,我可以使用(最好带提示的先决条件时使用它们)其他模式的先决条件的提示。
编辑: 真实的例子: 我开发的Java EE互联网应用,我有一类解析请求参数字符串转换为他们的一些业务逻辑对象。解析器正在检查db是否正在创建或编辑对象,然后向控制器返回从db中获取的新对象或对象。控制器根据从解析器读取的对象状态(新/编辑)采取行动。我知道这很糟糕,我想在这里改进代码设计。
在C和C++中,至少完全可以拥有out参数。所以我通常通过返回值返回成功/失败,并修改一个输出参数以反映计算输出。这也允许在动态分配内存的情况下更好的资源控制。 – arne
有很多缺点和专业的,但我想知道这个问题是否会保持开放,因为它看起来对我来说是类似于http://stackoverflow.com/questions/36707/should-a-function-have-只有一个回报陈述问题。我希望它保持开放,我认为这些问题完全符合本网站的内容。 –
我认为其他问题与此完全不同。这是关于在代码中使用多个return语句,而不是返回多个“结果”。另外我发现这个:http://stackoverflow.com/questions/4181018/what-is-the-pros-and-cons-of-using-out-parameter作为一个关于out参数的非常好的讨论,它涵盖了第一个提到的方法。 – 0lukasz0