Questions tagged «control-structures»

9
“仅返回”的概念从何而来?
我经常跟程序员谁说:“ 不要把多个return语句相同的方法。 ”当我问他们告诉我的原因,我得到的是“ 编码标准是这么说的。 ”或者“ 这是令人困惑的。 ”当他们通过单个return语句向我展示解决方案时,代码对我来说看起来更难看。例如: if (condition) return 42; else return 97; “ 这很丑,您必须使用局部变量! ” int result; if (condition) result = 42; else result = 97; return result; 50%的代码膨胀如何使程序更易于理解?我个人觉得比较困难,因为状态空间刚刚增加了另一个很容易避免的变量。 当然,通常我会写: return (condition) ? 42 : 97; 但是许多程序员避免使用条件运算符,而是喜欢长格式。 “仅返回”的概念从何而来?产生这种约定是否有历史原因?

19
我应该尽早从函数返回还是使用if语句?[关闭]
我经常用两种格式编写这种函数,我想知道一种格式是否比另一种格式更受青睐,为什么。 public void SomeFunction(bool someCondition) { if (someCondition) { // Do Something } } 要么 public void SomeFunction(bool someCondition) { if (!someCondition) return; // Do Something } 我通常使用第一个编码,因为这是我的大脑在编码时的工作方式,尽管我认为我更喜欢第二个编码,因为它可以立即处理所有错误,而且我觉得它更易于阅读

20
“ break”和“ continue”是否是不好的编程习惯?
我的老板一直提满不在乎地那么糟糕的程序员使用break,并continue在循环中。 我一直在使用它们,因为它们很有意义。让我向您展示灵感: function verify(object) { if (object->value < 0) return false; if (object->value > object->max_value) return false; if (object->name == "") return false; ... } 这里的要点是,首先该功能检查条件是否正确,然后执行实际功能。IMO同样适用于循环: while (primary_condition) { if (loop_count > 1000) break; if (time_exect > 3600) break; if (this->data == "undefined") continue; if (this->skip == true) continue; ... …

4
为什么要接住捕捉,必须使用方括号?
您可以使用多种语言(至少需要Java,也可以考虑使用C#吗?) if( condition ) singleStatement; while( condition ) singleStatement; for( var; condition; increment ) singleStatement; 因此,当我只有一条语句时,不需要使用添加新的作用域{ }。为什么我不能通过try-catch做到这一点? try singleStatement; catch(Exception e) singleStatement; 关于try-catch是否有一些特别之处,需要始终拥有新的作用域或其他内容?如果是这样,编译器无法解决该问题吗?

8
为什么Clang / LLVM在覆盖所有枚举情况的switch语句中警告我使用default?
考虑以下枚举和switch语句: typedef enum { MaskValueUno, MaskValueDos } testingMask; void myFunction(testingMask theMask) { switch (theMask) { case MaskValueUno: {}// deal with it case MaskValueDos: {}// deal with it default: {} //deal with an unexpected or uninitialized value } }; 我是一个Objective-C程序员,但是我已经用纯C语言编写了此文档,以供更广泛的读者使用。 带有-Weverything的Clang / LLVM 4.1在默认行警告我: 开关中的默认标签,涵盖所有枚举值 现在,我可以看到为什么会出现这种情况:在理想情况下,参数中唯一输入的值theMask将在枚举中,因此不需要默认值。但是,如果出现一些hack并将未初始化的int放入我的漂亮函数中怎么办?我的功能将作为库中的一部分提供,我无法控制其中的内容。使用default是处理此问题的一种非常简洁的方法。 为什么LLVM众神认为这种行为不符合他们的地狱装置?我应该在前面加上if语句来检查参数吗?

2
为什么Scala会返回但没有中断并继续
Scala没有break或continue,因此某些循环行为需要更多的思考。 尽早结束循环需要尾递归,异常或scala.util.control.Breaks(使用异常)。 这样做的理由是,就像一样goto,它们是使流量模糊的流程构造,可以用更好,更令人惊讶的方式来完成。 但似乎可以使用相同的论点return。 为什么斯卡拉故意忽略break和continue,但不return?

22
您知道哪些有用的替代控制结构?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 SO上也有类似问题。 有时,当我们进行编程时,我们会发现某些特定的控制结构对我们非常有用,但是在我们的编程语言中并不能直接使用。 您认为哪些替代控制结构是组织计算的有用方法? 这里的目标是获得有关代码结构的新思考方式,以改善分块和推理。 您可以创建一个现在不可用的理想语法/语义,或者在现有的编程语言上引用一个鲜为人知的控件结构。 答案应该为新的编程语言或增强实际语言提供思路。 认为这是集思广益,所以发布您认为是疯狂的主意,但在某些情况下可行。 这是关于命令式编程的。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.