Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it okay to hard-code complex math logic inside my code?

Tags:

c#

Is there a generally accepted best approach to coding complex math? For example:

double someNumber = .123 + .456 * Math.Pow(Math.E, .789 * Math.Pow((homeIndex + .22), .012));

Is this a point where hard-coding the numbers is okay? Or should each number have a constant associated with it? Or is there even another way, like storing the calculations in config and invoking them somehow?

There will be a lot of code like this, and I'm trying to keep it maintainable.

Note: The example shown above is just one line. There would be tens or hundreds of these lines of code. And not only could the numbers change, but the formula could as well.

like image 604
Bob Horn Avatar asked Sep 10 '13 17:09

Bob Horn


People also ask

Why should we not use hard code?

If you hardcode something on your code it will completely "destroy" the portability of your code in a great extent. Even with a platform independant languages you will not able to say "Compile once, Run anywhere". Since it is not a good software engineering practice, I think avoiding hardcodes is better.

What counts as hard coding?

In computer programming or text markup, to hardcode (less frequently, hard code ) is to use an explicit rather than a symbolic name for something that is likely to change at a later time. Such coding is sometimes known as hardcode (noun) and it is more difficult to change if it later becomes necessary.


1 Answers

Generally, there are two kinds of constants - ones with the meaning to the implementation, and ones with the meaning to the business logic.

It is OK to hard-code the constants of the first kind: they are private to understanding your algorithm. For example, if you are using a ternary search and need to divide the interval in three parts, dividing by a hard-coded 3 is the right approach.

Constants with the meaning outside the code of your program, on the other hand, should not be hard-coded: giving them explicit names gives someone who maintains your code after you leave the company non-zero chances of making correct modifications without having to rewrite things from scratch or e-mailing you for help.

like image 106
Sergey Kalinichenko Avatar answered Nov 15 '22 17:11

Sergey Kalinichenko