The code itself and any necessary inline comments will describe the implementation. Arguments passed to a procedure should be described when their functions are not obvious and when the procedure expects the arguments to be in a specific range. Function return values and global variables that are changed by the procedure, especially through reference arguments, must also be described at the beginning of each procedure. Assumptions List of each external variable, control, open file, or other element that is not obvious. Each argument that may not be obvious.
Arguments are on a separate line with inline comments.
Returns Explanation of the values returned by functions. Variables, controls, and procedures should be named clearly enough that inline commenting is only needed for complex implementation details. The functional overview comment of a procedure should be indented one space. The highest level statements that follow the overview comment should be indented one tab, with each nested block indented an additional tab. When creating a long string, use the underscore line-continuation character to create multiple lines of code so that you can read or debug the string easily.