方法命名取决于返回类型

Kar*_*ten 0 c# oop

试图避免Tell-not-ask,我想在调用方法之前将我所要求的bool属性组合成一个返回bool的新方法.

我尝试遵循该模式,如果方法无法执行其名称所隐含的操作,则会抛出异常.例如,如果SendMail无法发送邮件,则会抛出异常.

我希望这个特殊的方法返回一个bool来表示成功.我正在考虑是否应该将名称更改为类似TrySendMail的东西,也许用bool返回类型查看方法签名应该足够了吗?

Dir*_*mar 5

命名方法TrySendMail似乎是一个不太糟糕的方法.然而,作为一致与整体命名sceme是最重要的事情.


Mik*_*fer 5

整个TryWhatever命名模式似乎是来自微软的一个相当新的事情,但行为(尝试做某事,如果失败则抛出,如果没有则返回有意义的强类型值)已经存在了很长时间.

理论上,如果方法采用接收结果的ref参数并返回bool,则应该使用TryWhatever.如果方法失败,则返回false.如果成功,则结果存储在ref参数中(始终是最后一个参数),并返回true.

您可以使用DateTime.TryParse方法作为示例.如果方法与该模式不匹配,则它不是此命名约定的候选者.

对我来说,使用这种约定时,一致性是关键.不要惊讶于开发人员.我们中的一些人是非常可怕的人!