我正在验证数据,在这种情况下,我想要三个ints中的一个。我问这个问题,因为这是我感兴趣的基本原则。这是一个基本的例子,但我现在正在开发最佳实践,因此,当事情变得更复杂以后,我有更好的条件来管理它们。
是否最好先试一试,接上以下条件:
public static int getProcType()
{
try
{
procType = getIntInput("Enter procedure type -\n"
+ " 1 for Exploratory,\n"
+ " 2 for Reconstructive, \n"
+ "3 for Follow up: \n");
}
catch (NumberFormatException ex)
{
System.out.println("Error! Enter a valid option!");
getProcType();
}
if (procType == 1 || procType == 2 || procType == 3)
{
hrlyRate = hrlyRate(procType);
procedure = procedure(procType);
}
else
{
System.out.println("Error! Enter a valid option!");
getProcType();
}
return procType;
}还是把if放在尝试和捕捉的范围内更好?
public static int getProcType()
{
try
{
procType = getIntInput("Enter procedure type -\n"
+ " 1 for Exploratory,\n"
+ " 2 for Reconstructive, \n"
+ "3 for Follow up: \n");
if (procType == 1 || procType == 2 || procType == 3)
{
hrlyRate = hrlyRate(procType);
procedure = procedure(procType);
}
else
{
System.out.println("Error! Enter a valid option!");
getProcType();
}
}
catch (NumberFormatException ex)
{
System.out.println("Error! Enter a valid option!");
getProcType();
}
return procType;
}我在想如果在尝试,可能会更快,但也可能是笨拙的。当我的程序变得更高级时,哪个会更好呢?
发布于 2013-10-29 14:36:37
我不会费心用例外的。相反,只是对方法/函数上的IF条件进行简单的测试。
就像@gnat说的,把它放在一个独立的函数中是最好的。另外,考虑为返回添加一个枚举,并添加一个额外的值,如:
Exploratory,
Reconstructive,
FollowUp,
Undefined因此,当调用getProcType()时,它可以返回“未定义”返回。如果您的程序获得该消息,则向用户显示一条消息,然后退出。如果它得到一个适当的值,它将继续并调用另一个方法来调用每小时的薪酬和过程(单独的方法)。
在您的代码中,用户如何取消?当函数不断调用自己时,它们可能会被卡在试图输入1,2,3中。通常情况下最好是快速失败。因此,礼貌地告诉用户他们输入了错误的值,显示了一个可接受值的列表,然后退出。我假设这是某种命令行实用程序。
此外,我还可以建议使用更复杂的UI,比如列表框/组合框,这样可以避免用户输入任何内容。这样就根本不需要这种逻辑了。通常,我们希望尽可能避免在事物中使用类型。
https://softwareengineering.stackexchange.com/questions/215851
复制相似问题