123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- Libre.fm Coding Standards (Adapted from phpGroupWare standards)
- Please comply with the following standard when working on Libre.fm if you
- want your patches accepted and modules included in supported releases.
- 1) Format your code so that we can read it, please!
- 2) Use tabs for formatting, NOT SPACES. Tabs create smaller files and editors allow
- developers to view a tab as however many spaces as they prefer - we use 4 spaces.
- Spaces do not allow this.
- 3) Use ' instead of " for strings, where substitutions aren't required. This is a
- performance issue, and prevents a lot of inconsistent coding styles. When using
- substitutions, use curly braces around your variables - like so:
- $var = "my_var: {$my_var}";
- 4) Comments go on the line ABOVE the code, NOT to the right of the code, unless it
- is very short.
- 5) All functions and methods are to be documented using PhpDocumentor - http://phpdoc.org
- 6) Use switch statements where many else if's are going to be used. Switch/case is faster
- 7) 'If' statements need to use the following format:
- if ($var == 'example') {
- echo 'This is only an example';
- } else {
- echo 'This is not a test. This is the real thing';
- }
- Do NOT make if statements like this:
- if ($var == 'example'){ echo 'An example'; }
- OR this
- if($var = 'example')
- echo "An {$var}";
- 8) class/function format:
- /**
- * This class is for testing
- */
- class ModuleTesting {
- /**
- * Output the value of $my_var the user
- */
- public function printToScreen() {
- $my_var = new Monkey();
- if ($my_var->name == 'example') {
- echo 'This is only an example';
- } else {
- echo 'This is not a test. This is the real thing';
- }
- }
- }
- 10) Associative arrays must be written in the following manner:
- $array = array (
- 'var' => 'value',
- 'var2' => 'value2'
- );
- Note that spaces are preferred around the '=>'.
- 11) Use the long format for <?php. Do NOT use <?.
- 12) a) Classes begin with a capital letter and use CamelCase for separating words (e.g. MyClass).
- b) Functions/Methods start with a lower case letter and use CamelCase for separating words (e.g. myFunction).
- c) Variables are all lower case and use _ for separating words (e.g. my_variable).
- 13) Always use symbol based comparison operators (&&, ||) instead of text based
- operators (AND, OR) as they are evaluated in different orders and at different
- speeds. This is will prevent any confusion or strange results.
- 14) You code must run with E_ALL error reporting turned on, E_NOTICES are ERRORS!
- Where possible your code should run with E_STRICT error reporting.
- 15) All variables, classes, methods, functions and comments must be in English.
- Bad english is easier to work with than having to babelfish code to work out
- how it works.
- 16) Files should be in either ASCII or UTF-8 encoding with UNIX line endings.
- 17) Files should not end with an ending php tag "?>". Any whitespace after
- the closing tag is sent to the browser and cause errors, so don't include
- them.
- 18) Translatable strings in templates should be surrounded by a {t} block,
- (e.g. {t}Translate me!{/t}). See the smarty gettext documentation for more
- advanced usage.
- 19) When comparing strings in lower-case always use the DBMS lower() function
- where possible. strtolower() doesn't handle multi-byte characters and
- and mb_strtolower is typically much less efficient. Since this is typically
- used when comparing against a lower()'d database field it also ensures
- consistency in the comparison.
- 20) If you see code which doesn't comply with the above, please fix it :)
|