Escolar Documentos
Profissional Documentos
Cultura Documentos
Refatoração 1
Permissions</A>
</td>
</TR></TABLE>
Agora, você pode argumentar que na Listagem 1.2 eu não apenas re-
formatei o código. Eu também o modifiquei. Por exemplo, uma tabela
Capítulo 1 Refatoração 27
tornou-se uma div e uma lista, e alguns hífens foram removidos. Entre-
tanto, a Listagem 1.2 é na verdade muito mais próxima do significado do
conteúdo que a Listagem 1.1. Presume-se aqui que a Listagem 1.2 utiliza
uma folha de estilo CSS externa para fornecer todos os detalhes de forma-
tação que removi da Listagem 1.1. Conforme você verá, essa será uma das
técnicas principais que você usará para refatorar suas páginas e limpar o
código dos documentos.
Eu também joguei fora os atributos TARGET="_blank" que abrem links
em uma nova janela ou aba. Normalmente o usuário não deseja isso, e
raramente é uma boa ideia. Deixe o usuário usar o botão voltar e a lista
de histórico se for necessário, e, caso contrário, deixe ele abrir a maioria
dos links na mesma janela. Se os usuários quiserem abrir um link em uma
nova janela, eles podem fazer isso facilmente pelo menu de contexto, mas
a escolha agora é deles. Algumas vezes metade do processo de organiza-
ção e limpeza consiste em nada mais nada menos que remover trechos que
não deveriam estar lá em primeiro lugar.
Tamanho da linha
A Listagem 1.2 é ainda um pouco pior que o ideal. Estou um pouco
restrito pela necessidade de encaixar o código dentro das margens
desta página impressa. Em código fonte real, eu poderia fazer com
que um pouco mais de código fosse colocado em cada linha. En-
tretanto, não levo isso a extremos. Mais que 80 caracteres por linha
pode fazer com que o código fique difícil de ler e isso por si só,
pode se tornar um problema.
Uma pequena exceção pode ser feita aqui para código gerado por
um sistema de gerenciamento de conteúdo (CMS) de algum tipo. Neste
caso, o código que você vê em Exibir Código Fonte não é, na verdade, o
código fonte. Ele é mais próximo de um formato de máquina compila-
do. Neste caso, é a entrada para o CMS que deve parecer boa e aparecer
de forma legível.
Independentemente disso, é ainda melhor se ferramentas como CMSs
e editores web gerem código claro e bem formado. Surpreendentemente,
você descobrirá que muitas vezes o código que as ferramentas geram é um
início, não um fim. Você pode querer adicionar folhas de estilo, scripts, e
outras coisas no código depois de a ferramenta gerá-lo. Nesse caso, você
terá de lidar com a marcação pura, e isto é bem mais fácil de ser feito
quando o código é claro e limpo.
28 Refatorando HTML
não suportadas pelo Google e pela maioria dos robôs das outras máqui-
nas de busca. Consequentemente, você deve se certificar que a maioria
das páginas de seu site funciona de maneira apropriada, mesmo se essas
tecnologias não estiverem disponíveis.
Felizmente, os problemas de código aqui são muito óbvios e muito
fáceis de detectar. Toda vez que você vir uma nota tal como a nota a seguir,
você tem um problema:
Cookies requeridos
Desculpe, você deve aceitar cookies para acessar este
site.
Para continuar neste site, você deve habilitar cookies
em seu navegador Internet. Usamos cookies para adaptar
nosso site para as suas necessidades, para entregar um
serviço melhor, mais personalizado e para lembrar cer-
tas escolhas que você fez, de modo que não precise in-
formá-las novamente.
Além de tal situação incomodar os usuários, faz com que tais sites sejam
rotineiramente excluídos pelo Google, acarretando um posicionamento
ruim nas buscas.
De maneira embaraçosa, o seguinte exemplo vem de uma página que
fala sobre melhorar código HTML:
Nota: Existe um Sumário, mas ele é gerado dinamicamente.
Por favor, habilite JavaScript para vê-lo.
A diferença chave é que eu vejo isso em uma página que ainda assim
consegue mostrar o conteúdo, apesar de estar com JavaScript e Flash de-
sabilitados. Eu posso não ver tudo, ou não ter a funcionalidade completa,
mas não sou bloqueado. Isso é muito mais amigável para os usuários e
para máquinas de busca tal como o Google.
Como um desenvolvedor de sites, eu ainda dou uma segunda olhada
nesta página para ver se eu seria capaz de remover alguns dos requisitos
dos clientes. Entretanto, não seria minha primeira prioridade.
Isso foi um pouco surpreendente dado que a seção que Kent estava recla-
mando era automaticamente gerada usando XSLT que transformava um
feed Atom de outro site. Eu verifiquei o feed e ele estava correto. Entre-
tanto, Kent estava correto e o link estava quebrado. Finalmente rastreei
o problema na folha de estilo XSLT. Ela estava lendo um elemento que
normalmente, mas nem sempre, era igual ao link, em vez do elemento que
era de fato o link. Cinco minutos depois, o site estava corrigido.
Noventa e nove por cento de seus leitores irá apenas resmungar e nun-
ca dirão a você que seu site está com problemas. Os leitores que somam
1% e que reclamam valem ouro. Você precisa tratá-los bem e escutar o que
têm a dizer. Não faça com que seja difícil que eles o encontrem. Todo o
site e praticamente toda a página deve ter uma pessoa óbvia para contato
para qualquer problema que ocorra. Esses retornos devem ser cuidadosa-
mente considerados e você deve agir rápido.
Os leitores também podem mandar a você emails sobre coisas não rela-
cionadas ao site: pedidos cancelados, datas de envio, requisições de links,
discordâncias políticas, e milhares de outras coisas. Você precisa ser capaz
de separar os problemas técnicos dos problemas não técnicos de forma que
a correspondência possa ser roteada apropriadamente. Alguns sites usam
um formulário e pedem que os leitores classifiquem o problema. Entretanto,
isso não é confiável, dado que os leitores normalmente não pensam sobre o
site da mesma maneira que os desenvolvedores. Por exemplo, se um cliente
não consegue informar um CEP com um hífen em seu formulário de ende-
reço de entrega, você pode pensar nisso como sendo um problema técnico
(e você estaria certo), mas o cliente provavelmente o classificaria como sen-
do um problema de envio e o direcionaria para um departamento que nem
mesmo entenderia a pergunta, quanto mais saberia o que fazer. Talvez você
tenha que treinar uma pessoa ou equipe que identifique cada email e decida
quem é a pessoa correta para respondê-lo. Essa é uma função crítica que
não deve ser terceirizada pelo menor preço.
Capítulo 1 Refatoração 33
QUANDO REFATORAR
Quando você deve refatorar? Quando você diz que é hora de colocar em
espera a adição de novas funcionalidades para que você possa melhorar e
organizar seu código legado? Existem diversas respostas possíveis para
essa questão, e elas não são mutuamente excludentes.
A primeira vez que você deve refatorar é antes de qualquer redese-
nho. Se o seu site estiver passando por um grande redesenvolvimento,
a primeira coisa que você precisa fazer é controlar seu conteúdo. O pri-
meiro benefício de refatorar a esta altura é simplesmente o fato de que
você criará uma base muito mais estável sobre a qual irá implementar o
novo design. Uma página bem formada, bem organizada é muito mais
fácil de ser reformatada.
A segunda razão para refatorar antes de redesenhar é que o processo
de refatoração ajudará a familiarizar os desenvolvedores com o site. Você
verá onde as páginas estão, como elas se encaixam umas nas outras na hie-
rarquia do site, quais elementos são comuns entre as páginas, e assim por
diante. Você também provavelmente descobrirá novas ideias para o rede-
senho. Não as implemente ainda, mas anote-as (melhor ainda, atribua-as
*
para o aplicativo de acompanhamento de pendências ) de forma que pos-
sa implementá-las posteriormente, após a refatoração. Refatoração é uma
ferramenta muito importante para melhorar a velocidade com a qual os
desenvolvedores constroem um site. Se é um site no qual os desenvolve-
dores nunca trabalharam, a refatoração irá ajudá-los a aprender sobre ele.
Se é um site no qual eles já trabalham nos últimos dez anos, a refatoração
irá lembrá-los de coisas que esqueceram. Em ambos os casos, a refatora-
ção ajuda a fazer com que os desenvolvedores sintam-se mais confortáveis
com o site.
*
especialmente se você estiver usando um editor de texto plano . Tal
como escrever um programa de computador, um erro de sintaxe quebra
tudo. Não existem atalhos, nem margem para erros.
Por que, então, alguém escolheria XHTML? Porque as mesmas carac-
terísticas que tornam o desenvolvimento de documentos XHTML um de-
safio (manipulação de erros draconiana) tornam o consumo de documen-
tos XHTML um passeio no parque. O trabalho é deslocado do navegador
para o autor. Um navegador web (ou qualquer outro programa que leia a
página) não precisa tentar descobrir qual o sentido de uma sopa de tags e
adivinhar o que a página realmente queria dizer. Se a página não é clara de
alguma forma, o navegador pode, na verdade deve, levantar suas mãos e se
recusar a processá-la. Isso torna o trabalho do navegador muito mais sim-
ples. Uma grande porção dos navegadores de hoje dedica grande parte de
seu código para analisar sintaticamente uma página HTML para corrigir
erros em páginas. Com XHTML eles não precisam fazer isso.
É claro, muitos de nós não somos vendedores de navegadores e nunca
iremos escrever um navegador. O que ganharíamos com o uso de XHTML e
sua manipulação de erros draconiana? Existem diversos benefícios. Primeiro
de todos, mesmo que a maioria de nós nunca escreva um navegador, muitos
de nós escrevemos programas que consomem páginas web. Tais programas
podem ser mashups, web spiders, agregadores de blogs, máquinas de busca,
ferramentas de autoria e uma dezena de outros programas que precisam ler
páginas web. Esses programas são muito mais fáceis de escrever quando os
dados que você está processando são XHTML em vez de HTML.
* N. de R. T.: Um editor de texto comum (como um bloco de notas) que não fornece o apoio à codifica-
ção geralmente presente em editores dos ambientes de desenvolvimento (IDEs).
38 Refatorando HTML
do. Em alguns casos, elas deixam que você faça coisas que você não pode-
ria fazer agora. Em outros casos, elas deixam você fazer coisas que você já
está fazendo agora, mas mais rapidamente e de uma maneira mais barata. De
qualquer forma, elas compensam o custo de refatorar para XHTML.
* N. de R. T.: Digg é uma rede social que reúne links para notícias, podcasts e vídeos enviados e prin-
cipalmente avaliados pelos próprios usuários. Os links mais aclamados pela comunidade (possuindo
mais votos – diggs) são exibidos na primeira página do site.
Capítulo 1 Refatoração 43
• Sessões
• Estado
Esses itens são bastante problemáticos, e muitas aplicações atualmente
os utilizam muito mais de forma errônea do que correta. A Web não é uma
rede local. As técnicas que funcionaram para sistemas cliente/servidor li-
mitados a algumas dúzias ou algumas centenas de usuários não se compa-
ram sistemas web que devem acomodar de milhares a milhões de usuários.
Arquiteturas cliente/servidor baseadas em sessões e conexões persistentes
simplesmente são impossíveis na Web. Tentativas de recriá-las falham em
grande escala, frequentemente com consequências desastrosas.
REST, conforme implementado em HTTP, tem várias ideias chave, as
quais são discutidas nas seções seguintes.
OBJEÇÕES À REFATORAÇÃO
Não é incomum que pessoas que vão desde o CEO, até gerentes e desenvol-
vedores HTML tenham objeções contra o conceito de refatoração. A preo-
cupação é expressa de muitas maneiras, mas normalmente é algo como: