逻辑或查找表:最佳实践

时间:2016-03-03 18:13:18

标签: function matrix logic lookup

假设您有一个函数/方法使用两个度量来返回一个值 - 实质上是一个可能值的二维矩阵。使用逻辑(嵌套if / switch语句)来选择正确的值,或者只是构建该矩阵(作为数组/哈希/字典/其他)更好,然后返回值只是执行查找的问题?

我的直觉是,对于 M N 矩阵, M N (如≤3)可以使用逻辑,但是对于更大的值,构建矩阵会更有效。

这方面的一般最佳做法是什么?那么 N - 维矩阵呢?

2 个答案:

答案 0 :(得分:1)

决定取决于多种因素,包括:

  • 哪个选项使代码更易读,因此更易于维护
  • 哪个选项的执行速度更快,尤其是查找发生的次数
  • 矩阵中的值多久会发生变化?如果答案是“经常”,那么最好将代码中的值外部化,并将它们放入以简单编辑的方式存储的矩阵中。
  • 不仅矩阵有多大,还有多么稀疏?

答案 1 :(得分:0)

我所说的是关于九个条件是if .. else梯形图或开关的限制。因此,如果你有一个2D单元,你可以合理地硬编码上,下,对角线等。如果你去三个维度你有27个案例而且它太多了,但是如果你被限制在六个幼崽的脸上就可以了。 一旦你有很多条件,就可以通过查找表开始编码。

但是没有真正的答案。例如,Windows消息循环需要处理许多不同的消息,并且您无法在查找表中对处理代码进行合理编码。