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 |
||
15 | class XmlWriterCustom implements \BFWInterface\IXmlWriterCustom |
||
16 | { |
||
17 | /** |
||
18 | * @var $_kernel L'instance du Kernel |
||
19 | */ |
||
20 | protected $_kernel; |
||
21 | |||
22 | /** |
||
23 | * @var $xml Le contenu xml |
||
24 | */ |
||
25 | protected $xml; |
||
26 | |||
27 | /** |
||
28 | * @var $indent Par quoi on indente |
||
29 | */ |
||
30 | protected $indent = ' '; |
||
31 | |||
32 | /** |
||
33 | * @var $stack Array contenant les balises entourat les balises d'éléments |
||
34 | */ |
||
35 | protected $stack = array(); |
||
36 | |||
37 | /** |
||
38 | * Constructeur |
||
39 | */ |
||
40 | public function __construct() |
||
46 | |||
47 | /** |
||
48 | * Indente pour les "sous balise" |
||
49 | */ |
||
50 | protected function _indent() |
||
57 | |||
58 | /** |
||
59 | * Créer une balise avec ces attributs (les balises principales, avec d'autres balise dedans en général) |
||
60 | * |
||
61 | * @param string $element Nom de la balise |
||
62 | * @param array $attributes (default: array()) Les attributs de la balise |
||
63 | */ |
||
64 | View Code Duplication | public function push($element, $attributes = array()) |
|
77 | |||
78 | /** |
||
79 | * Créer une balise simple, avec ces attributs et son contenu |
||
80 | * |
||
81 | * @param string $element Nom de la balise |
||
82 | * @param string $content Le contenu de la balise |
||
83 | * @param array $attributes (default: array()) Les attributs de la balise |
||
84 | */ |
||
85 | View Code Duplication | public function element($element, $content, $attributes = array()) |
|
97 | |||
98 | /** |
||
99 | * Créer une balise avec ![CDATA pour mettre du xhtml dedans |
||
100 | * |
||
101 | * @param string $element Nom de la balise |
||
102 | * @param string $content Le contenu de la balise |
||
103 | * @param array $attributes (default: array()) Les attributs de la balise |
||
104 | */ |
||
105 | View Code Duplication | public function element_cdata($element, $content, $attributes = array()) |
|
117 | |||
118 | /** |
||
119 | * Créer une balise autofermante |
||
120 | * |
||
121 | * @param string $element Nom de la balise |
||
122 | * @param array $attributes (default: array()) Les attributs de la balise |
||
123 | */ |
||
124 | View Code Duplication | public function emptyelement($element, $attributes = array()) |
|
136 | |||
137 | /** |
||
138 | * Ferme une balise ouverte avec push() |
||
139 | */ |
||
140 | public function pop() |
||
146 | |||
147 | /** |
||
148 | * Retourne le résultat du xml |
||
149 | * |
||
150 | * @return string Le xml |
||
151 | */ |
||
152 | public function getXml() |
||
156 | } |
||
157 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.