我有一个类,其目的是存储一些配置参数。
我需要添加一个方法validate()
,它检查当前状态下该类对象的参数的有效性。
我需要将两个信息返回给validate()
方法
boolean
String
在java世界中这样做的正确方法是什么?
我可以想到几种方法,但无法确定哪种方式更好。
validate()
返回包含失败的字符串
原因,如果没有错误,则为null。感觉这是一个黑客。validate()
答案 0 :(得分:1)
在java世界中这样做的正确方法是什么?
没有(单一)正确的方法。
我同意退回String
或null
很难看。
我不同意创建一个类太多了。客观地说,手动编写需要5分钟,如果使用体面的IDE则需要1到2分钟。很难说这是“太多”。
使用异常是否是好的风格是有争议的。这取决于你对异常处理的看法(或“宗教”)。
答案 1 :(得分:1)
这三个建议都没问题。选择哪一个在很大程度上取决于背景:团队编码指南,公司编码原则,团队规模,代码大小......
我认为,3)是最优雅的解决方案。努力并不是那么大...... 只要在JavaDoc中记录得很好,1)就完全可以了,所以没有一个调用者感到惊讶。在JSE中,有很多方法返回调用者需要检查的特殊值(null,-1,...)。
2)更值得怀疑。但是,如果项目特定需要像ValidationException
那样可以在代码中的其他地方使用,那么它也可能是一种可接受的方式。但是,可能是所有变体的最差表现。
答案 2 :(得分:0)
我会说这取决于你的程序和谁是validate()
的来电者。如果您认为验证是一个内部实现,在程序的一般流程中几乎没有可见性,则选项1(这是非常常见的)很简单且足够。然而,如果对象保持参数是公共的并且validate()
可以在您的程序中使用,那么选项3就是“Java”对您的期望。
选项2永远不会更好,因为你说的原因。另一个论点是使用控制流的异常,这使得程序更难以推理。
答案 3 :(得分:0)
我可以想到以下模式: