在我的代码中硬编码复杂的数学逻辑是否可以?

Bob*_*orn 7 c#

是否有一种普遍接受的编码复杂数学的最佳方法?例如:

double someNumber = .123 + .456 * Math.Pow(Math.E, .789 * Math.Pow((homeIndex + .22), .012));
Run Code Online (Sandbox Code Playgroud)

这是一个硬编码数字的点吗?或者每个数字是否都有与之相关的常数?或者是否有另一种方式,比如在config中存储计算并以某种方式调用它们?

会有很多像这样的代码,我试图让它保持可维护性.

注意:上面显示的示例只是一行.这些代码行将有数十或数百行.不仅数字会改变,而且公式也可以改变.

das*_*ght 20

通常,有两种常量 - 对实现有意义的常量,对业务逻辑有意义的常量.

可以对第一类常量进行硬编码:它们对于理解算法是私有的.例如,如果您使用三元搜索并需要将间隔分为三个部分,则除以硬编码3是正确的方法.

另一方面,具有在程序代码之外的含义的常量不应该是硬编码的:赋予它们明确的名称可以让您在离开公司之后维护代码的人有非零的机会进行正确的修改而无需重写从头开始或通过电子邮件向您寻求帮助.