That reminds me, I found this awhile back for business logic: http://brewhouse.io/blog/2014/04/30/gourmet-service-objects.html
I think it solve the problem in most cases rather nicely.
Certain systems do gain stuff like auto complete from some basic comments, outside of that; I would argue that the function name should tell you everything you need to know. If you can't describe what something does in its name, your probably trying to solve too many problems in that function.
I also forgot to point out how tests are often the best documentation for functions.
You can load all your ENV vars to the application in the same place: But I tend to agree with 12 factors in that things should be based on ENV vars so that you can deploy without worrying about config files. This also works really well from things like Docker.
Wanted to make a small amendment. Add
*args
so that you can pass through other options like notices.