我有一些话题要讨论。我有一个24 if
s /
elif
s的代码片段。Operation
是我自己的类,表示类似于的功能Enum
。
这是一段代码:
if operation == Operation.START:
strategy = strategy_objects.StartObject()
elif operation == Operation.STOP:
strategy = strategy_objects.StopObject()
elif operation == Operation.STATUS:
strategy = strategy_objects.StatusObject()
(...)
从可读性的角度来看,我有些担心。将其更改为24类并使用多态性更好吗?我不相信这将使我的代码可维护…一方面,这些if
s很清楚,应该很容易理解,另一方面,if
s太多了。
我的问题相当笼统,但是我正在用Python编写代码,所以我不能使用switch
。
你怎么看?
更新 :
重要的一点是StartObject()
,StopObject()
并且StatusObject()
是构造函数,我想分配一个对象以进行strategy
引用。
您可以使用字典。字典存储引用,这意味着函数完全可以使用,如下所示:
operationFuncs = {
Operation.START: strategy_objects.StartObject
Operation.STOP: strategy_objects.StopObject
Operation.STATUS: strategy_objects.StatusObject
(...)
}
最好有一个默认操作以防万一,因此在运行它时,请使用atry except
并处理异常(即,与else
子句等效的对象)
try:
strategy = operationFuncs[operation]()
except KeyError:
strategy = strategy_objects.DefaultObject()
或者,使用字典的get
方法,如果找不到您提供的键,则该方法允许您指定默认值。
strategy = operationFuncs.get(operation(), DefaultObject())
请注意,将它们存储在字典中时不包括括号,而在调用字典时才使用它们。同样,这要求它必须是Operation.START
可散列的,但情况确实如此,因为您将其描述为类似于ENUM的类。
if 语句,就是类似于「如果○○的话,做●●」,根据条件判断脚本的一部分是否执行的语法。 语法如下: if(expression) 语句或语句块 else 语句或语句块 第一个“语句或语句块”是当 expression 表达式的结果为真时执行的部分,第二个“语句或语句块”则是结果为假时执行的部分。如果不需要 else 以后的部分,可以省略。 例: if(a==b) inform("a和b相等
主要内容:示例第一个决策声明中,我们来看看 'if' 语句。在 Erlang 这个语句的一般形式,如下面的程序所显示 - 在 Erlang 中,条件它是计算结果为真或假的表达式。如果条件为真,则 statement#1 将被执行,否则 statement#2 将被执行。 下面的程序是 Erlang 中的 if 表达式的一个简单的例子 - 示例 以下是上述程序需要说明的一些关键点 - 这里所使用的表达式是变量A和
Rust 的 if 并不是特别复杂,不过你会发现它更像动态类型语言而不是更传统的系统语言。所以让我来说说它,以便你能把握这些细节。 if 语句是分支这个更加宽泛的概念的一个特定形式。它的名字来源于树的树枝:一个选择点,根据选择的不同,将会使用不同的路径。 在 if 语句中,有一个引向两条路径的选择: let x = 5; if x == 5 { println!("x is five!"
Swift 条件语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 语法 Swift 语言中 if 语句的语法: if boolean_expression { /* 如果布尔表达式为真将执行的语句 */ } 如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。 流程图 实例 i
在程序中 if 语句属于条件语句的一种。 如同 if 的本意,就是根据条件做不同的事情。 1. 基本语法 if 语句的最基本语法如下: // 方式1 if (条件) { // 条件满足做的事情; } // 方式2 if (条件) 条件满足时候做的事情; 通常方式2的使用场景是在条件满足时只会写一行代码的情况,有些代码压缩工具可能会将多个语句配合逗号表达式压缩成方式2。 这是 if 语句两种
if语句 if语句会根据一个布尔表达式的结果进行条件执行。如果布尔表达式结果为true,那么执行if分支,否则,有else的话就执行else分支。 if语句没有什么可讲的,几乎所有语言里面都有,我这里只是举例。 if true{ } if x<y{ …… }else{ …… } //Go中最常见的形式 if err := yourfun(); err != nil {