Como você explica a refatoração para uma pessoa não técnica?

52

Como você explica a refatoração (e a dívida técnica) a uma pessoa não técnica (normalmente um PHB ou cliente)? ("O que, vai me custar um mês do seu trabalho sem nenhuma diferença visível ?!")

ATUALIZAÇÃO Obrigado por todas as respostas até agora, acho que esta lista fornecerá várias analogias úteis para as quais podemos apontar as pessoas apropriadas (embora a edição de referências a PHBs seja sensata!)

Benjol
fonte
Não me lembro de como a Apple convenceu tantas pessoas a mudarem do Leopard para o Snow Leopard. Provavelmente o preço: US $ 100 a menos do que o normal na época.
Mouviciel 5/12/11
Essa pergunta pode gerar respostas surpreendentemente úteis para quem trabalha com código na indústria. Preste atenção, pessoal.
Joshin4colours
por que seria sábio?
Louis Rhys

Respostas:

53

Quando você tem um grande home theater e adiciona coisas, lenta mas seguramente, grandes ratos aninham-se nas costas.

Se você costuma substituir peças, às vezes vale a pena endireitar tudo isso.

Claro, se você fizer isso, estava funcionando antes e não funcionará melhor do que quando você começou, mas quando você precisar mexer com isso novamente, as coisas serão muito mais fáceis.

De qualquer forma, provavelmente é melhor fazer uma comparação semelhante a alguma área com a qual o PHB ou o cliente já esteja familiarizado, ou seja, carro, construção ou algo assim ...

whatsisname
fonte
11
Não é a melhor analogia, porque faz parecer que coisas ruins apenas entram espontaneamente no seu cinema, ao contrário das coisas ruins que aparecem como resultado direto da construção contínua do seu teatro.
Doppelgreener
21
@Axidos: "ninho de ratos" é uma expressão em Inglês que significa "uma aparentemente impossível emaranhado undo" (neste caso, de fios e cabos por trás do centro de entretenimento)
HedgeMage
8
Conceitualmente sua bom - necessidades "dos cabos" depois de "ninho de ratos"
Murph
2
@ Peter: Acho que todos nós tivemos que ficar atrás da TV pelo menos uma vez. Apenas o explique cem vezes pior e gire um fio de cabos em todos os lugares, puxe-o e puxe-o e descubra uma civilização morta em algum lugar da bagunça.
Doppelgreener
3
Se alguém não puder se relacionar, mostre a eles o seguinte: google.com/images?q=do+not+touch+any+of+these+wires
Steve S
41

Re-fatorar é como o processo de re-embalar uma mala até que tudo se encaixe perfeitamente. Às vezes, no processo, você se pergunta por que estava tentando obter tanto lixo lá para começar.

Tim Post
fonte
11
Eu ia postar alguma analogia com uma garagem ou galpão, mas isso é melhor.
Matt Ellen
Ou às vezes você compra mais algumas malas e percebe que pagar os encargos com excesso de peso não é grande coisa, pois os custos de software não são iguais aos do mundo físico. Então você pode realmente encaixar tudo bem e a restrição de uma única mala acabou sendo arbitrária e absurda.
Dan Rosenstark 26/09/12
+1 Isso é ótimo. Além de fazer com que as coisas ocupem menos espaço, há coisas que você percebe que nem precisava e que pode deixar de fora.
Robbie Dee
21

Eu não explicaria o conceito de dívida técnica, porque não é necessário. Em vez disso, concentre-se na refatoração: você está alterando o design do seu programa, não necessariamente para que seja "melhor" ou "aprimorado", mas para que ele possa aceitar uma alteração que precisa ser feita.

Uma analogia de carro pode ser adequada: você precisa adicionar um ar-condicionado a um carro, mas ele não foi originalmente projetado para ele. Você não apenas precisa fabricar um ar-condicionado estranho em forma de L, mas também precisa afastar outras coisas do caminho e mudar o sistema de ventilação.

Eu também acho que é uma estratégia melhor refatorar quando você está acomodando novos recursos: caso contrário, você pode estar mudando o design para algo que apenas pareça "melhor", mas que na verdade seja pouco adequado às circunstâncias que envolvem a adição do seu próximo recurso.

