用户输入验证应该在课堂级别还是UI级别进行?
问题描述:
假设你有一个控制台应用程序:用户输入验证应该在课堂级别还是UI级别进行?
Main.java
和ClassA.java
主类包含在其中运行您的程序public static void main(String[] args)
方法,它使用用户输入作为参数的方法调用ClassA
。
你把用户的输入进行验证的方法main
发送参数ClassA
方法之前?
OR
你放在ClassA
方法用户输入验证这将传达一个信息,表明输入的成功与否?或抛出异常?
即Integer.Parse(...)
当给出无效输入时抛出NumberFormatException
。
答
您可能希望在classA中抛出有意义的异常,并让您的主方法决定是否/如何处理这些异常。当您重用类A时,新的调用者可能想要做出其他决定。
我推荐Book CleanCode(Robert C. Martin)的“ErrorHandling”一章。它例如说“定义正常流程”,“使用异常而不是返回代码”,“分离您的业务逻辑和错误处理”。
在某些情况下,获得快速反馈非常重要...不要等待两个小时才能完成计算并获得90%的例外。在其他情况下,获得详细的反馈更为重要。另请参阅Data validation: fail fast, fail early vs. complete validation
检查是否易于阅读代码并了解正常流程。每个函数只应该做一件事/模型的一个抽象层次。异常处理是一种高级ob抽象。
输入是来自控制台还是来自“ClassA”中提供的图形用户界面?如果你认为这些课程是人......谁会“拥有”这些论点?你能想象在另一个上下文中使用完全相同参数的ClassA吗?是否只有ClassA或ClassB和ClassC使用这些参数? – Stefan
@Stefan输入来自控制台(非图形用户界面) – NoName
而ClassA只被'main'方法使用。 – NoName