Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php  | 
            ||
| 10 | class Hilbert { | 
            ||
| 11 | |||
| 12 | var $hilbert_map = array(  | 
            ||
| 13 | 'a' => array(  | 
            ||
| 14 | "0, 0" => array(0, 'd'),  | 
            ||
| 15 | "0, 1" => array(1, 'a'),  | 
            ||
| 16 | "1, 0" => array(3, 'b'),  | 
            ||
| 17 | "1, 1" => array(2, 'a'),  | 
            ||
| 18 | ),  | 
            ||
| 19 | 'b' => array(  | 
            ||
| 20 | "0, 0" => array(2, 'b'),  | 
            ||
| 21 | "0, 1" => array(1, 'b'),  | 
            ||
| 22 | "1, 0" => array(3, 'a'),  | 
            ||
| 23 | "1, 1" => array(0, 'c'),  | 
            ||
| 24 | ),  | 
            ||
| 25 | 'c' => array(  | 
            ||
| 26 | "0, 0" => array(2, 'c'),  | 
            ||
| 27 | "0, 1" => array(3, 'd'),  | 
            ||
| 28 | "1, 0" => array(1, 'c'),  | 
            ||
| 29 | "1, 1" => array(0, 'b'),  | 
            ||
| 30 | ),  | 
            ||
| 31 | 'd' => array(  | 
            ||
| 32 | "0, 0" => array(0, 'a'),  | 
            ||
| 33 | "0, 1" => array(3, 'c'),  | 
            ||
| 34 | "1, 0" => array(1, 'd'),  | 
            ||
| 35 | "1, 1" => array(2, 'd'),  | 
            ||
| 36 | ),  | 
            ||
| 37 | );  | 
            ||
| 38 | |||
| 39 | var $rev_map = Array(  | 
            ||
| 40 | 'a' => Array(  | 
            ||
| 41 | Array(3, 'd'),  | 
            ||
| 42 | Array(1, 'a'),  | 
            ||
| 43 | Array(0, 'a'),  | 
            ||
| 44 | Array(2, 'c'),  | 
            ||
| 45 | ),  | 
            ||
| 46 | 'b' => Array(  | 
            ||
| 47 | Array(0, 'c'),  | 
            ||
| 48 | Array(2, 'b'),  | 
            ||
| 49 | Array(3, 'b'),  | 
            ||
| 50 | Array(1, 'd'),  | 
            ||
| 51 | ),  | 
            ||
| 52 | 'c' => Array(  | 
            ||
| 53 | Array(0, 'b'),  | 
            ||
| 54 | Array(1, 'c'),  | 
            ||
| 55 | Array(3, 'c'),  | 
            ||
| 56 | Array(2, 'a'),  | 
            ||
| 57 | ),  | 
            ||
| 58 | 'd' => Array(  | 
            ||
| 59 | Array(3, 'a'),  | 
            ||
| 60 | Array(2, 'd'),  | 
            ||
| 61 | Array(0, 'd'),  | 
            ||
| 62 | Array(1, 'b'),  | 
            ||
| 63 | ),  | 
            ||
| 64 | );  | 
            ||
| 65 | |||
| 66 | /**  | 
            ||
| 67 | * @var int  | 
            ||
| 68 | */  | 
            ||
| 69 | protected $recursion;  | 
            ||
| 70 | |||
| 71 | /**  | 
            ||
| 72 | * Hilbert constructor.  | 
            ||
| 73 | *  | 
            ||
| 74 | * @param null $recursion  | 
            ||
| 75 | */  | 
            ||
| 76 |   public function __construct($recursion = NULL) { | 
            ||
| 82 | |||
| 83 | /**  | 
            ||
| 84 | * @param $recursion  | 
            ||
| 85 | *  | 
            ||
| 86 | * @return $this  | 
            ||
| 87 | */  | 
            ||
| 88 |   public function setRecursion($recursion) { | 
            ||
| 92 | |||
| 93 | /**  | 
            ||
| 94 | * @return int  | 
            ||
| 95 | */  | 
            ||
| 96 |   public function getRecursion() { | 
            ||
| 99 | |||
| 100 | |||
| 101 | View Code Duplication |   function point_to_hilbert($x, $y, $order = 16, $map = "hilbert_map_1", $mode = "hilbert") { | 
            |
| 113 | |||
| 114 | View Code Duplication |   function hilbert_to_point($hilbert, $order) { | 
            |
| 139 | |||
| 140 | |||
| 141 | View Code Duplication |   function xy2d($x, $y, $order = 16) { | 
            |
| 155 | |||
| 156 | View Code Duplication |   function d2xy($hilbert, $order = 16) { | 
            |
| 181 | |||
| 182 |   function test_pth() { | 
            ||
| 193 | |||
| 194 | }  | 
            ||
| 195 | 
This check marks property names that have not been written in camelCase.
In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes
databaseConnectionString.