Questions tagged «return-type»

9
为什么Java有`void`方法?
/为什么Java需要有void方法?参考: 任何声明为void的方法都不会返回值。 就我所能想到的,void通过返回状态标志,被调用的对象或,将更好地服务于的每次使用null。 这将使每个调用成为可分配的语句,并有助于构建器模式和方法链接。仅出于效果而调用的方法通常会返回布尔值或泛型Success类型,或者在失败时引发异常。

6
为什么许多在C中返回结构的函数实际上返回结构的指针?
return与在函数的语句中返回整个结构相比,返回指向结构的指针有什么好处? 我说的是像fopen其他底层函数一样的函数,但是可能还有一些高层函数也返回指向结构的指针。 我相信这更多是一种设计选择,而不仅仅是编程问题,而且我很想知道更多关于这两种方法的优缺点。 我认为返回指向结构的指针的一个好处的原因之一是能够通过返回NULL指针更容易地判断函数是否失败。 我想返回一个完整的结构NULL会比较困难,或者效率较低。这是正当的理由吗?

9
如何命名既执行任务又返回布尔值作为状态的方法?
如果有办法 bool DoStuff() { try { // doing stuff... return true; } catch (SomeSpecificException ex) { return false; } } 它应该被称为IsStuffDone()吗? 用户可能会误解这两个名称:如果名称是DoStuff()为什么它返回布尔值?如果名称IsStuffDone()不明确,则该方法是执行任务还是仅检查其结果。 这种情况有约定吗?还是一种替代方法,因为这被认为是有缺陷的?例如,在具有输出参数的语言(如C#)中,可以将布尔状态变量作为1传递给方法,而方法的返回类型为void。 编辑:在我的特定问题中,异常处理不能直接委托给调用者,因为该方法是接口实现的一部分。因此,调用者不必负责处理不同实现的所有异常。它不熟悉那些例外。但是,调用者可以处理自定义异常,如npinti的answer和comment中StuffHasNotBeenDoneForSomeReasonException建议的那样。

7
即使我知道该方法无法返回错误的输入,我也应该验证方法调用的返回值吗?
我想知道我是否应该通过验证方法调用的返回值是否符合我的期望来进行防御,即使我知道我正在调用的方法将满足此类期望也是如此。 给予 User getUser(Int id) { User temp = new User(id); temp.setName("John"); return temp; } 我应该做吗 void myMethod() { User user = getUser(1234); System.out.println(user.getName()); } 要么 void myMethod() { User user = getUser(1234); // Validating Preconditions.checkNotNull(user, "User can not be null."); Preconditions.checkNotNull(user.getName(), "User's name can not be null."); System.out.println(user.getName()); } …

9
哪些静态类型的语言支持函数返回值的交集类型?
初步说明: 经过几次修改后,这个问题才得以解决,因为我缺乏适当的术语来准确说明我要寻找的内容。然后,Sam Tobin-Hochstadt发表了一条评论,这使我确切地知道了这是什么:支持函数返回值的交集类型的编程语言。 既然问题已经重新提出,我已经决定通过(希望)更精确的方式重写它来改进它。因此,下面的某些答案和注释可能不再有意义,因为它们是指先前的编辑。(在这种情况下,请参阅问题的编辑历史记录。) 是否有支持功能返回值的交集类型的流行的静态和强类型编程语言(例如Haskell,通用Java,C#,F#等)?如果是这样,那又如何? (老实说,我真的很希望看到有人演示一种如何使用主流语言(例如C#或Java)来表示交集类型的方法。) 我将使用一些类似于C#的伪代码给出一个简短的示例,说明交集类型的外观: interface IX { … } interface IY { … } interface IB { … } class A : IX, IY { … } class B : IX, IY, IB { … } T fn() where T : IX, IY { return … ? …

4
在C#方法中声明返回变量与直接返回值
在关于返回变量的辩论中,团队中的某些成员更喜欢将结果直接返回给调用者的方法,而另一些成员则更喜欢声明一个返回变量,然后将其返回给调用者(请参见下面的代码示例) 后者的论点是,它允许正在调试代码的开发人员在方法返回给调用者之前找到方法的返回值,从而使代码更易于理解:对于以菊花链方式进行的方法调用,尤其如此。 是否有关于哪种方法最有效的准则和/或是否有其他原因导致我们应采用一种风格而不是另一种风格? 谢谢 private bool Is2(int a) { return a == 2; } private bool Is3(int a) { var result = a == 3; return result; }

4
修改自身后,类的方法何时应返回相同的实例?
我有一个具有三个方法的类A(),B()并且C()。这些方法修改了自己的实例。 当实例必须是一个单独的副本时,方法必须返回一个实例(与一样Clone()),但是在修改方法中的同一实例而不返回任何其他值时,我可以自由选择返回void还是相同的实例(return this;)。 在决定返回相同的修改实例时,我可以进行整洁的方法链,例如obj.A().B().C();。 这是这样做的唯一理由吗? 修改自己的实例并返回它还可以吗?还是应该只返回副本并像以前一样保留原始对象?因为当返回相同的修改实例时,用户可能会假定返回的值是副本,否则将不会返回?如果可以的话,在方法中阐明此类问题的最佳方法是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.