Macneil
fonte
Mover as peças de um carro para oferecer melhor desempenho ou manutenção mais fácil - funciona para qualquer pessoa que tenha levantado a tampa do carro, mas quantos PHBs fizeram isso?
precisa
3
Eu gosto deste porque enfatiza que a refatoração está sendo feita para facilitar (ou possível) uma alteração necessária. A refatoração geralmente não deve ser feita por si só, mas para atingir um objetivo específico.
Kristopher Johnson
Então, a resposta curta é: não conte a eles! Basta considerar o tempo em novos recursos e refatorar de acordo.
Jonathan van de Veen
12

Uso o termo Dívida técnica e relaciono-o diretamente com algo que eles entendem - Dívida corporativa. Dívida técnica é como contrair um empréstimo. Você paga juros sobre isso. Por exemplo, você pode construir uma nova fábrica e pagar por ela diretamente ou pode obter um empréstimo por ela. Se você conseguir um empréstimo, pagará mais por ele a longo prazo, mas faz sentido financeiramente se os termos estiverem corretos .

No entanto, se você está pagando juros de 25% sobre esse empréstimo, coloca-se em uma posição não sustentável. O mesmo acontece com a dívida técnica. Às vezes, faz sentido assumir alguma dívida técnica. No entanto, chega um momento em que os juros são altos demais e precisam ser pagos. Algumas dívidas técnicas são como um empréstimo à habitação e outras são como dívidas no cartão de crédito. Em emergências, a dívida do cartão de crédito é um ativo importante e valioso. No entanto, também pode quebrar o banco (ou domicílio, se você escolher) se usado imprudentemente.

Outro exemplo: você pode pagar US $ 10.000 por uma caixa de correio de marketing para angariar mais leads de vendas no futuro. Você está pagando "dívida de vendas". Esta é uma despesa com pagamento a longo prazo. Compare isso ao motivo pelo qual você deseja "gastar" dinheiro agora refatorando um pedaço de código. Nos dois casos, não há retorno imediato, mas você está se preparando para um melhor desempenho no futuro.

Costumo usar o termo "dívida xxxx" como analogia ao falar com quem quer que seja o público-alvo. Por exemplo, Dívida Operacional - A impressora que temos agora funciona bem, mas ao interromper a produção por um dia (ou uma semana) e atualizar para uma nova máquina, podemos aumentar a produção em 25%.

EDIT - Aqui está outra opinião sobre este

Nemi
fonte
11
+1 para uma resposta bem fundamentada que demonstra economia realista. Às vezes, a dívida é racional e os puristas perdem muitas oportunidades se não puderem tolerá-la.
Macneil
11
E as pessoas entendem que contrair empréstimos para pagar os juros de empréstimos antigos não é sustentável.
precisa
11
Esta é a minha preferência para explicação, porque eu gosto de se referir a demolição de tudo e reescrever (que muitas vezes é a única opção que resta devido à dívida muito técnica) como falência técnica
Wayne Molina
4
Esta é uma resposta terrível. (1) Isso é mais complicado do que a explicação técnica da refatoração. (2) Isso não explica o "porquê" da refatoração; explica o "quando" s da refatoração (ou seja: quando é econômico). Ou talvez eu realmente não entenda esse post e, portanto, o ponto (1).
Thomas Eding
2
@ThomasEding (1) Esta não é uma explicação da refatoração, é uma explicação da dívida técnica. (2) Isso explica o porquê de quando refatorar - para uma pessoa de negócios. Honestamente, eles não se importam com o motivo técnico, você sim. Eles querem uma razão justificável para que você esteja trabalhando em algo que não seja o próximo recurso que impulsionará as vendas. É por isso que a maioria dos programadores não pode falar com o chefe e reclamar que o chefe é estúpido. Eles não são estúpidos, apenas têm drivers diferentes do que você.
Nemi
8

Limpeza de primavera.

Você não está fazendo nenhuma modificação na casa. Você está apenas mudando as coisas e se livrando da poeira. Talvez jogando algumas coisas que você não usa ou não precisa mais. mas você não está adicionando nada.

