====== Symbol names and scope ====== ===== Naming conventions ===== * Local variables are lower case, with words (if any) separated by underscores. * Class instance variables begin with a single underscore. * Formal parameters (arguments passed to functions) begin with an Upper case letter, and are otherwise lower case. * Do not use "using". Instead, explicitly specify the scope with every use. * Constants are ALL_CAPS. * Members of an enum set begin with a lower case letter, but are otherwise ALL CAPS. That lower case prefix is the same for all members of the same enum set. * Class names may be either ALL_CAPS or may be Mixed_Case_With_Words_Capitalized, with Words_Separated_By_Underscore, but be consistent. ALL_CAPS are preferred for base classes, Mixed_Case is preferred for "final" and application classes. * Do not use CamelCase. * Avoid single letter names. * Occasionally, it is ok to insert an un_derscore in a funny place to make it easier to "grep". * Flag symbols (both variables and methods) begin with "is_", for example "is_empty". ===== Scope guidelines ===== * In general, please restrict all names to the narrowest useful scope. * Avoid globals. If you really must make something global, put it in a namespace so its origin is clear. * Class instance variables should be private or protected.