我目前正在研究Java中的学生项目(Android具体而言)。让我们说我有一个单击按钮时调用的函数。此方法必须调用少数其他短私有函数(返回true / false)以便检查例如:用户输入的有效名称,文件夹创建是否正常,文件是否已成功复制等。在移动到另一个之前必须检查这些事情活性。
这样做的方法是拨打多个' ifs'与'返回'如果出了问题:
public void onClickButton(View view) {
if( validData() ) {
showErrorMsg("Wrong input!");
return;
}
if( selectedFileExists() ) {
showErrorMsg("File does not exist!");
return;
}
if( createFolder() ) {
showErrorMsg("Error during folder creation!");
return;
}
(...)
}
它还不错,但我正在考虑用void方法替换那些短布尔函数,这些方法会抛出onClickButton()中的异常,例如:
public void onClickButton(View view) {
try {
validData();
selectedFileExists();
createFolder();
(...)
}
catch (MyException e) {
showErrorMsg(e);
return;
}
}
private void createFolder() throws MyException {
if( !projectFolder.mkdir() )
throw new MyException("Error during folder creation!");
}
那你对第二种方法有什么看法?在这种情况下使用例外是否可以接受?
答案 0 :(得分:0)
好吧,让我们说第一位是不一致的,你的方法有不好的名字(方法是动词,可以这么说,你的方法并没有描述他们可能在做什么)。另外,我希望您的方法在失败时返回false
,而不是true
。我想更好的名字是isValidData
,doesSelectedFileExist
和tryCreateFolder
。我也会切换逻辑,因此布尔返回值与方法名称一致。
话虽如此,让我们进入第二个代码段。例外情况是特殊行为。我认为您的方法期望要么返回true,要么返回false,而不是异常。另外,应该允许异常处理冒泡到更高级别的异常处理程序。
坚持我所概述的第一部分。
答案 1 :(得分:0)
只要代码简洁易读,您就可以通过Second方法创建它。 我可以给你的一些提示