language-agnostic - 编程 101,如果 block 选择 VS

标签 language-agnostic control-flow

我不确定我是否理解 if block 和 switch/select block 之间的区别。 我的意思是我一直在使用它们。但是我不清楚什么时候应该应用开关 block ,什么时候不应用。因为,一个 select block 可以扩展为 if block 。 所以我能想到的使用 select block 的唯一真正优势是人类可读性。

最佳答案

答案会因语言而有所不同。例如,在 C 和 C++ 中,编译器可以将 switch (select) 语句转换为相当高效的跳转表,部分原因是它们比 if 语句条件更具限制性. (尽管公平地说,现代编译器非常擅长优化各种东西。)这可能不适用于所有语言/编译器(我似乎记得 VB6 基本上将 Select Case 视为一系列If/ElseIf 语句。)

可读性绝对是一个因素:使用 switch(或 VB 中的 Select Case)告诉跟随你的人下面的所有分支都在一个共同条件下分支,这非常有用。

可维护性(与可读性相关但不同)也是一个因素。如果您更改了 switch 中分支的一件事,您就完成了;如果您有一长串 if 语句,很容易漏掉一个(或多个)语句。

关于language-agnostic - 编程 101,如果 block 选择 VS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163835/

相关文章:

linux - 二维几何绘图工具

c# - IEnumerable foreach,对最后一个元素做一些不同的事情

kotlin - 在Kotlin `when`语句(或其他分支构造)中将函数或lambda作为条件包括在内的最简洁方法是什么?

java - AspectJ cflow切入点是如何实现的?

language-agnostic - 如何使用线性插值法估算两个地理坐标之间的当前位置?

algorithm - 谷歌面试 : Arrangement of Blocks

javascript - 将系统值传递给 JavaScript 的最佳方式

python - 为什么我的参数/对象显示为 NoneType 对象?

asynchronous - node.js 的最佳控制流模块是什么?

java - 编写/实现 API : testability vs information hiding