Mark Canlas
fonte
11
+1: esta é a melhor resposta imo: e praticamente qualquer um pode se relacionar. "Você mora em sua casa, as coisas ficam sujas / empoeiradas / modestas - periodicamente você precisa fazer uma limpeza profunda".
Steven Evers
7

"Você já jogou Mouse Trap ? À medida que aderimos a novos recursos, alteramos interfaces e corrigimos bugs, o código pode começar a parecer muito com isso. Chega um momento em que precisamos gastar muito capital (tempo e esforço , que equivale a dinheiro), certificando-se de que todas as partes móveis se adaptem bem a cada nova alteração ou adição, ou podemos reservar um tempo para refatorar o design, resultando em menos partes móveis que precisamos gerenciar cada vez que fazemos uma alteração. da perspectiva do usuário final, pode parecer que o refator não possui nenhum benefício, mas o benefício acontece toda vez que um novo recurso é adicionado após o refator.O processo é mais rápido, apresenta menos erros e é mais barato depois, sem mencionar que o código refatorado geralmente é mais eficiente em geral.

Você pode se perguntar por que deixamos que pareça com o Mouse Trap em primeiro lugar:

  • Às vezes, fazer algo no momento significa que precisamos sacrificar a elegância e a eficiência para apenas "fazê-lo funcionar".
  • Os recursos de linguagem e outras tecnologias disponíveis para nós à medida que os programadores geralmente mudam. Às vezes, novos recursos permitem substituir uma mistura de seis partes móveis por uma.
  • Muitas vezes, quando adicionamos o recurso C aos recursos A e B, não sabemos se B será descartado e D adicionado. Uma maneira de realizar C pode funcionar muito bem com B, mas não muito bem com D.

Em um esforço para continuar construindo uma melhor armadilha para o mouse, precisamos voltar constantemente e encontrar lugares para reduzir a complexidade e otimizar o que temos. É a diferença entre apenas ter um software com muitos recursos e ter um software de alta qualidade ".

HedgeMage
fonte
6

texto alternativo

Esta é uma versão um pouco mais gráfica da analogia do home theater.

Se você quiser adicionar mais um novo appliance [aka, nova funcionalidade], com uma pitada, provavelmente poderá encaixá-lo em algum lugar.

Se você quiser adicionar outro aparelho, poderá comprar um fio de extensão, o que levará algum tempo.

Mas a cada adição, fica mais difícil encontrar uma solução. E você está se expondo a um risco 1 de incêndio [também conhecido como insetos], e terá que pagar muito dinheiro para pagar alguém para colocar novas tomadas na parede, o que pode escalar até o principal placa de circuito ou ainda mais.

1 Outra coisa que PHBs não Grokar muito bem: "Bem, se isso só pode acontecer, o que você se preocupar com?"

Benjol
fonte
5

Refatoração - é como organizar seu armário de roupas / gaveta de ferramentas.

  • Você não joga fora suas roupas / ferramentas apenas porque elas estão por todo o lugar.

  • Você poderia argumentar que eles nunca deveriam se desorganizar. Mas eles fazem.

Assim como o código. Especialmente à medida que cresce com o tempo.

E se você não limpar, continuará se perguntando o que aconteceu com a camiseta que você amava ou com a chave que você sempre precisa, mas nunca consegue encontrar!

Jagmag
fonte
4

Eu diria "manutenção de código" . É importante usar palavras com as quais a pessoa não técnica esteja familiarizada e que façam sentido para uma visão de mundo não técnica. Se uma pessoa não técnica (cliente) estiver familiarizada com a manutenção de aplicativos, será fácil fazer paralelo entre a manutenção de código e a manutenção de aplicativos. Mesmo que não sejam iguais, você pode explicar que o cliente final aqui é desenvolvedor ou como manter o sistema.

