Language agnostic 在代码中间的条件和循环返回是正确的吗? 有时我已经指出,不能在条件或循环的中间放置返回,因为它会中断进程。不过,现在已经向我表明,如果你能做到,而且更好。我很困惑。通常会发生在函数中

Language agnostic 在代码中间的条件和循环返回是正确的吗? 有时我已经指出,不能在条件或循环的中间放置返回,因为它会中断进程。不过,现在已经向我表明,如果你能做到,而且更好。我很困惑。通常会发生在函数中,language-agnostic,coding-style,Language Agnostic,Coding Style,你能写一个返回吗?不是吗?为什么?或者这没什么区别吗 例如: if (i == 0) { //other code return true; } else { //other code return false; } 或 最好在底部有一个单一的回报。这样,你只有一个入口和一个出口。当您不必担心代码将从何处退出时,调试代码就容易多了。对于非常短的方法来说,这没什么大不了的,但是对于几百行的长方法来说,它更干净。最好在底部有一个单一的返回。这样,你只有一个入口和一个

你能写一个返回吗?不是吗?为什么?或者这没什么区别吗

例如:

if (i == 0)
{
    //other code
    return true;
}
else
{
    //other code
    return false;
}


最好在底部有一个单一的回报。这样,你只有一个入口和一个出口。当您不必担心代码将从何处退出时,调试代码就容易多了。对于非常短的方法来说,这没什么大不了的,但是对于几百行的长方法来说,它更干净。

最好在底部有一个单一的返回。这样,你只有一个入口和一个出口。当您不必担心代码将从何处退出时,调试代码就容易多了。这对于非常短的方法来说没什么大不了的,但是对于长达几百行的长方法来说,它要干净得多。

您的两个示例在功能上基本相同,并且两者都可以工作。事实上,优化编译器可以很容易地将第二个示例转换为第一个示例


大多数程序员可能更喜欢第一个,因为目的更明确。

您的两个示例在功能上基本相同,并且两者都可以工作。事实上,优化编译器可以很容易地将第二个示例转换为第一个示例


大多数程序员可能更喜欢第一个,因为意图更明确。

< P>我没有看到在循环中间返回的任何实际含义。如果您听到人们说您不应该这样做,那么它必须基于代码的可读性。如果函数中有多个退出点,可能会使某些代码变得丑陋。此外,大多数情况下,在退出例程之前,您必须进行一些清理。因此,程序员通常倾向于将清理例程保持在一个位置,并始终通过该路径退出。如果您有多个退出点,那么您必须在所有这些位置添加清理例程,这会导致代码重复,并再次破坏代码的可读性。我看到返回的代码到处都是,最终未能正确地进行清理,导致内存泄漏

更大的问题是,您现在编写的代码大部分时间都存在很长一段时间,而且维护人员一直在更改,在某些情况下,人们并不理解当前所有代码行的全部意图。这将增加所有这些混乱


以上所说的,我已经看到了很多非常漂亮的代码,在循环的中间有返回。<我看不出在循环中途返回的实际含义。如果您听到人们说您不应该这样做,那么它必须基于代码的可读性。如果函数中有多个退出点,可能会使某些代码变得丑陋。此外,大多数情况下,在退出例程之前,您必须进行一些清理。因此,程序员通常倾向于将清理例程保持在一个位置,并始终通过该路径退出。如果您有多个退出点,那么您必须在所有这些位置添加清理例程,这会导致代码重复,并再次破坏代码的可读性。我看到返回的代码到处都是,最终未能正确地进行清理,导致内存泄漏

更大的问题是,您现在编写的代码大部分时间都存在很长一段时间,而且维护人员一直在更改,在某些情况下,人们并不理解当前所有代码行的全部意图。这将增加所有这些混乱


以上所说的,我已经看到了很多非常漂亮的代码,在循环的中间有返回。 这是一种风格选择,而不是一种规则或性能问题。第二个代码示例遵循“单输入单输出”方法,其中函数中的代码仅从顶部进入,而仅从底部退出。这背后的想法是,这更“安全”,更容易遵循代码流。当您手动设置动态存储时,安全性就会发挥作用:通过单点返回,您可以确保释放所有内存。当然,像java和C这样的语言为您提供动态存储,所以这不是一个真正的问题。此外,如果您在函数的中间退出多次(特别是如果它很长),则很难跟踪函数返回的原因。 然而,选择仅在函数底部退出会产生自己的问题,因为您有时需要通过设置和检查标志来跟踪更多状态


至于您最初的问题,它肯定不会破坏现代编程语言中的任何东西;一切由你决定。按照你觉得更容易遵循的方式去做。

这是一种风格选择,而不是一种规则或性能问题。第二个代码示例遵循“单输入单输出”方法,其中函数中的代码仅从顶部进入,而仅从底部退出。这背后的想法是,这更“安全”,更容易遵循代码流。当您手动设置动态存储时,安全性就会发挥作用:通过单点返回,您可以确保释放所有内存。当然,像java和C这样的语言为您提供动态存储,所以这不是一个真正的问题。此外,如果您在函数的中间退出多次(特别是如果它很长),则很难跟踪函数返回的原因。 但是,选择仅在函数底部退出可能会产生自身的问题,因为有时可能需要通过设置和检查标志来跟踪更多状态

至于你原来的问题,它肯定不会打破现代体育的任何东西
if (i == 0)
{
    //other code
    b= true;
}
else
{
    //other code
    b= false;
}
return b;