| I remember reading John Carmack's comments a few years back and it kind of broke my coding style because it seemed like I did everything opposite of his suggestions. I haven't recovered since. For anyone interested, here is my notes summary from various articles and videos from John. ### John Carmack * Do-always, then inhibit or ignore strategy * Common pattern for me: get first results with hacky code, then write a brand new and clean implementation with the lessons learned, so they both exist and can be cross checked. * If a function is only called from a single place, consider inlining it. * If a function is called from multiple places, see if it is possible to arrange for the work to be done in a single place, perhaps with flags, and inline that. * If there are multiple versions of a function, consider making a single function with more, possibly defaulted, parameters. * If the work is close to purely functional, with few references to global state, try to make it completely functional. * Try to use const on both parameters and functions when the function really must be used in multiple places. * Minimize control flow complexity and "area under ifs", favoring consistent execution paths and times over "optimally" avoiding unnecessary work. |