Bons programadores copiam, grandes programadores roubam

Apenas copiar o código pode ser perigoso. No entanto, isso pode ser dito sobre muitos outros aspectos no desenvolvimento de software, desde que sejam tratados de forma descuidada. Neste post, discutirei questões como:

  • O que significa copiar código no desenvolvimento de software?
  • O que significa roubo de código correto?
  • Quais são as armadilhas da cópia incorreta?

Não é segredo para nenhum programador que o código de exemplo publicado como resposta às perguntas aqui no Stack Overflow frequentemente acabe na versão final dos programas. Talvez você tenha feito uma pergunta e eles tenham enviado um diagrama de ciclo ideal em sua resposta for. Talvez você tenha encontrado uma ótima resposta, na qual havia um código c async awaitadequado para o seu aplicativo.

O último livro de programação que você precisará:

imagem


Quando me deparei com um tweet que falava sobre os benefícios do roubo, perguntei-me se a cópia do código poderia ser benéfica.


Observe que não sou a favor de você copiar indiscriminadamente o código da nossa seção de perguntas e respostas. Às vezes você pode ter problemas por causa disso. Mas, como nosso convidado nos mostrou no podcast Anna Lytical, essa abordagem pode ser usada para desenvolver rapidamente protótipos funcionais.

Se você copiar exemplos de código, deixe um link para a licença. Dependendo da última vez em que o código foi editado no Stack Overflow, ele é licenciado com uma versão da licença Creative Commons. Os códigos mais recentes são licenciados pelo CC BY-SA 4.0, aos quais é necessária referência.

Escreva o código uma vez, coloque-o para trabalhar um milhão de vezes


Copiar código do Stack Overflow é uma forma de plágio, isto é, duplicação de código de um ou mais projetos e sua reutilização. Olhando para qual programador você pergunta, mas pode acontecer que, em seu trabalho, de 5 para 10 ou mesmo de 7 a 23% do código seja copiado de alguma outra fonte. Se o empréstimo é feito corretamente ou não, já é uma questão para discussão.

Independentemente da porcentagem real de empréstimos em projetos individuais, podemos dizer com certeza que a duplicação de código é extremamente comum. O código padrão é o código repetido regularmente ao longo do projeto. É provável que os programadores não digitem cada vez. Bibliotecas como Lombok torna possível reduzir a necessidade de escrever um boilerplate, mas o fato permanece:

  • Sempre haverá partes do código que terão que aparecer repetidamente ao longo do projeto.

E

  • Devido ao fato de que essas partes provavelmente ainda precisam de pequenas alterações, esses fragmentos de código não podem ser removidos em uma função ou dependência separada.

Falando em dependências, podemos mencionar bibliotecas e dependências externas, que são uma maneira eficaz de reutilizar a funcionalidade do código sem copiá-la. Funciona quase como copiar código, com a única diferença: nesse caso, você não é responsável por manter a operação da parte copiada do código. Inferno, agora a maioria da Internet roda em várias plataformas e bibliotecas de plugins que simplificam o desenvolvimento. Reutilizar o código nas bibliotecas é incrivelmente eficaz, pois permite que cada biblioteca faça uma coisa e ainda faça bem. E, diferentemente da maneira como todas as fontes devem ser indicadas ao escrever trabalhos na comunidade científica, muitas dessas bibliotecas não precisam de nada de sua parte para indicarque você programa usando o código de outra pessoa ou que usa o código de outra pessoa como base.

O npm JavaScript Package Manager leva isso ao extremo. Você pode instalar pequenas bibliotecas de função única ( algumas do tamanho de apenas uma linha de código ) em seu projeto através da linha de comando. Você pode adquirir um dos mais de um milhão de pacotes de código aberto gratuitos e começar a incorporar recursos em seu aplicativo.

Obviamente, como qualquer abordagem, esse método também tem um sinal de menos. Depois de instalar o pacote, você perde algum controle sobre o código. Alguns invasores criaram pacotes realmente úteis, esperaram até obter um nível de download decente e depois ajustaram o código para roubar carteiras de bitcoin. Devemos prestar homenagem à equipe da NPM, pois eles conseguem repelir rapidamente esses ataques. No entanto, quanto mais dependências externas você tiver, mais área de ataque você imagina.

Mesmo as respostas de estouro de pilha não estão protegidas contra duplicação de código. Um pesquisador independente encontrou várias respostas ao Stack Overflow, nas quais o código foi copiado de outras fontes. Um pedaço de código Java foi encontrado em mais de 40 respostas.

Bons artistas copiam, grandes artistas roubam


No mundo da arte, o roubo também faz parte da criação de grandes criações. Lembro-me de como fui ao Museu Van Gogh em Amsterdã e vi seus primeiros trabalhos lá. Fiquei chocado. Mas então eu não sabia que, de fato, essas pinturas eram inspiradas na pintura e xilogravura japonesas (xilogravura) . O que eu pensava ser um estilo único para o seu tempo, fazia parte da história do desenvolvimento, mas não o que eu estava pensando. Em vez de seguir o caminho de desenvolvimento que os artistas dinamarqueses já haviam tomado, Van Gogh usou as idéias de gravuras japonesas que encontrou em Paris (ele usou as idéias de composição de edifícios e o estilo de pinceladas) e as combinou em seus trabalhos.

Picasso é creditado com o ditado: "Bons artistas copiam, grandes artistas roubam". O próprio Picasso tirou muitas idéias da arte africana e polinésia e as combinou com seus esboços. A idéia do roubo em si está errada. De fato, chamar o trabalho de outra pessoa é plágio. A coisa emprestada ainda pertence a outra pessoa. Você copia o estilo e ele ainda pertence ao proprietário. No entanto, para roubar, você precisa criar essa ideia. Declarar-se o criador da ideia de alguém é pedir emprestado. Mas Picasso tinha em mente que ele precisava entender e tecer a idéia em seu trabalho para "roubá-la". Steve Jobs adorou essa citação e a Apple teve sucesso sob sua liderança porque roubou idéias, combinou-as e melhorou-as.

Quando você copia o código, corre o risco de simplesmente emprestá-lo. O código emprestado é colocado no projeto completamente se estiver bem incorporado e não causar erros, mas pode conter bugs ou pode ser criado por criminosos cibernéticos com a possibilidade de usá-los para seus propósitos, dos quais você não conhecerá. O número de riscos associados ao código copiado incorretamente (ou copiado conforme alterado) é enorme. De fato, reclamações de código duplicado podem rastrear o plágio. Se você não entender o código, é provável que deixe buracos na proteção do que originalmente deveria ser apenas uma demonstração do conceito. Mesmo o trecho de código mais copiado no Stack Overflow não é privado de um bug .

Por outro lado, quando você rouba código, você definitivamente sabe o que faz. Seu núcleo e seus recursos se encaixam no seu próprio código. Se você puder escrevê-lo novamente da memória, isso significa que o código foi roubado corretamente. Isso significa que o retrabalho do código forneceu mais do que apenas uma cópia. Ela lhe deu algo novo e original.
Então, sim, roube o código. Aceite, entenda e aplique em seus projetos. Faça-o seu. Você pode ganhar experiência, melhorar seus projetos e talvez até seu currículo (também conhecido como ctrl + C ctrl + V). Mas se você copiar sem um entendimento absoluto do código recém-descoberto e do que ele faz, corre o risco de piorar seu próprio código.



imagem
Aprenda os detalhes de como obter uma profissão procurada desde o início ou suba de nível em habilidades e salário fazendo cursos on-line SkillFactory:





All Articles