【问题标题】:a nicer way for if (!true) {return;}if (!true) {return;} 的更好方法
【发布时间】:2016-09-26 15:11:56
【问题描述】:

我有一大堆代码女巫看起来像这样

if(!Click(By.linkText("HR Development"))){return;}
if(!Click(By.linkText("ISTQB Agile Tester Extension ( 1/2)"))){return;}

这个想法是,如果单击成功,则 Click 函数返回 true,否则返回 false。

在点击功能之外还有其他类似的功能

有人知道获得相同结果的更好方法吗?

【问题讨论】:

  • if (!Click(By.linkText("HR Development")) || !Click(By.linkText("ISTQB Agile Tester Extension ( 1/2)")) return;?

标签: java if-statement return


【解决方案1】:

那为什么不直接

return boolean_expression();

无论该表达式计算什么,都会返回。

例如

if (foo == bar) {
   return true;
} else {
   return false;
}

可以很简单

return (foo == bar);

【讨论】:

  • 当然它应该只在语句为假时返回,如果返回值为真则应该转到下一条语句
  • 那么你需要if
【解决方案2】:

你可以重铸成等价物

if (
    !Click(By.linkText("HR Development")) ||
    !Click(By.linkText("ISTQB Agile Tester Extension ( 1/2)"))
){
    return;
}

请注意,一旦知道结果,|| 的评估就会停止。 (这称为短路。)

用许多return; 语句乱扔你的函数会使调试变得困难,因为设置可靠的断点变得很困难。

【讨论】:

  • 我知道我可以这样对它进行排序,但我的想法是,如果语句为假,它应该停止,否则转到下一个语句。我可以在eatchother下有100行这样的
  • 这并没有改变这是一个更好的方式的事实 ;-)
【解决方案3】:

我有一大堆代码女巫 [原文如此] 看起来像这样

那是你的问题。看起来您已经为许多事件编写了一键式处理类。

另一个想法可能是为事件创建单独的处理程序并根据需要具有自定义行为。那将是一种更加面向对象的方法。

【讨论】:

    【解决方案4】:

    只需将boolean 变量作为您的条件,并使用||(或)运算符进行测试:

    boolean foo = !Click(By.linkText("HR Development"));
    boolean bar = !Click(By.linkText("ISTQB Agile Tester Extension ( 1/2)"));
    
    if (foo || bar) {
        return;
    }
    

    它很干净,如果需要,您可以添加任意数量的变量。

    【讨论】:

    • 重点是如果在这种情况下 Click(By.linkText("HR Development")) 返回 false 是不可能执行 Click(By.linkText("ISTQB Agile Tester Extension ( 1/2 )"));所以你的解决方案不起作用
    猜你喜欢
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多