Pergunta

Sinto a necessidade de refatorar meu antigo código baseado em CF5 nos CFCs. Já temos algum código no Coldspring e Transfer, mas sentimos uma grande reescrita para o Coldspring e a transferência é inútil.

O que dicas, abordagens e pegadas vou bater.

Como posso facilitar isso?

Não me importo de manter o Coldspring na mistura, mas a transferência é a parte que me assusta com o tamanho do projeto.

EDIT: Minha base de código tem dado 7-8 anos e é vasto. Descrever isso seria difícil, no entanto, estou procurando sugestões genéricas sobre abordagens

Foi útil?

Solução

Alterar toda a base de código apenas por causa disso, se basicamente funcionar, introduziria muitos bugs em potencial em seu sistema. Eu não acho que exista uma maneira fácil de fazer isso.

Se você olhar para as áreas do seu site, que têm mais probabilidade de mudar e 2: executadas ao máximo, poderá atingir algumas áreas que poderiam se beneficiar da mudança e ver com que facilidade elas se encaixariam em uma estrutura baseada em CFC e O que se beneficia. Mas, para a maior parte do código, se estiver funcionando bem, pode não haver necessidade premente de mudar.

No entanto, sempre que você precisar fazer uma grande alteração em parte do sistema, pode valer a pena olhar para isso de uma perspectiva OO e mover o código existente, quando aplicável.

Outras dicas

Em um dos meus projetos em andamento (quase a mesma situação, ainda mais-a maior parte do código é muito ruim), estou usando a técnica que chamou de "estilo de onda". As idéias gerais que eu uso estão seguindo:

  1. Dividindo o processamento da saída. Não posso implementar o verdadeiro MVC aqui, mas pelo menos posso mover o View para modelos separados (às vezes reutilizá-los) e preparar todos os dados em modelos básicos (modelo).
  2. Mova todo o código repetido para os componentes - esta é uma das dicas mais importantes.
  3. Funções relacionadas ao grupo em componentes. Digamos, todas as informações relacionadas ao cliente agrupadas no CustomerManager.cfc, faturas no Invoicemanager.cfc etc.

Por que "onda"? Em um grande projeto, não posso simplesmente sentar e reescrever todo o código relacionado ao cliente. Então, eu o faço passo a passo. Por exemplo, tenho que trabalhar na inscrição do cliente, estendê -la com poucos atributos. Criei componente básico, movi -se a métodos para validar o formulário (verifique o login, o email etc.) e adicionar cliente - para que esta página funcione em novo estilo. Com classificação, precisarei melhorar a página da fatura, onde preciso obter detalhes do proprietário da fatura: basta adicionar o método ao gerente do cliente e me livrar das consultas diretas. Editar posterior página do cliente ... também pode ser chamado de "refatoração sob demanda" ou SMTH.

Pode haver coisas adicionais confiando no estado atual do projeto. Mas isso me ajudou muito. Espero que você ache essas dicas úteis.

Antes de mudar qualquer coisa: Crie um conjunto completo de testes de regressão!

Ao refatorar, o objetivo deve preservar a funcionalidade primeiro, para que você não afete diretamente seus clientes.

Concordo com a refatoração do estilo de onda do Sergii também - isso permite que você divida as coisas em pedaços gerenciáveis, em vez de fazer tudo de uma só vez.

Mas qualquer que seja o método que você tenha, quanto mais testes de regressão você puder criar, melhor - é realmente a única maneira de confirmar que não mudou sem querer algo.

Isso é extremamente difícil (na fronteira com impossível) de responder sem conhecer seu código.

A pergunta é um pouco como "Quero desmontar meu velho Volkswagen e construir um novo a partir das partes, o que devo considerar?" :-)

Meu conselho seria começar encapsulando sua lógica de negócios nos CFCs, em vez de se preocupar com toda a camada de apresentação do seu site.

Ao se concentrar apenas na lógica de negócios, você poderá obter a funcionalidade mais importante nos CFCs e facilitar o pesadelo de manutenção. Também não será muito difícil "soltar" esses CFCs em seu site existente.

Depois de obter o máximo de lógica de negócios no CFCS, você notará que o enorme monstro foi reduzido ao tamanho. Nesse ponto, agora você pode decidir o que deseja fazer com a camada de apresentação do seu site. Agora você está livre para escolher entre uma infinidade de estruturas disponíveis para uso (CFWheels, Fusebox, Coldbox, Mode-Glue) para portar a camada de apresentação.

Ou você pode simplesmente dizer "o diabos com isso" e reescrever tudo em cfwheels desde o início :)

Se você não estiver usando o controle de versão, obtenha essa configuração antes de fazer qualquer outra coisa. Ser capaz de desistir da refatoração quebrada é um salva de vida sério. Depois disso, concordo com o que foi publicado. Você vai querer enfrentar pequenos pedaços de cada vez - dividir e conquistar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top