【发布时间】:2018-03-23 10:42:33
【问题描述】:
假设您有一个控制台应用程序:
Main.java 和 ClassA.java
您的主类包含运行程序的public static void main(String[] args) 方法,它使用用户输入作为参数来调用ClassA 中的方法。
在将参数发送到ClassA 方法之前,您是否将用户输入验证放在main 方法中?
或
您是否将用户输入验证放在ClassA 方法中,这些方法会转发一条消息,指示输入是否成功?还是抛出异常?
即Integer.Parse(...) 在输入无效时抛出 NumberFormatException。
【问题讨论】:
-
输入是来自控制台还是来自“ClassA”中提供的图形用户界面?如果你想象这些类是人......谁会“拥有”这些论点?你能想象在另一个具有完全相同参数的上下文中使用 ClassA 吗?是否只有 ClassA 或 ClassB 和 ClassC 使用这些参数?
-
@Stefan 输入来自控制台(非图形用户界面)
-
而 ClassA 只被 'main' 方法使用。
-
我认为没有明确的答案。但是采用 MVC(模型视图控制器)设计方法,验证(在我看来)应该由控制器进行,以确保模型(A 类)不会收到无效请求。就我个人而言,我不认为输入验证是业务逻辑,因此不属于模型。如果您引入了控制器,那么您将能够切换到图形视图(而不是控制台),而无需重新实现 vaidstion 逻辑。由于这可能不是问题,因此我会将验证逻辑引入您的 Main 类。
标签: java parameters user-input inputverifier