Amir Rezaei
fonte
11
Pessoas não técnicas conhecem a manutenção de aplicativos? Perguntei à minha avó: ela não é e é a pessoa mais não técnica que encontrei. Além disso: Como uma pessoa não técnica não sabe a diferença entre código e aplicativo ("Se o código é o aplicativo, o aplicativo é código"), sua analogia não funcionará.
Martin
2
nos lugares em que trabalhei, os tipos de marketing e projman entenderam "manutenção" como "correções de erros após o lançamento", e seria falso afirmar que a refatoração está corrigindo erros.
Para mim, a pessoa não técnica é o cliente. Se o cliente souber o que é a manutenção do aplicativo, ele também deve entender a manutenção do código.
Amir Rezaei
A "manutenção de código" parece que seu código sofre desgaste ou se acostuma. Um carro precisa ser mantido, porque o uso normal estressa seus componentes, consome líquidos, etc. Um aplicativo não é assim - o código instalado no disco rígido não "envelhece" ou "fica ruim" por si só.
Dan Ray
Vou dar um exemplo de manutenção: Problemas de desempenho. Seu componente, sistema ou aplicativo inteiro está escrito em VB e a Microsoft para de apoiá-lo. O sistema operacional não suporta a tecnologia em que seu código se baseia. Problemas de segurança. A manutenção desses problemas não adiciona nenhuma nova funcionalidade que o usuário final possa perceber; no entanto, eles são críticos para manter a "aplicação" ativa.
Amir Rezaei
4

Digamos que você seja um mecânico especializado em personalizar carros e até construí-los do zero, se o cliente exigir. Há um cliente que volta à sua loja de vez em quando para colocar sempre algo novo e brilhante em sua limusine super grande.

Uma vez que ele entra para ter um bom sistema de som instalado. Você executa diligentemente a tarefa passando os fios e conectando tudo corretamente. Ele sai um dia depois, está feliz e paga generosamente, como sempre.

No mês seguinte, ele volta, mas desta vez ele quer um home theater completo instalado. Mais uma vez, você entra na limusine. Sendo um profissional, você revisita o sistema de som e facilita a manutenção instalando um sistema de tubulação para passar os fios ao redor do carro. Dessa forma, os fios são protegidos e mais fáceis de remover e, caso você precise adicionar mais, também será fácil. Então você arranca os fios antigos, instala a tubulação e passa o sistema de som e os fios extras para o cinema, fecha tudo e está pronto.

Percebendo que o cliente não pediu para você substituir o sistema de som antigo, você dedica parte do custo das substituições e dos tubos. No entanto, você ainda ganha dinheiro com o negócio, mas não tanto quanto você teria, apenas juntou o sistema como fez na primeira vez.

Um mês depois, ele volta, desta vez quer um sistema de iluminação e quer que os novos alto-falantes tenham danificado os antigos no início da semana.

Como você manteve tudo bonito e arrumado, pode passar rapidamente os novos fios de iluminação pelo tubo, instalar o sistema e substituir o alto-falante. Desta vez, no entanto, você é feito muito mais rápido, a re-fatoração valeu a pena mantendo você no topo do seu jogo.

Seu concorrente, que estava rindo de você por rasgar fios perfeitamente bons e instalar todo esse tubo extra, ainda está lutando para satisfazer o cliente. Claro que ele foi feito mais rápido do que você na maioria das vezes, mas com o passar do tempo seus clientes estão reclamando que há cada vez mais atrasos e a qualidade geral do trabalho é degradante.

Olhando para isso, você percebe que seu objetivo não apenas é permanecer no negócio, mas também ser o principal responsável por equilibrar o que você faz para atender às demandas do cliente e o que você faz para facilitar sua vida no futuro. Muito raramente um cliente pagará pelos dois, então você precisa gerenciar de perto. Você aposta que, ao fazer as coisas de maneira pró-ativa, mesmo com o custo de fazer duas vezes, você manterá os custos de manutenção em uma porcentagem estável controlada de sua produtividade.

O software é o mesmo, exceto que os programadores podem jogar com fita adesiva digital por MUITO tempo antes que os efeitos sejam realmente sentidos pelos clientes e gerentes. Infelizmente, nessa época, o custo de refazer as coisas corretamente aumenta exponencialmente em relação à quantidade de fita adesiva presente e à idade média da referida fita adesiva.

É por isso que é importante continuar refatorando o sistema. Muitas vezes, a experiência nos mostra uma nova maneira mais eficiente de fazer a mesma coisa ou podemos combinar funcionalidades semelhantes e explorar redundâncias, em vez de simplesmente copiá-las. É assim que mantemos o sistema enxuto e mesquinho. O tempo mostrará que refazer o sistema constantemente para atender às demandas manterá a produtividade constante, controlando a quantidade colocada em manutenção.

