逻辑或查找表:最佳实践

Posted

技术标签:

【中文标题】逻辑或查找表:最佳实践【英文标题】:Logic or lookup table: Best practices 【发布时间】:2016-06-17 05:33:07 【问题描述】:

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

我的直觉是,对于 MN 矩阵,MN的值都相对较小>(如 ≤3)可以使用逻辑,但对于较大的值,仅构建矩阵会更有效。

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

【问题讨论】:

【参考方案1】:

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

哪个选项使代码更具可读性,因此更易于维护 哪个选项执行得更快,尤其是在查找发生无数次的情况下 矩阵中的值多久更改一次?如果答案是“经常”,那么最好将这些值从代码中外部化,并将它们放入一个矩阵中,以一种可以简单编辑的方式存储。 不仅矩阵有多大,而且它有多稀疏?

【讨论】:

【参考方案2】:

我所说的是,大约九个条件是 if .. else 阶梯或开关的限制。因此,如果您有一个 2D 单元格,您可以合理地硬编码向上、向下、对角线等。如果你去三个维度,你有 27 个箱子,这太多了,但如果你被限制在六个幼崽的脸上,那就没问题了。 一旦你有了很多条件,就可以通过查找表开始编码。

但没有真正的答案。例如,Windows 消息循环需要处理很多不同的消息,而您不能明智地将处理代码编码到查找表中。

【讨论】:

你在说什么,“上升”、“下降”、“对角线”和“立方体面”?

以上是关于逻辑或查找表:最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

最佳实践 - 基于用户选择构建查询

使用 JavaScript 在客户端过滤项目、隐藏或从 DOM 中删除的最佳实践?

技术分享MySQL数据库优化的最佳实践

Flyway 最佳实践:一个大型迁移脚本与多个增量脚本

AutoIt 最佳实践/编码风格

使用Android中的内容提供程序公开多个表的最佳实践