How do you guys approach abstractions when reading code?
ieatpaste: Personally, I have little trust in documentation. Not that it's useless, but that documentation rarely holds everything you need to know about the code. Usually, I'll take a high-to-low level approach, and use visualization programs/plugins which graph the class dependencies and overall structure. I'll take a look at the Jdoc/similar for class/function definitions, and then look at the run a debugger and look at the stack to see the flow of functions. This strategy works well for 99% of cases.Though planning ahead is good, sometimes the extra, non-implemented features are dead weight until finished. I would recommend designing for expansion structure-wise, but working on just the immediate changes. This way it makes the code easier to read, and simpler (relatively speaking).I'd like to know people's opinions for performance vs ease-of-readability/ease-of-extensibility. Personally, I find that when the code I've written is too complex, then the code probably isn't very good. In that case, I'll rewrite if the architecture is off, or just refactor to make it prettier/more extensible, even at the cost of a little performance.