A colocação de fita adesiva aumentará momentaneamente a produtividade ao custo de transportar um sistema abaixo do ideal. A dívida técnica é incorrida sempre que a produtividade imediata é favorecida em detrimento dos outros aspectos de um sistema. A analogia da dívida é boa porque assim como os juros sobre o capital emprestado diminuem os lucros, o tempo emprestado torna as coisas rapidamente incorridas em maior manutenção e aumentam a fragilidade do sistema, forçando uma equipe a gastar recursos adicionais na manutenção e não na criação. Assim como seu parente financeiro, se os empréstimos continuarem inabaláveis, a maioria dos recursos será gasta no pagamento de juros, deixando muito pouco para melhorias. A dívida técnica corroerá os recursos técnicos a um ponto em que a maioria dos recursos é gasta, apenas mantendo o sistema funcionando paralisando todos os outros aprimoramentos possíveis.

Portanto, em última análise, a questão não é se devemos ou não devemos fazê-lo, mas é ético deixar que gerentes e clientes acreditem que podem confiar em números de produtividade inchados artificialmente com o uso de fita adesiva digital. Alguns pensam que é uma decisão de negócios, mas, francamente, isso ocorre apenas porque os gerentes não a entendem. No final, alguém terá que pagar a dívida através de uma pesada re-factoring ou migrando para um novo sistema. Em última análise, para nós, programadores, é manter os sistemas em manutenção, você não precisa pedir para re-fatorar, pois é uma parte inerente do trabalho, deixar de entender isso significa não entender o que é a engenharia de software. Dito isto, percebo que existem sistemas por aí que já assumiram uma dívida importante e que pagar essa dívida exigirá decisões dos pagadores. Seu trabalho é que tal situação é, pelo menos, fazer sua parte para parar de pedir empréstimos. Esta dívida foi constituídaPELOS EUA, talvez porque não soubéssemos melhor, porque fomos pressionados a fazê-lo, ainda assim, assumimos essa dívida e, muitas vezes, as pessoas que entregamos a dívida não a entendem e, portanto, não conseguem administrá-la adequadamente.

Aqui está o seu software, pronto, espero que você goste .... Ho, a propósito, eu estiquei o máximo de seu cartão de crédito, espero que você não se importe ... cya

Newtopian
fonte
3

O objetivo do re-fatoração é simplificar o design e remover ineficiências. Isso facilita a correção de bugs e a adição de novos recursos no futuro.

A depuração é duas vezes mais difícil do que escrever o código em primeiro lugar. Portanto, se você escrever o código da maneira mais inteligente possível, por definição, você não é inteligente o suficiente para depurá-lo.

Se você continuar adicionando novos recursos ao código, a re-fatoração se pagará rapidamente. Isso será visível em menor taxa de erro, depuração mais rápida e correções mais rápidas.

cmcginty
fonte
Mas clever == 0so 2 * clever == 0...
Thomas Eding
3

Escrever software é como escrever um grande livro de não ficção ou uma enciclopédia.

O primeiro rascunho sempre é uma merda. Ele sempre pode ser aprimorado reorganizando-o, removendo seções que não precisam estar lá e garantindo um estilo consistente.

Sempre que você precisar revisar, a coisa mais simples a fazer é adicionar uma nova seção, alterar algumas palavras e assim por diante. Mas, à medida que as revisões se acumulam, o livro começa a perder sua organização. Então você tem que fazer mais passes de reorganização. Caso contrário, o livro se torna uma confusão sem sentido.

Kristopher Johnson
fonte
3

Tome seu computador de mesa, por exemplo. Você tem uma torre, monitor, teclado, mouse, impressora, scanner e alto-falantes. Em última análise, tudo o que você quer é uma boa mesa organizada. Então você apenas conecta as coisas cegamente e, alguns minutos depois, eis que tudo está configurado da maneira que você deseja. Bem ... quase do jeito que você quer.

