用户输入验证应该在班级或UI级别完成吗?

时间:2017-10-11 16:46:45

标签: java parameters user-input inputverifier

假设您有一个控制台应用程序:

Main.javaClassA.java

您的主类包含运行程序的public static void main(String[] args)方法,它使用用户输入作为参数来调用ClassA中的方法。

在将参数发送到main方法之前,您是否在ClassA方法中放置了用户输入验证?

OR

您是否将用户输入验证放在ClassA方法中,这些方法会将消息转发回来,表明输入成功与否?或抛出异常?

即。在给出无效输入时,Integer.Parse(...)会抛出NumberFormatException

1 个答案:

答案 0 :(得分:1)

您可能希望在classA中抛出有意义的异常,并让main方法决定是否/如何处理这些异常。当您重复使用A类时,新调用者可能希望做出其他决定。

我推荐章节" ErrorHandling" CleanCode一书(罗伯特C.马丁)。它例如"定义正常流程","使用例外而不是返回代码","分离业务逻辑和错误处理"。

在某些情况下,获得快速反馈很重要...不要等待两个小时才能完成计算并获得90%的异常。在其他情况下,获得详细的反馈更为重要。另请参阅Data validation: fail fast, fail early vs. complete validation

检查代码是否易于阅读并了解正常流程。每个函数应该只做一个事物/模型一个抽象层次。异常处理是一个级别的抽象。