逻辑或查找表:最佳实践
Posted
技术标签:
【中文标题】逻辑或查找表:最佳实践【英文标题】:Logic or lookup table: Best practices 【发布时间】:2016-06-17 05:33:07 【问题描述】:假设您有一个函数/方法,它使用两个度量来返回一个值——本质上是一个可能值的二维矩阵。是使用逻辑(嵌套的 if/switch 语句)来选择正确的值,还是只构建该矩阵(作为数组/哈希/字典/其他)更好,然后返回值变得只是执行查找的问题?
我的直觉是,对于 M⨉N 矩阵,M 和 N的值都相对较小>(如 ≤3)可以使用逻辑,但对于较大的值,仅构建矩阵会更有效。
这方面的一般最佳做法是什么? N 维矩阵呢?
【问题讨论】:
【参考方案1】:决定取决于多种因素,包括:
哪个选项使代码更具可读性,因此更易于维护 哪个选项执行得更快,尤其是在查找发生无数次的情况下 矩阵中的值多久更改一次?如果答案是“经常”,那么最好将这些值从代码中外部化,并将它们放入一个矩阵中,以一种可以简单编辑的方式存储。 不仅矩阵有多大,而且它有多稀疏?【讨论】:
【参考方案2】:我所说的是,大约九个条件是 if .. else 阶梯或开关的限制。因此,如果您有一个 2D 单元格,您可以合理地硬编码向上、向下、对角线等。如果你去三个维度,你有 27 个箱子,这太多了,但如果你被限制在六个幼崽的脸上,那就没问题了。 一旦你有了很多条件,就可以通过查找表开始编码。
但没有真正的答案。例如,Windows 消息循环需要处理很多不同的消息,而您不能明智地将处理代码编码到查找表中。
【讨论】:
你在说什么,“上升”、“下降”、“对角线”和“立方体面”?以上是关于逻辑或查找表:最佳实践的主要内容,如果未能解决你的问题,请参考以下文章