百科问答小站 logo
百科问答小站 font logo



如何减少代码中的if else或者找到代替的方式? 第1页

  

user avatar   feng-dong 网友的相关建议: 
      

问题里这个例子体现了计算的一个本质问题,就是用数据结构的复杂度来换取代码的复杂度。

这个例子本身是 table-driven 的例子。如果 if-else 体现的是一张表,那就 explicitly 构建这张表。OOP 里的虚函数也体现了这个概念。

更复杂的例子是 compiler。不构建 AST 的 compiler 代码生成部分就比较复杂。构建 AST 的代码生成部分就相对简单。

既然很多人提到了复杂度,这里讲一下,本质复杂度(fundamental complexity)只能转移不能降低,但 accidental 复杂度可以降低。而 accidental 复杂度可以从下面的几个方面分析:

  1. 知识更适合用 declarative 的方式表达。从这点来说,数据结构作为 declarative 形式,有可能降低 accidental 复杂度。
  2. 数据结构有可能会降低知识表达的 self-contain 程度。因为数据结构是由另外的代码来解释的。而解释一个 declarative 结构的 generic code 有可能会比简单的 if-else 更复杂。
  3. 所以,数据结构最好有一些除了代码之外,比较明显的自解释表述。这也是软件工程里更强调给数据结构加注释的原因。



  

相关话题

  一条C语言语句不一定是原子操作,但是一个汇编指令是原子操作吗? 
  如何成为 @RednaxelaFX 一样的大牛? 
  为什么程序员的工资比其他行业高这么多? 
  ORM 框架能自动防止SQL注入攻击吗? 
  编程领域都有哪些牛逼闪闪的「禁术」? 
  为什么总有一些人推荐计算机学生把重点放在高数和线代? 
  如果想让中国程序员水平高于美国程序员水平,中国互联网公司应做出哪些变化? 
  C# 事件效率如何? 
  C++中,auto关键字有哪些乱用的情况?平时使用有哪些坑? 
  可以用最通俗的语言告诉我程序员敲的一行行代码怎么变成一个个游戏?那么写代码的难度又在哪里? 

前一个讨论
为什么现在那么多年轻女性喜欢开 SUV?
下一个讨论
如何看待1月30日浙江杭州小伙电梯遭遇陌生女性强吻,高举双手避嫌?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利