在我的团队中,我们与一些软件架构师紧密合作。他们批准我们项目的所有设计决策,进行一些代码审查等。
我们的项目主要包括使用Symfony 2框架以PHP实现的后端功能。因此,在语法上,代码,命名约定和项目结构看起来几乎与Java的外观相同(Symfony 2鼓励采用这种结构)。我之所以这样说是因为特定于Java的约定也适用于我们的情况(如果可能)。
最近,他们提出了一些令我感到很奇怪的东西:所有方法的名称中都应带有连词,例如getEntityOrNull
,setValueOrException
等等。
这样的命名约定对我来说是非常错误的,但是我无法提出任何具体的论据或在线文章/页面来专门挑战这一点。
我想到的唯一的东西是:
- 此类信息应出现在方法的注释中,例如
@return
或@throws
- 在方法名称中使用连词(“和”,“或”等)通常表明未适当遵守“单一责任原则”
反对该命名约定的其他一些具体论点是什么?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
对于您列出的示例,情况并非如此,在该示例中,连词用于阐明处理故障的机制,而不是表示它可能会做一件事或另一件事。甚至最狭窄定义的函数也可能具有合法的故障情况,例如弹出一个空堆栈。
Int32.TryParse
和Int32.Parse
-都将字符串解析为整数,但是前者返回一个布尔值,指示成功,而后者则抛出失败。
Try...
,...OrNull
,...OrDefault
。@EricLippert这不是.net中唯一的约定。考虑Single
vs. SingleOrDefault
,它与OrNull
建议的OP 非常接近。