Como engenheiro de software, qual a importância de ler o código de outros?


25

Eu sou um engenheiro de software iniciante (agora no segundo ano, formado em CS) e realmente luto para entender os programas de outras pessoas. Quero saber se essa habilidade (ou falta dela) pode ser uma desvantagem para mim e, se sim, como posso desenvolvê-la?


1
Você sente que entende o código quando isso é explicado a você também ou você está apenas aprendendo por tentativa e erro?
— JeffO 9/01/19

1
Por que isso está marcado com 'estilo de codificação'? É por isso que você está tendo problemas para ler o código porque está mal formatado? A capacidade de ler o código não significa que você precisa entender o código muito mal formatado ou ofuscado. Execute o código através de uma ferramenta de formatação primeiro, se ajudar.
— Brandin


Esta é uma grande pergunta! Eu tive uma pergunta de acompanhamento: se você trabalha principalmente sozinho em seu próprio código (por exemplo, como programador científico em um projeto pequeno), como você encontra um bom código para ler? Isso já foi perguntado antes: softwareengineering.stackexchange.com/questions/69892/…
— Gaurav

Respostas:


49

É essencial.

A maneira como você o desenvolve é escrevendo seu próprio código (muitos deles) e, sim, lutando para ler o código de outras pessoas.

O problema, é claro, é que nem todo mundo pensa da mesma maneira que você. Eu estava em uma aula de Java do primeiro ano há muito tempo e recebemos uma tarefa. Ao contrário do que eu pensava (que era que as respostas convergiriam em três ou quatro soluções comuns), todos os alunos tinham uma solução única para a tarefa.

Daqui resulta que você deve ler um bom código.

Esse é um dos motivos pelos quais os Design Patterns se tornaram tão populares e por que você deve estudá-los. Os Padrões de Design fornecem um vocabulário comum para os programadores se comunicarem e ajustam sua mente para "melhores" maneiras de resolver problemas de computação.

Você também deve estudar algoritmos e estruturas de dados.

Corolário: você deve sempre se esforçar para escrever código que outros desenvolvedores possam entender prontamente.


7
Corolário: simples Comece por se esforçando para escrever código que você possa compreender facilmente :-)
— gnasher729

4
Geralmente, uma boa resposta, exceto a parte sobre padrões. A maioria dos padrões do GoF (que é o que as pessoas pensam quando você usa o termo) é exagerada, refinada demais, concentrada demais em OO ou apenas antipadrões simples. E então o pessoal aparece aqui perguntando qual desses padrões eles devem usar para a solução. Por favor, nunca aconselhe os desenvolvedores a perder tempo com padrões.
— David Arno

Para pequenos problemas (digamos, inverta os números em uma lista), as possíveis respostas devem convergir para um pequeno número de possíveis soluções. Boas atribuições devem exigir a solução de muitos desses problemas e organizar as soluções para esses problemas de alguma forma, para que o número total de soluções possíveis para a atribuição cresça muito rapidamente.
— Brandin

15

Isso é muito importante.

Depois que você se formar e sair para o mundo, a maioria dos projetos nos quais você trabalhará já terá código contribuído por outras pessoas. Lucky é o programador que passa o tempo todo em projetos greenfield!

É uma habilidade adquirida através da prática e paciência e, em muitos casos, é uma habilidade na qual muitas pessoas não têm muita oportunidade de trabalhar até depois de se formarem e conseguirem o primeiro emprego. Relaxar!