Um dia depois, quando você está alterando o balanço dos alto-falantes, percebe que acidentalmente colocou os alto-falantes esquerdo e direito nas áreas erradas, de modo que deseja trocar de posição. Mas não! Há uma selva de fios emaranhados; Quando você move os alto-falantes, o cabo do mouse fica preso e agora o mouse é arrastado junto com os alto-falantes. Além disso, seu teclado agora não tem folga - você costumava movê-lo da mesa para o seu colo.

Tudo bem, você pode simplesmente desconectar o mouse e o teclado e reinseri-los para que tudo esteja consertado. Mas isso não ajudará em futuras reorganizações e adições futuras. Também tecer os cabos do mouse e do teclado pela selva é um aborrecimento.

A melhor solução é recarregar tudo para conectá-los de uma maneira limpa e limpa, onde cada cabo não interfira no outro. Agora, as alterações futuras são fáceis e continuam fáceis. Você investe um pouco na frente para obter grandes ganhos posteriormente.

O ponto principal é que a solução original funcionou principalmente. Essa é a questão da refatoração: funciona desde o início, mas você precisa mudar a maneira como as coisas já existem para fazer facilmente mudanças futuras (movendo os alto-falantes).

Thomas Eding
fonte
2

É como limpar a casa depois de uma festa louca e louca da noite anterior.

Digamos que a sala ficou totalmente destruída. A casa ainda é uma casa, a sala ainda é uma sala de estar. Funciona, mas não é assim que poderia ser. Depois de olhar para a bagunça, você percebe que ela precisa ser limpa.

Então, você começa a ensacar o lixo. Já parece melhor. Então, você olha ao redor da sala e decide arrumar os móveis. Você coloca um pedaço de volta, depois o próximo e o próximo. Uau, o quarto parece muito bom. Você está orgulhoso.

Sua irmã entra e diz que a sala parece lixo, você deve arrumar a estante e aspirar o tapete. Ela está certa. O quarto parece muito, muito bom.

Você olha em volta e vê que as cortinas das janelas ficariam muito melhores se todas estivessem na mesma altura. Feito. Uau, o quarto é incrível.

Trate seu código da mesma maneira.

Michael Riley - também conhecido por Gunny
fonte
11
Eu gosto, mas mudaria para limpar a cozinha. Sem cozinhar por um tempo, mas as coisas vão melhorar depois. PHBs pode ter dificuldade em se relacionar a ter uma festa no tempo da companhia :)
Jaap
Analogia decente, mas há uma falha que os leitores devem estar cientes: se você não limpar sua casa, sua casa se tornará literalmente menos utilizável ao longo do tempo. Considerando que, com um programa, isso não acontece.
Thomas Eding
1

Fácil!

Tomemos um exemplo ... todo mundo em suas vidas escreveu uma carta para alguém querido. Tem que ser alguém querido, porque nessas cartas geralmente prestamos atenção também na composição.

Então, você tem o seu texto, ... o significado será de qualquer maneira, mas você deseja que tudo pareça agradável! Direito?

Refatoração, mesma coisa ... mesmas informações, mais ou menos, mas a composição é melhor. E provavelmente resultará em uma melhor revisão por parte do leitor.

Outro exemplo - escrever um artigo para uma revista. Dois escritores, ambos sabem "suas coisas", a única diferença é que um sabe "como escrever" e o outro escreve como ele aprendeu a escrever a partir de respostas como estas.

De quem você se lembrará?

Torre
fonte
1

Todas as analogias com as coisas no mundo físico - como construir um teatro - são, na IMO, terríveis.

Você precisa explicar que o código de refatoração é como ... código de refatoração. O software é maleável de maneiras que os análogos físicos não são. À medida que as coisas se tornam cada vez mais complexas, é preciso reativar (ou refazer, conforme desejado) partes maciças ou pequenas de uma base de código para que possamos continuar a aumentar a complexidade sem enlouquecer.

Por que refatoramos? Porque o código que nunca é refatorado custa mais por minuto para manter e mudar e, finalmente, se torna mais problemático.

O que é tão interessante sobre a refatoração é que refazemos a base de código, mas, pelo menos no início, a funcionalidade permanece a mesma.

Yar
fonte
/ Todas as analogias /? Eu discordo fortemente. Você só precisa ser mais criativo. Também não responde à pergunta do OP.
Thomas Eding
Obrigado por seu comentário. Discordo do segundo ponto: estou, de fato, respondendo à pergunta. No entanto, agora eu faço uma edição apenas para você.
Dan Rosenstark 26/09/12
0

