By the way, I would like to expand a bit on the Ctrl-P argument.
In my mind, code has to be written according to principles that concern the code itself. How does client code look like, usage, readability, performance, good organization, maintenance, etc.
I never design code to bend to anything outside the code itself. Like tests, docs, or editors. Code is first, it is the duty of tests and docs to adapt to code, not the other way around.
So, either I am fine with the limitarions of Ctrl-P navigation and run the occasional grep, or else I add ctags to the project, or use RubyMine that is able to go to definitions robustly out-of-the-box. I would not organize my code to satisfy the shortcomings of tool.
(Again, sharing points of view, not meaning others should think like me.)
--
Sent from Gmail Mobile