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 NewAddress extends Intraface_Standard |
||
| 16 | { |
||
| 17 | |||
| 18 | var $kernel; |
||
| 19 | var $type; |
||
| 20 | var $id; |
||
| 21 | var $value = array(); |
||
| 22 | |||
| 23 | /* |
||
|
|
|||
| 24 | var $user; |
||
| 25 | |||
| 26 | var $address_id; |
||
| 27 | var $fields; |
||
| 28 | var $old_address_id; |
||
| 29 | */ |
||
| 30 | |||
| 31 | function address(&$kernel, $id = 0) |
||
| 32 | { |
||
| 33 | this::__construct($kernel, $id); |
||
| 34 | } |
||
| 35 | |||
| 36 | |||
| 37 | function __construct($kernel, $id = 0) |
||
| 38 | { |
||
| 39 | |||
| 40 | $this->kernel = &$kernel; |
||
| 41 | $this->id = $id; |
||
| 42 | |||
| 43 | $this->fields = array('name', 'address', 'postcode', 'city', 'country', 'cvr', 'email', 'website', 'phone', 'ean'); |
||
| 44 | } |
||
| 45 | |||
| 46 | function factory($object, $sub) |
||
| 54 | |||
| 55 | |||
| 56 | |||
| 57 | |||
| 58 | |||
| 59 | |||
| 60 | |||
| 61 | |||
| 62 | |||
| 63 | |||
| 64 | /** |
||
| 65 | * Init: loader klassen |
||
| 66 | * |
||
| 67 | * Her er angivet de typer af adresser den kan h�ndtere med arrayet address_type[]. |
||
| 68 | * $this-fields er felter i tabellen (db) som overf�res til array og omvendt. M�ske disse |
||
| 69 | * engang skal differencieres, s� man angvier hvad feltet i tabellen skal svare til navnet i arrayet. |
||
| 70 | * Klassen loader ogs� adressens felter |
||
| 71 | * |
||
| 72 | * @param (string)$type er typen p� adressen. Skal svare til en af dem i $address_type |
||
| 73 | * @param (int)$id BEM�RK id p� intranettet, brugeren, kunde eller kontaktperson. Ikke id p� adressen. Det klare klassen selv. |
||
| 74 | * @param (int)$address_id Denne bruges kun, i det tilf�lde, hvor man skal finde en gammel adresse. S� angiver man id p� adressen. |
||
| 75 | * @return (int) Returnere 0 hvis adressen ikke er sat. Returnere id p� adressen hvis det er. |
||
| 76 | */ |
||
| 77 | function _old_Address($type, $id, $old_address_id = 0) |
||
| 102 | |||
| 103 | /** |
||
| 104 | * Private: Loader data ind i array |
||
| 105 | */ |
||
| 106 | function load() |
||
| 127 | |||
| 128 | /** |
||
| 129 | * Public: Denne funktion gemmer data. At gemme data vil sige, at den gamle adresse gemmes, men den nye aktiveres. |
||
| 130 | * |
||
| 131 | * @param (array)$array_var et array med felter med adressen. Se felterne i init funktionen: $this->fields |
||
| 132 | * $return (int) Returnere 1 hvis arrayet er gemt, 0 hvis det ikke er. Man kan ikke gemme p� en old_address. |
||
| 133 | */ |
||
| 134 | function save($array_var) |
||
| 184 | |||
| 185 | /** |
||
| 186 | * Public: Opdatere en adresse. |
||
| 187 | * |
||
| 188 | * Denne funktion overskriver den nuv�rende adresse. Benyt som udagangspunkt ikke denne, da historikken p� adresser skal gemmes. |
||
| 189 | * |
||
| 190 | * @param (array)$array_var et array med felter med adressen. Se felterne i init funktionen: $this->fields |
||
| 191 | * $return (int) Returnere 1 hvis arrayet er gemt, 0 hvis det ikke er. Man kan ikke gemme p� en old_address. |
||
| 192 | */ |
||
| 193 | function update($array_var) |
||
| 215 | } |
||
| 216 |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.