<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/pattern.xsl"?>
<pattern id="">
  <name>Clear Names</name>
  <relatedPatterns>
    <relatedPattern ref="" />
       <patternLink>All Other Patterns</patternLink>
  </relatedPatterns>
  <!-- The diagram is a graphic representation of the pattern.-->
  <diagram>
    <web>
    <img src="DiagramName.gif" width="400"/>
	</web>
	<latex>
	<img src="DiagramName.pdf" width="400"/>
	</latex>
  </diagram>
  <what>
    <paragraph>
      Use clear, meaningful, short and memorable names<latex>\index{name}</latex> for objects.
    </paragraph>
  </what>
  <when>
    <paragraph>
      Always, except for work you intend to throw away. 
    </paragraph>
  </when>
  <why>
    <paragraph>
      Objects have names. You use these to remember how you have
      organized a model, to refer to parts as you create and edit
      links, and to communicate a model to others. Clear, meaningful, short and
      memorable names are a prerequisite for making a model useful
      beyond its immediate creation.
    </paragraph>
  </why>
  <how>
    <paragraph>
      Good names are clear; they convey what you intend. They are
      meaningful; usually this means they relate to either the form or
      function of a design. They are as short as they need to be (and
      no shorter). A good and useful convention for concision is
      <em>CamelCasing,</em> putting words together with no spacing or linking
      punctuation and capitalizing each word (separate numbers with
      punctuation). Memorable names relate to design concepts.
    </paragraph>
    <paragraph>
      Bad names are easier to invent than good ones. Perhaps the worst
      naming scheme is by object type. "Point01," "vector03" and 
      "coordinateSystem06" provide no new information; the type of an
      object is readily accessible as one of its properties.  
    </paragraph>
    <paragraph>
      Naming is active. If you watch an experienced parametric
      designer, you will certainly witness a process of naming,
      reflection and renaming. As models increase in complexity, this
      expensive refactoring returns a benefit. Without it, modeling
      stalls in confusion and error. Be warned. Unless you are much
      smarter than any parametric modeler I have ever seen, you need
      to attend carefully to the names of model parts. It takes time
      and effort, but returns capability and reliability.
      <latex>
	\genNote[marginBottom]{
	 \pbOneCol[r]{
          \textsf{
           \textbf{Some likely good names}\\
	     MainBeam3\\
	     RoofPanel\\
	     SouthFacade\\
	     DesignSurface\\
	     PlaceHolder\\
	     Truss8\\
	     Purlin8\_3\\
	     Foundation\\
	     RoseWindow\\
	     Pane3\_7\\
	     ColumnA\_7\\
	     Hypotenuse\\
           \vspace{30mm}
	   \textbf{Some usually bad names}\\
	     Point02\\
	     BSplineA\\
	     foobar\\
	     aardvark\\
	     here\\
	     there\\
	     angle6\\
	     parabola\\
	     thingamabob\\
	     IansPlane\\
	     abc\\
	     AfDrAp\\
             \vspace{15mm}
	     \textsf{Source for tag cloud:\\
	     www.wordle.net}
	  }
 	 }
	}{-15mm}
      </latex>
    </paragraph>
  </how>
</pattern>