(embora sua escola possua um programa cooperativo, isso lhe daria uma experiência de pré-graduação para trabalhar em grandes projetos que são escritos principalmente por outras pessoas E isso lhe dá créditos acadêmicos!


7

É uma habilidade importante , dependendo das especificidades de onde você trabalha, pode até ser mais importante do que escrever o próprio código.

Como outras habilidades, a prática leva à perfeição! Tente ler o código de outro programador, depure-o e o que me ajuda pessoalmente, é refatorar ou melhorar pequenos pedaços de código e expandir a partir daí.


Além disso, conhecer um projeto de código aberto que você usa e tentar entender como o código interno funciona pode ser útil
— RMalke

4

Existem habilidades distintas na leitura e na escrita de código.

  • Um é a sintaxe. Saber como é uma declaração de método.
  • O outro é intenção. Saber por que o método existe e para qual finalidade ele serve.

Quanto à leitura versus escrita. Sim, a leitura é essencial.
Algumas máximas que ajudam muitos de nós são:

  • O código é lido 10 vezes (pelo menos) para cada vez que é gravado.
  • Alguém mais está lendo o código geralmente ... eu, no futuro, lendo o código.
  • Eu não defenderia meu estilo de código de mais de um ano atrás, ele melhorou desde então.

ESTÁ BEM. Então, isso é ótimo. Agora, vamos ao que você provavelmente está enfrentando.

omg, essa enorme base de código com dezenas de milhares de linhas de código-fonte e classes com centenas de linhas com dependências malucas e toda vez que tento seguir algo, tenho que manter 10 níveis na cabeça, etc. etc.
Parece familiar ? Sim. Respiração profunda. relaxar. É normal. É disso que os sistemas de produção são feitos. As pessoas sobrevivem (e florescem) nessas situações aparentemente incompreensíveis porque:

  • esperamos que existam testes e também ajudam a documentar o sistema.
  • programadores emparelham e muitas vezes traz mais que o dobro do resultado.
  • Um bom programador é bom em dizer que não entende até entender.
  • as alterações costumam ser apenas uma ou algumas linhas de código, ajudando a isolar o que testar
  • bases de código levam meses e até anos para se familiarizar com

E, finalmente, bons programadores escrevem mensagens de confirmação significativas ao confirmar alterações nos sistemas de controle de versão de origem. (Sinta-se livre para adicionar a responder)
— rwong

1

A maioria dessas respostas se concentra na importância da leitura de código para o auto-aperfeiçoamento. Eu concordo plenamente e apoio.

Há outro ângulo em que se deve tomar cuidado - mesmo se você fosse um prodígio que não pudesse se beneficiar com a leitura de outras abordagens (impossível, mas por uma questão de argumento ...), ainda precisaria saber ler código por causa de uma conceito que basicamente não existe no cenário universitário: a grande maioria dos projetos da indústria são projetos de campo marrom (ou seja, integrados a uma base de código preexistente).

A necessidade de ler o código apenas para entender a base de código e os processos existentes é real. Sempre é possível fazer perguntas a outros desenvolvedores sobre código, mas isso pode levar tanto tempo. As pessoas saem, trocam de projeto ou o tempo passa simplesmente. Os detalhes de baixo nível desaparecem da memória e os programadores de manutenção aplicam patches. Em algum momento, não há uma única fonte de verdade, exceto o próprio código.

Uma boa higiene do código, guias de estilo, revisões de código e ajuda na documentação, mas em algum momento o código é a fonte da verdade para o que acontece e a única maneira de encontrar a resposta será obtê-lo você mesmo. Além de seus usos no autodesenvolvimento, a capacidade de ler códigos é uma habilidade distinta da escrita.


0

Compreender o código de outras pessoas é algo que você não pode escapar, pois provavelmente trabalhará em equipe, mesmo que não em equipe você pesquise no Google coisas diferentes e precisará entender o código de exemplo. Então, sim, é uma obrigação.

O que eu sinto é que todo mundo percebe que esse sentimento pode ser um pouco menor do que outro, especialmente no início. Você entende seu código melhor do que o código dos outros, pois passa muito mais tempo com seu próprio código do que o código de outra pessoa, pois você não apenas lê, mas escreve e estrutura isso em sua mente. Se você começar a gastar mais tempo com o código de outras pessoas e primeiro tentar ver que tipo de estrutura / fluxo está sendo usado, isso certamente fará com que você entenda melhor o código.

Para tornar meu argumento ainda mais convincente, se você tiver algum código que você escreveu há um ano, tente entendê-lo novamente e posso ter certeza de que você levará mais tempo, mas menos que o código de outros, para ter idéia de como estruturar seu código. código.

Espero que esta ajuda, não fique desapontado, é perfeitamente normal. Gaste mais tempo com o código e você poderá obtê-lo.


0

Bem, acabei de receber um projeto com cerca de 100.000 linhas de código escritas por uma equipe em um país diferente, e preciso fazer algumas alterações muito significativas em uma cópia do código nos próximos meses, deixando o mesmo código em comum quanto possível.

Você me diz como eu posso fazer meu trabalho sem a capacidade de ler o código de outras pessoas, rápido. Se você não consegue ler o código de outras pessoas, está completamente, totalmente preso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.