<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to CodingGuidelines</title><link>https://sourceforge.net/p/teebx/wiki/CodingGuidelines/</link><description>Recent changes to CodingGuidelines</description><atom:link href="https://sourceforge.net/p/teebx/wiki/CodingGuidelines/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 09 Aug 2015 17:37:47 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/teebx/wiki/CodingGuidelines/feed" rel="self" type="application/rss+xml"/><item><title>CodingGuidelines modified by Anonymous</title><link>https://sourceforge.net/p/teebx/wiki/CodingGuidelines/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;This document contains the coding guidelines for the TeeBX Project. &lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In order to keep the code consistent, contributors are pleased to use the following conventions. It is not a judgment call on your coding abilities, but more of a style and look call. Please try to follow these guidelines to ensure prettiness. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Basic rules:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is more important to be correct than to be fast.&lt;br/&gt;
It is more important to be maintainable than to be fast.&lt;br/&gt;
Spending a minute now commenting code will save a lot tomorrow.&lt;br/&gt;
Fast code that is difficult to maintain is likely going to be looked down upon. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="indentation"&gt;Indentation:&lt;/h3&gt;
&lt;p&gt;- Use tabs, &lt;strong&gt;NOT&lt;/strong&gt; spaces so anyone will be able to view indentation the way they like.&lt;br/&gt;
But be careful to use consistently, restricted to logical indentation, please do not use tabs for alignment. &lt;/p&gt;
&lt;p&gt;- Bracing.&lt;br/&gt;
Use Allman style, also referred to as "ANSI style". Indented code is clearly set apart from the containing statement by lines that are almost completely whitespace, improving readability, and the closing brace lines up in the same column as the opening brace, making it easy to find matching braces. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;while (x &amp;lt; y)&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  if (isset(&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="x"&gt;['index']))&lt;/span&gt;
&lt;span class="x"&gt;  &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;    &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;some&lt;/span&gt;&lt;span class="x"&gt; .= &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;that&lt;/span&gt;&lt;span class="x"&gt; . "&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="x"&gt;\n";&lt;/span&gt;
&lt;span class="x"&gt;  &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="x"&gt;++;&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;

&lt;span class="x"&gt;finalThings();&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;When defining a function, use the C style for brace placement, that means, use a new line for the brace. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;doSome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$param&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;code&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;- Case statements.&lt;br/&gt;
Switch statements must have the case one tab inner the switch, also the code block inside a case must be a tab inner the case. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;switch (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  case 'a':&lt;/span&gt;
&lt;span class="x"&gt;    &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;result&lt;/span&gt;&lt;span class="x"&gt; = &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="x"&gt;;&lt;/span&gt;
&lt;span class="x"&gt;    break;&lt;/span&gt;
&lt;span class="x"&gt;  case 'b':&lt;/span&gt;
&lt;span class="x"&gt;    ...&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3 id="whitespaces"&gt;Whitespaces:&lt;/h3&gt;
&lt;p&gt;Use spaces to enhance readability. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="x"&gt; = 'tree';&lt;/span&gt;
&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;format&lt;/span&gt;&lt;span class="x"&gt; = 'There are now %d birds on the %s';&lt;/span&gt;
&lt;span class="x"&gt;for (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt; = 1; &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt; &amp;lt;= 10; &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt;++)&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  printf(&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;format&lt;/span&gt;&lt;span class="x"&gt;, &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt;, &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="x"&gt;);&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Place spaces between control statements and their parentheses. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;if (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  i++;&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Do not place spaces between a function and its parentheses, or between a parenthesis and its content. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;char&lt;/span&gt;&lt;span class="x"&gt; = bin2hex(substr(&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="x"&gt;, &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt;, 1));&lt;/span&gt;
&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;char&lt;/span&gt;&lt;span class="x"&gt; = bin2hex (substr (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="x"&gt;, &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt;, 1)); // NO!!&lt;/span&gt;
&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;char&lt;/span&gt;&lt;span class="x"&gt; = bin2hex( substr( &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="x"&gt;, &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="x"&gt;, 1 ) ); // NO!!&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3 id="line-breaking"&gt;Line breaking:&lt;/h3&gt;
&lt;p&gt;- Each statement should get its own line. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;x++; y++; // NO!!&lt;/span&gt;
&lt;span class="x"&gt;if (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="x"&gt;) echo 'abc'; // NO!!&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;This is ok... &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;x++;&lt;/span&gt;
&lt;span class="x"&gt;y++;&lt;/span&gt;
&lt;span class="x"&gt;if (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;span class="x"&gt;  echo 'abc';&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3 id="operators"&gt;Operators:&lt;/h3&gt;
&lt;p&gt;Avoid using the "ternary operator" as a conditional operator whenever possible, it's concise but make code less readable and more prone to errors and unexpected results.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;This one... &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;($&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;$&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="o"&gt;)?$&lt;/span&gt;&lt;span class="nt"&gt;x&lt;/span&gt;&lt;span class="o"&gt;:$&lt;/span&gt;&lt;span class="nt"&gt;y&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Please&lt;/span&gt; &lt;span class="nt"&gt;NO&lt;/span&gt;&lt;span class="o"&gt;!!&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Can be easily rewritten as... &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;if (&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="x"&gt; &amp;gt; &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;result&lt;/span&gt;&lt;span class="x"&gt; = &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="x"&gt;;&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;span class="x"&gt;else&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;  &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;result&lt;/span&gt;&lt;span class="x"&gt; = &lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="x"&gt;;&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h3 id="code-comments"&gt;Code Comments:&lt;/h3&gt;
&lt;p&gt;Comment every significant code block, so others would easily understand it's function.&lt;br/&gt;
Every function and/or class method declaration &lt;strong&gt;must be preceeded&lt;/strong&gt; by a comment clearly explaing it's purpose and calling parameters. PhpDocumentor format preferred.&lt;br/&gt;
&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="cm"&gt;/**&lt;/span&gt;
&lt;span class="cm"&gt; * Shorthand to set options to be shown for an existing select html element.&lt;/span&gt;
&lt;span class="cm"&gt; *   The $items var sets one or more &amp;lt;option&amp;gt; tag using pipe separated list.&lt;/span&gt;
&lt;span class="cm"&gt; *   Each list element sets attributes for a specific option, separated by = sign:&lt;/span&gt;
&lt;span class="cm"&gt; *   value=display_value=selected_flag=option_group_label&lt;/span&gt;
&lt;span class="cm"&gt; *   the first two values are mandatory.&lt;/span&gt;
&lt;span class="cm"&gt; * Usage example:&lt;/span&gt;
&lt;span class="cm"&gt; *   $form-&amp;gt;setSelectOpts('line', 'isdnbri=ISDN BRI=1=Technology|analog=POTS Line=0=Technology');&lt;/span&gt;
&lt;span class="cm"&gt; *&lt;/span&gt;
&lt;span class="cm"&gt; * @param string $id select tag unique identifier&lt;/span&gt;
&lt;span class="cm"&gt; * @param string $options pipe separated list of select options and attibutes&lt;/span&gt;
&lt;span class="cm"&gt; * @return integer (0: No errors, 10: id not found, 20: id not a select, 30: not enough attributes&lt;/span&gt;
&lt;span class="cm"&gt; */&lt;/span&gt;
&lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;setSelectOpts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;tagsPool&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$id&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;- &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Sun, 09 Aug 2015 17:37:47 -0000</pubDate><guid>https://sourceforge.net2e52f0204e58c28d9ae190a34418fc7cb054f5a2</guid></item></channel></rss>