![]() |
1
24
叹气。对问题的错误部分过于纠结。switch语句不是问题所在。表达“替代”的方式有很多,但并不增加 意义 . 问题是 意义 --不是技术声明选择。 有三种常见的模式。
其他一切都只是可以实现类似结果的棘手代码。 使用Tuple。这只是一本没有映射的字典。这需要搜索,应尽可能避免搜索。不要这样做,效率很低。使用字典。 http://code.activestate.com/recipes/440499/ ).冰。这掩盖了你正在解决的问题的if-elif-elif性质。不要这样做,选择并不明显 独家 访客 图案。当您有一个对象跟在后面时,请使用此选项 复合 |
![]() |
2
8
在第一个例子中,我当然会坚持if-else语句。事实上,我认为没有理由不使用if-else,除非
你的第二个例子,我实际上会重写
|
![]() |
3
2
考虑到这是对用户操作(从菜单中选择内容)的响应,并且您预期的选择数量非常少,我肯定会选择一个简单的if-elif-else梯形图。 对速度进行优化是没有意义的,因为无论如何,它只会在用户做出选择时发生,这不是“光线跟踪器的内环”领域。当然,给用户快速反馈很重要,但由于病例数量很少,也没有危险。 为了简洁而优化是没有意义的,因为(imo更清晰,零可读性开销)if梯形图无论如何都会很短。 |
![]() |
4
2
我的经验法则是对代码的每个组件问“这里发生了什么?”。如果答案是以下形式
(如“定义函数库 和 将每个与菜单中的一个值相关联”),那么有一些问题需要分开。 |
![]() |
5
1
每个暴露的选项都很适合某些场景:
./亚历克斯 |
![]() |
6
1
我同意df关于第二个例子的看法。第一个例子,我可能会尝试使用字典重写,特别是如果所有曲线构造函数都有相同的类型签名(可能使用*args和/或**kwargs)。有点像
或者甚至
|
![]() |
7
1
在Python中,不要考虑如何替换switch语句。 请改用类和多态性。尽量将每个可用选项的信息以及如何在一个地方实现它(即实现它的类)。 否则,你最终会有很多地方,每个地方都包含每个选择的一小部分,更新/扩展将是一场维护噩梦。 这正是面向对象设计试图通过抽象、信息隐藏、多态和批量来解决的问题。
|