|
|
1
5
这是一个典型的单一责任问题。 你对签名不确定的原因是这个方法做了两件事。 我将创建两种方法:
编辑 基于对问题的评论和编辑,我将创建第三种方法:
然后,docleanup将首先调用checkif theuserwantsocancel,如果不取消,则调用savefile。 imho这比试图记住参数为false的docleanup将在不询问用户的情况下保存文件要好得多,还是相反? |
|
|
2
3
如果没有更多的细节,我会说答案1是最好的imho。第三个相当难看,因为它需要更多的代码来调用。 但也许可以考虑重写代码
这似乎是在单一责任的精神。我的代码以某种方式将您的问题分为两个步骤:询问用户和执行操作。 |
|
|
3
1
我会用你的1版。
假设它在清理完成后返回真值。返回false将指示“错误”状态。返回int甚至可能是有意义的。在这种情况下,约定通常是0表示成功,而其他一切都是错误代码。 不管你决定什么,记录你的返回值是什么意思! |
|
|
4
1
令人困惑的一点是调用它dosomething(),因为它可能不做任何事情。怎么样
更详细,但更清楚,即使没有看到声明。 |
|
|
5
0
对于状态(或状态消息),不应使用布尔值。创建枚举:
这样就更清楚了返回值是什么…如果你需要添加更多的状态,你可以。 (这都来自代码完成2,如果您还没有阅读,应该阅读它。) |
|
|
6
0
您基本上有两个请求。外部请求是创建一个新的工作区。内部请求是保存当前工作区。如果外部请求继续,则返回true;如果外部请求中止,则返回false。内部请求的操作对外部请求不重要,因此应该是某种委托/函数/闭包。 生成一个类来对其进行泛型化:
|
|
|
7
-1
我认为第三种方案最为明确。当您将bool作为返回类型时,不能立即清楚它的用途。 |
|
|
8
-1
我通常和
但主要取决于调用代码是否如下:
或者:
基本上我试着让我的测试不必使用
我绝对不会选第三名。 |
|
|
9
-1
我更喜欢第三个签名,因为通过查看它(没有任何额外的文档),我可以了解更多关于该方法的功能。我会把这个论点称为更明确的东西,比如processcancelled。 |