Re-fatorar é o mesmo que limpar algo e dar às coisas um novo lugar para 'ficar'

Fácil, simples e algo que pode levar muitas vezes. Às vezes até acrescento que a pessoa X deixou uma enorme bagunça e tenho que limpá-la.

Barfieldmv
fonte
0

Pensei em outro exemplo, que aparentemente ninguém mencionou aqui: refatorar é exatamente o mesmo que reorganizar uma equação em matemática (embora isso possa estar fora do escopo de 'pessoa não técnica, eu acho).

Quando você reorganiza uma equação, apenas 'move as coisas' para torná-la mais legível e utilizável, sem alterar o significado .

Benjol
fonte
11
então, se eu sou um PHB ou cliente (quem pagará por esse esforço de refatoração), por que devo me importar? As obras de código (do meu ponto de vista)
Dan Pichelman
0

Dê a eles uma equação matemática simples. Por exemplo:

Qual é mais simples?

y = x + x

ou

y = 2x

Refatoração é um conceito semelhante, exceto que, em vez de simples equações matemáticas, você coloca algoritmos. A idéia principal é que você pode alternar entre duas maneiras de fazer as coisas, porque elas produzirão o mesmo resultado.

A refatoração mais simples que pode ser feita é renomear.

doX() { ... }
{
   doX()
}

Agora, porque realmente não queremos que as coisas sejam chamadas de doX, porque na verdade não sabemos o que isso significa, renomeamos para outra coisa que é mais autoexplicativa e substituímos em qualquer lugar que a tenhamos usado.

doBusinessTransaction() { ... }
{
   doBusinessTransaction()
}

Isso economizará dinheiro mais tarde, quando houver um problema ou aprimoramento, pois reduz o tempo para as pessoas entenderem e corrigirem seu aplicativo. Para economizar ainda mais, existem ferramentas gratuitas que fazem isso funcionar automaticamente, dependendo do idioma que você está usando. Essas ferramentas também são licenciadas de forma que não sejam restritivas e exigiriam que você fizesse algo de especial, além de reconhecê-lo, se você o usar diretamente.

Archimedes Trajano
fonte
11
Eu realmente gosto dessa analogia porque é compreensível para todos e muito semelhante ao próprio código.
Venkat D.
Obrigado, eu mesmo postei no meu blog também trajano.net/2013/05/refactoring-explained
Archimedes Trajano
0

Uma imagem diz mil palavras. Por exemplo, a refatoração possui dois casos de uso:

  • Quando as coisas não são bem feitas da primeira vez:

refatoração quando as coisas não são feitas da primeira vez

  • Quando as coisas são tediosas:

refatoração quando as coisas são tediosas

Referências

Paul Sweatte
fonte
XKCD vale a pena ignorar o fato de que tornar uma tarefa de rotina mais eficiente pode significar que você acaba fazendo muito mais do que faria de outra maneira. Portanto, você precisa levar em consideração o valor que obtém dos desempenhos extras da tarefa.
precisa saber é
@bdsl Isso é coberto no local
Paul Sweatte
0

Considere uma resposta dada na refatoração e não a explique a uma pessoa não técnica. A refatoração é uma atividade técnica que eles não precisam saber sobre:

Obviamente, muitas pessoas dizem que são motivadas pela qualidade, mas são mais motivadas pelo cronograma. Nestes casos, dou meus conselhos mais controversos: não conte!

Subversivo? Acho que não. Desenvolvedores de software são profissionais. Nosso trabalho é criar software eficaz o mais rápido possível. ... Um gerente orientado a cronograma quer que eu faça as coisas da maneira mais rápida possível; como eu faço isso é da minha conta. A maneira mais rápida é refatorar; portanto, refatoro.

(Refatoração, Martin Fowler, 2000, página 61)

É claro que isso não funcionará se você passar um mês fazendo nada além de refatoração, mas acho que geralmente é uma péssima ideia e é muito melhor refatorar na medida necessária para facilitar sua tarefa atual ou a próxima , ou para limpar o código com o qual você acabou de trabalhar.

bdsl
fonte