Complex classes like Common often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Common, and based on these observations, apply Extract Interface, too.
| 1 | <?php |
||
| 5 | class Common |
||
| 6 | { |
||
| 7 | |||
| 8 | /** |
||
| 9 | * Extrai o valor do node DOM |
||
| 10 | * @param object $theObj Instancia de DOMDocument ou DOMElement |
||
| 11 | * @param string $keyName identificador da TAG do xml |
||
| 12 | * @param string $extraTextBefore prefixo do retorno |
||
| 13 | * @param string extraTextAfter sufixo do retorno |
||
| 14 | * @param number itemNum numero do item a ser retornado |
||
| 15 | * @return string |
||
| 16 | */ |
||
| 17 | protected function pSimpleGetValue($theObj, $keyName, $extraTextBefore = '', $extraTextAfter = '', $itemNum = 0) |
||
| 28 | |||
| 29 | /** |
||
| 30 | * Recupera e reformata a data do padrão da NFe para dd/mm/aaaa |
||
| 31 | * @author Marcos Diez |
||
| 32 | * @param DOM $theObj |
||
| 33 | * @param string $keyName identificador da TAG do xml |
||
| 34 | * @param string $extraText prefixo do retorno |
||
| 35 | * @return string |
||
| 36 | */ |
||
| 37 | protected function pSimpleGetDate($theObj, $keyName, $extraText = '') |
||
| 49 | |||
| 50 | /** |
||
| 51 | * camcula digito de controle modulo 11 |
||
| 52 | * @param string $numero |
||
| 53 | * @return integer modulo11 do numero passado |
||
| 54 | */ |
||
| 55 | protected function pModulo11($numero = '') |
||
| 76 | |||
| 77 | /** |
||
| 78 | * Converte datas no formato YMD (ex. 2009-11-02) para o formato brasileiro 02/11/2009) |
||
| 79 | * @param string $data Parâmetro extraido da NFe |
||
| 80 | * @return string Formatada para apresentação da data no padrão brasileiro |
||
| 81 | */ |
||
| 82 | 1 | protected function pYmd2dmy($data = '') |
|
| 94 | |||
| 95 | /** |
||
| 96 | * pConvertTime |
||
| 97 | * Converte a informação de data e tempo contida na NFe |
||
| 98 | * @param string $DH Informação de data e tempo extraida da NFe |
||
| 99 | * @return timestamp UNIX Para uso com a funçao date do php |
||
| 100 | */ |
||
| 101 | 1 | protected function pConvertTime($DH = '') |
|
| 118 | |||
| 119 | /** |
||
| 120 | * Função de formatação de strings onde o cerquilha # é um coringa |
||
| 121 | * que será substituido por digitos contidos em campo. |
||
| 122 | * @param string $campo String a ser formatada |
||
| 123 | * @param string $mascara Regra de formatção da string (ex. ##.###.###/####-##) |
||
| 124 | * @return string Retorna o campo formatado |
||
| 125 | */ |
||
| 126 | 1 | protected function pFormat($campo = '', $mascara = '') |
|
| 206 | |||
| 207 | /** |
||
| 208 | * pGetNumLines |
||
| 209 | * Obtem o numero de linhas usadas pelo texto usando a fonte especifidada |
||
| 210 | * @param string $text |
||
| 211 | * @param number $width |
||
| 212 | * @param array $aFont |
||
| 213 | * @return number numero de linhas |
||
| 214 | */ |
||
| 215 | protected function pGetNumLines($text, $width, $aFont = array('font' => 'Times', 'size' => 8, 'style' => '')) |
||
| 222 | |||
| 223 | /** |
||
| 224 | * pTextBox |
||
| 225 | * Cria uma caixa de texto com ou sem bordas. Esta função perimite o alinhamento horizontal |
||
| 226 | * ou vertical do texto dentro da caixa. |
||
| 227 | * Atenção : Esta função é dependente de outras classes de FPDF |
||
| 228 | * Ex. $this->pTextBox(2,20,34,8,'Texto',array('fonte'=>$this->fontePadrao, |
||
| 229 | * 'size'=>10,'style='B'),'C','L',FALSE,'http://www.nfephp.org') |
||
| 230 | * |
||
| 231 | * @param number $x Posição horizontal da caixa, canto esquerdo superior |
||
| 232 | * @param number $y Posição vertical da caixa, canto esquerdo superior |
||
| 233 | * @param number $w Largura da caixa |
||
| 234 | * @param number $h Altura da caixa |
||
| 235 | * @param string $text Conteúdo da caixa |
||
| 236 | * @param array $aFont Matriz com as informações para formatação do texto com fonte, tamanho e estilo |
||
| 237 | * @param string $vAlign Alinhamento vertical do texto, T-topo C-centro B-base |
||
| 238 | * @param string $hAlign Alinhamento horizontal do texto, L-esquerda, C-centro, R-direita |
||
| 239 | * @param boolean $border TRUE ou 1 desenha a borda, FALSE ou 0 Sem borda |
||
| 240 | * @param string $link Insere um hiperlink |
||
| 241 | * @param boolean $force Se for true força a caixa com uma unica linha e para isso atera o tamanho do |
||
| 242 | * fonte até caber no espaço, se falso mantem o tamanho do fonte e usa quantas linhas forem necessárias |
||
| 243 | * e para isso atera o tamanho do fonte até caber no espaço, |
||
| 244 | * se falso mantem o tamanho do fonte e usa quantas linhas forem necessárias |
||
| 245 | * @param number $hmax |
||
| 246 | * @param number $vOffSet incremento forçado na na posição Y |
||
| 247 | * @return number $height Qual a altura necessária para desenhar esta textBox |
||
| 248 | */ |
||
| 249 | 1 | protected function pTextBox( |
|
| 356 | |||
| 357 | /** |
||
| 358 | * Cria uma caixa de texto com ou sem bordas. Esta função permite o alinhamento horizontal |
||
| 359 | * ou vertical do texto dentro da caixa, rotacionando-o em 90 graus, essa função precisa que |
||
| 360 | * a classe PDF contenha a função Rotate($angle,$x,$y); |
||
| 361 | * Atenção : Esta função é dependente de outras classes de FPDF |
||
| 362 | * Ex. $this->__textBox90(2,20,34,8,'Texto',array('fonte'=>$this->fontePadrao, |
||
| 363 | * 'size'=>10,'style='B'),'C','L',FALSE,'http://www.nfephp.org') |
||
| 364 | * @param number $x Posição horizontal da caixa, canto esquerdo superior |
||
| 365 | * @param number $y Posição vertical da caixa, canto esquerdo superior |
||
| 366 | * @param number $w Largura da caixa |
||
| 367 | * @param number $h Altura da caixa |
||
| 368 | * @param string $text Conteúdo da caixa |
||
| 369 | * @param array $aFont Matriz com as informações para formatação do texto com fonte, tamanho e estilo |
||
| 370 | * @param string $vAlign Alinhamento vertical do texto, T-topo C-centro B-base |
||
| 371 | * @param string $hAlign Alinhamento horizontal do texto, L-esquerda, C-centro, R-direita |
||
| 372 | * @param boolean $border TRUE ou 1 desenha a borda, FALSE ou 0 Sem borda |
||
| 373 | * @param string $link Insere um hiperlink |
||
| 374 | * @param boolean $force Se for true força a caixa com uma unica linha e para isso atera o tamanho do |
||
| 375 | * fonte até caber no espaço, se falso mantem o tamanho do fonte e usa quantas linhas forem necessárias |
||
| 376 | * linha e para isso atera o tamanho do fonte até caber no espaço, |
||
| 377 | * se falso mantem o tamanho do fonte e usa quantas linhas forem necessárias |
||
| 378 | * @param number $hmax |
||
| 379 | * @param number $vOffSet incremento forçado na na posição Y |
||
| 380 | * @return number $height Qual a altura necessária para desenhar esta textBox |
||
| 381 | */ |
||
| 382 | protected function pTextBox90( |
||
| 492 | } |
||
| 493 |
This check looks for the
elsebranches ofifstatements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.These
elsebranches can be removed.could be turned into
This is much more concise to read.