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
.