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 |
||
32 | class Cesion |
||
33 | { |
||
34 | |||
35 | private $Encabezado; ///< Encabezado del DTE que se está cediendo |
||
36 | private $datos; ///< Datos del XML de cesión |
||
37 | private $declaracion = 'Yo, {usuario_nombre}, RUN {usuario_run}, representando a {emisor_razon_social}, RUT {emisor_rut}, declaro que he puesto a disposición del cesionario {cesionario_razon_social}, RUT {cesionario_rut}, el documento donde constan los recibos de la recepción de mercaderías entregadas o servicios prestados, entregados por parte del deudor de la factura {receptor_razon_social}, RUT {receptor_rut}, de acuerdo a lo establecido en la Ley N° 19.983'; ///< Declaración estándar en caso que no sea indicada al momento de crear al cedente |
||
38 | |||
39 | /** |
||
40 | * Constructor de la clase Cesion |
||
41 | * @param DTECedido Objeto DteCedido |
||
42 | * @param Seq secuencia de la cesión |
||
43 | * @author Adonias Vasquez (adonias.vasquez[at]epys.cl) |
||
44 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
45 | * @version 2020-07-27 |
||
46 | */ |
||
47 | public function __construct(DteCedido $DTECedido = null, $Seq = 1) |
||
85 | |||
86 | /** |
||
87 | * Método que permite cambiar la declaración por defecto |
||
88 | * Están disponibles las siguientes variables dentro del string de la declaración: |
||
89 | * - {usuario_nombre} |
||
90 | * - {usuario_run} |
||
91 | * - {emisor_razon_social} |
||
92 | * - {emisor_rut} |
||
93 | * - {cesionario_razon_social} |
||
94 | * - {cesionario_rut} |
||
95 | * - {receptor_razon_social} |
||
96 | * - {receptor_rut} |
||
97 | * @param declaracion String con la declaración y las variables para poder reemplazar los datos si es necesario |
||
98 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
99 | * @version 2016-12-10 |
||
100 | */ |
||
101 | public function setDeclaracion($declaracion) |
||
105 | |||
106 | /** |
||
107 | * Método que agrega los datos del cedente |
||
108 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
109 | * @version 2017-07-24 |
||
110 | */ |
||
111 | public function setCedente(array $cedente = []) |
||
150 | |||
151 | /** |
||
152 | * Método que agrega los datos del cesionario |
||
153 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
154 | * @version 2016-12-10 |
||
155 | */ |
||
156 | public function setCesionario(array $cesionario) |
||
160 | |||
161 | /** |
||
162 | * Método que asigna otros datos de la cesión. Su uso es opcional, ya que de no ser llamado |
||
163 | * se usará el monto total del documento y su fecha de emisión o pago si existe |
||
164 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
165 | * @version 2016-12-10 |
||
166 | */ |
||
167 | public function setDatos(array $datos) |
||
182 | |||
183 | /** |
||
184 | * Método que realiza la firma de cesión |
||
185 | * @param Firma objeto que representa la Firma Electrónca |
||
186 | * @return =true si el DTE pudo ser fimado o =false si no se pudo firmar |
||
187 | * @author Adonias Vasquez (adonias.vasquez[at]epys.cl) |
||
188 | * @version 2016-08-10 |
||
189 | */ |
||
190 | public function firmar(\sasco\LibreDTE\FirmaElectronica $Firma) |
||
206 | |||
207 | /** |
||
208 | * Método que entrega el string con el XML de la cesion |
||
209 | * @author Adonias Vasquez (adonias.vasquez[at]epys.cl) |
||
210 | * @version 2016-08-10 |
||
211 | */ |
||
212 | public function saveXML() |
||
216 | |||
217 | /** |
||
218 | * Método que valida el schema de la Cesion |
||
219 | * @return =true si el schema del documento del DTE es válido, =null si no se pudo determinar |
||
220 | * @author Adonias Vasquez (adonias.vasquez[at]epys.cl) |
||
221 | * @version 2016-08-10 |
||
222 | */ |
||
223 | public function schemaValidate() |
||
227 | |||
228 | /** |
||
229 | * Método que entrega los datos del cedente |
||
230 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
231 | * @version 2016-12-10 |
||
232 | */ |
||
233 | public function getCedente() |
||
237 | |||
238 | /** |
||
239 | * Método que entrega los datos del cesionario |
||
240 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
241 | * @version 2016-12-10 |
||
242 | */ |
||
243 | public function getCesionario() |
||
247 | |||
248 | /** |
||
249 | * Método que carga un XML y asigna el objeto XML correspondiente |
||
250 | * @return Objeto XML |
||
251 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
||
252 | * @version 2020-07-27 |
||
253 | */ |
||
254 | public function loadXML($xml_data) |
||
262 | |||
263 | } |
||
264 |
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.