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 |
||
20 | View Code Duplication | class User extends APIUser |
|
|
|||
21 | { |
||
22 | /** |
||
23 | * @var \eZ\Publish\API\Repository\Values\Content\Content |
||
24 | */ |
||
25 | protected $content; |
||
26 | |||
27 | /** |
||
28 | * Returns the VersionInfo for this version. |
||
29 | * |
||
30 | * @return \eZ\Publish\API\Repository\Values\Content\VersionInfo |
||
31 | */ |
||
32 | public function getVersionInfo() |
||
36 | |||
37 | /** |
||
38 | * {@inheritdoc} |
||
39 | */ |
||
40 | public function getName($languageCode = null) |
||
44 | |||
45 | /** |
||
46 | * Returns a field value for the given value |
||
47 | * $version->fields[$fieldDefId][$languageCode] is an equivalent call |
||
48 | * if no language is given on a translatable field this method returns |
||
49 | * the value of the initial language of the version if present, otherwise null. |
||
50 | * On non translatable fields this method ignores the languageCode parameter. |
||
51 | * |
||
52 | * @param string $fieldDefIdentifier |
||
53 | * @param string $languageCode |
||
54 | * |
||
55 | * @return mixed a primitive type or a field type Value object depending on the field type. |
||
56 | */ |
||
57 | public function getFieldValue($fieldDefIdentifier, $languageCode = null) |
||
61 | |||
62 | /** |
||
63 | * This method returns the complete fields collection. |
||
64 | * |
||
65 | * @return \eZ\Publish\API\Repository\Values\Content\Field[] |
||
66 | */ |
||
67 | public function getFields() |
||
71 | |||
72 | /** |
||
73 | * This method returns the fields for a given language and non translatable fields. |
||
74 | * |
||
75 | * If note set the initialLanguage of the content version is used. |
||
76 | * |
||
77 | * @param string $languageCode |
||
78 | * |
||
79 | * @return \eZ\Publish\API\Repository\Values\Content\Field[] With field identifier as keys |
||
80 | */ |
||
81 | public function getFieldsByLanguage($languageCode = null) |
||
85 | |||
86 | /** |
||
87 | * This method returns the field for a given field definition identifier and language. |
||
88 | * |
||
89 | * If not set the initialLanguage of the content version is used. |
||
90 | * |
||
91 | * @param string $fieldDefIdentifier |
||
92 | * @param string|null $languageCode |
||
93 | * |
||
94 | * @return \eZ\Publish\API\Repository\Values\Content\Field|null A {@link Field} or null if nothing is found |
||
95 | */ |
||
96 | public function getField($fieldDefIdentifier, $languageCode = null) |
||
100 | |||
101 | public function __get($property) |
||
119 | } |
||
120 |
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.