A suggestion from Bob Martin's "Clean code" has me scratching my head.. "If once function calls another, they should be vertically close and the caller should be above the callee"
So far, I've been more or less sticking close to the .Net guidelines, which group class members by type (properties, ctors, functions) and visibility (public / prot. / private). The tip seems like trouble at first.. but it "just might work". I personally have encountered cases where I liked this layout - easier to drill down when you're in the right call chain.
Has anyone tried this out for an extended period ?
I might be going out on a limb here, but I wonder if the tool you use has an impact on this. I'm referring to the text editor versus IDE decision that developers must make.
In an IDE, you have a lot more functionality to view source files. Typically, you can get a list of the methods sorted alphabetically, by visibility, or even return type in a sidebar. You can also jump to a method if you have a use for it. You can also generate call trees for methods and drill down. You also typically have a powerful find command that might support regular expressions. In this situation, the order of methods that you create really doesn't matter as you have views other than the source code available.
In a text editor, you typically don't have these features - the closest that you'll have is probably a strong find/replace. Here, you're going to want to pay more attention to the structure of your file since it might be harder to navigate. You want to minimize the time spent scrolling around the file to find what you are looking for, and a consistent and logical order of methods can help.
The point is that called things are less interesting than calling things. The more a method calls other methods, the more likely it is that that method is part of the external API of the object (as opposed to being an implementation detail). That means the external API of the class - public methods, if your language supports that concept - will naturally "want" to be at the top of the file, making it easier to find those methods. Conversely, helper functions and such will "want" to be at the bottom of the file.
If by extended period you mean for more than a couple of days? Then No.
A couple of years ago I started doing this on some new code, and slowly drove myself insane, until I stopped.
We've a guy here in office keeps a strict structure on everything in a class file, with everything grouped together in main groups and sub groups, all nicely nested in regions . . . I have to admit I think regions are the work of Satan, they drive me around the feckin twist.