Language agnostic 仅输出的函数是否应该返回任何内容?
我正在将一系列PHP函数重写为一个容器类。这些函数中的许多函数都会进行一些处理,但最终只会将内容回显到STDOUTLanguage agnostic 仅输出的函数是否应该返回任何内容?,language-agnostic,return-value,Language Agnostic,Return Value,我正在将一系列PHP函数重写为一个容器类。这些函数中的许多函数都会进行一些处理,但最终只会将内容回显到STDOUT 我的问题是:我应该在这些函数中有一个返回值吗?就这一点而言,是否有“最佳实践”?如果没有要返回的值,请不要返回值。如果您有一些需要传达给调用者的值,则返回它,但这与本例中的情况不同。您应该: return; 在我看来,SRP(单一责任原则)也适用于方法/功能,而不仅仅适用于对象。一个方法应该做一件事,如果它输出数据,它不应该做任何数据处理——如果它不做处理,它不应该返回数据。处理
我的问题是:我应该在这些函数中有一个返回值吗?就这一点而言,是否有“最佳实践”?如果没有要返回的值,请不要返回值。如果您有一些需要传达给调用者的值,则返回它,但这与本例中的情况不同。您应该:
return;
在我看来,SRP(单一责任原则)也适用于方法/功能,而不仅仅适用于对象。一个方法应该做一件事,如果它输出数据,它不应该做任何数据处理——如果它不做处理,它不应该返回数据。处理会失败吗?如果是,打电话的人是否应该知道?如果其中任何一个都是否,那么我看不到返回值。但是,如果处理可能失败,并且这会对调用方造成影响,那么我建议返回一个状态或错误代码。在这些情况下,我通常会“return:true”;因为它提供了一种检查函数是否工作的方法。但不确定最佳做法。在主要通过异常报告错误的系统中,如果没有自然返回值,则不要返回返回值
在使用返回值指示错误的系统中,让所有函数返回错误代码非常有用。这样,用户可以简单地假设每个函数都返回一个错误代码,并开发一个模式来检查它们是否到处都遵循。即使函数现在永远不会失败,也要返回一个成功代码。这样,如果将来的更改使错误成为可能,那么用户将已经在检查错误,而不是隐式地忽略错误(并真正弄不清楚系统为何表现异常)。请注意,在C/C++中,输出函数(包括)返回写入的字节数,如果失败,则返回-1。也许值得进一步研究,看看为什么会这样做。我承认
最后,选择权在你。我想说,这取决于你对这些事情的“纯粹主义”程度。没有必要返回任何东西,或者确实需要一个返回语句。它实际上是一个空函数,而且它是可以理解的,这些函数没有返回值。提交一份“回报”仅仅有一个return语句是为了卖弄学问而发出的噪音。或者,只有在例外情况下,才可以提出例外。如果处理失败是相对正常的,那么不,不要。我是那种认为读取文件时出现EOF异常非常奇怪的人,因为EOF是一种预期条件。也许你应该阅读