Naming Conventions

Stratego -- Strategies for Program Transformation
Naming conventions are important in any platform. If the naming conventions are followed in the library and by the developers of a project, you can remember the name of method, variable or whatever much better. This increases you productivity and the joy in your work, which is of course the most important thing in life.

Checking the name of a method in the documentation or source-code is quite tiresome. If you know the naming-scheme you only have to know the 'semantic' name of a method and you don't have to worry about the concrete syntax, which you can compose from the semantic name and the convention of the platform you are using.


Strategies and rules

Naming conventions can be separated in conventions for the syntax of a name and conventions for the scheme of a name for a specific type of strategy. The conventions for the syntax of a name deal with the usage of dashes, underscores, lowercase, uppercase and so on. The conventions of the names themselves deal with standard name construction, indicating the 'kind' of the item (like is, set and get in the library of the JavaLanguage?)

In Stratego there are two important conventions for the syntax of names:

  • Names of strategies are written in lowercase where indiviual words of the name are separated by dashes. Examples: int-to-string, map, eval-exp.
  • Names of rules are written in CamelCase?. Examples: EvalExp, Desugar, Inline, TcExp

An exception to the strategy naming convention are strategies that merely alias or collect rules and do not perform a very interesting traversal. These strategies may just as well follow the convention for rule names. Example:
ElimDead = ElimDeadFun + ElimDeadRec
(where ElimDeadFun and ElimDeadRec are (possibly dynamic) rules).

Futhermore overlays are written like constructors, which are written in CamelCase?. Examples: BinOp, VarDec, Call.


to do.

Naming scheme

A naming scheme is helpful because it is a first indication of the task of a strategy. For any language holds: be precise and clear but prevent being to verbose.


The first task that comes in mind is testing. Test-strategies verify whether the current term satisfies some condition or not. Test-strategies fail when the term doesn't satisfy the condition and leave the current term untouched otherwise. Test-strategies should be called is-*. Examples: is-int, is-list, is-Exp, is-Declared.

-- MartinBravenboer - 05 May 2002