I started adding informations about the behavior of functions to their name recently.
Two big examples:
pure- this function has no side effects (besides the returned value), which I would use in Java likestatic int addingNumbersPure(int a, int b)(bad example as no one would expect side effects in such a method, but you get my drift).linearTime- the big-o runtime complexity of the code, for exampleObject searchPureLogTime(Object[] sortedArray).
This does give me (and others calling my code) deeper insight into what those methods do - useful in larger project - but on the other hand, I don't feel comfortable using it in interface definitions, as they could be extended with other functionality, breaking this contract. So obviously I only use it for methods that are not designed to be extended (however that is implemented, via language keywords or the architecture of the project itself).
An alternative I used before was Javadocs (or whatever doc system was used in a project) to add those informations, but I don't know of any IDE inlining those docs into the current editor - therefore reading the code as a block does not give the reader those informations.
In the end, I'm conflicted. Is my way of adding those information better or worse than just not giving that information? Is there a better, tool-agnostic way of doing it? What's the industry standard?
PS: While this question is language agnostic, it's obviously irrelevant in languages like Haskell where for example pure is no new information.