In most programming projects, the most important thing is maintainability, and that is relative to the skill of the maintainer.
If the maintainer is going to be junior developer, then writing complex OO design is not good, even if it makes the program more concise; if the maintainer is a business developer who is not good in math, then crafting non-trivial algorithms will throw him off, even if it means shorter program; if the maintainer is smart and willing to learn, then you can do whatever.
In most programming projects, the most important thing is maintainability, and that is relative to the skill of the maintainer.
If the maintainer is going to be junior developer, then writing complex OO design is not good, even if it makes the program more concise; if the maintainer is a business developer who is not good in math, then crafting non-trivial algorithms will throw him off, even if it means shorter program; if the maintainer is smart and willing to learn, then you can do whatever.