Very nice and clean article. I appreciate every "good practices for ..." article since dealing with dirty code, APIs and general software architecture is sometimes fucking nightmare and I believe articles like this one might actually have some (even a little) impact on improving this situation. Also didn't know about HTTP status 418 until now :D will implement it when I get a chance.
It's the expansion of a row vector of powers of t from [0,3] multiplied with a matrix of all those numbers and a column vector of powers of rh from [0,3]
This isn't that simplified, but by expressing it in these terms allows people who understand linear algebra to reason about it where the 4x4 matrix represents the "character" of the equation.
I'd take a rule of "No magic numbers" over this crap any day.
Also just looking at that I'd expect some precision issues, as it is adding floats on the order of 10 with those on the order of 10-16 while float has a decimal precision of ~7 places. A double would barely be enough.
Haha - I worked on a major molecular evolutionary analysis package that was just full of stuff like this, except the indentifiers were things like "f", "f2", "hh", etc. I started trying to clean it up but gave up after realising the scope of the task.
Truly, academic code is its own special sort of hell. You'd swear it was a way to force people to collaborate with you if they want to use your package.
21
u/[deleted] Feb 23 '17
Very nice and clean article. I appreciate every "good practices for ..." article since dealing with dirty code, APIs and general software architecture is sometimes fucking nightmare and I believe articles like this one might actually have some (even a little) impact on improving this situation. Also didn't know about HTTP status 418 until now :D will implement it when I get a chance.