Conteúdos

Sobre Literatura e códigos

Introdução

Programação é uma arte difícil. Requer tempo e dedicação para alcançar certos patamares. E eu digo arte, pois a palavra arte vem do latim ars, significando técnica e ou habilidade.

Como toda arte, a programação é de fácil introdução (em pouco tempo você pode aprender a tocar um instrumento, pintar um quadro ou mesmo escrever um livro), mas leva-se anos para atingir um nível de maestria. Grandes nomes como Michelangelo, Steve Vai ou J.R.R. Tolkien passaram anos de suas vidas adquirindo conhecimento e experiência sobre a sua área de atuação, e passaram também muito tempo praticando suas artes.

É claro que alguns podem ter facilidade em dominar uma certa área, mas isso não os excetuam de ter que praticar e aprofundar o conhecimento sobre a sua arte.

É nesse contexto que temos, como programadores, os mesmos caminhos e desafios. Precisamos, assim como um grande pintor, músico e ou escritor, nos dedicar a essa arte que é escrever código.

Linguagem

Escrever código é sobre escrever. Simples e puramente. Estamos aqui para transformar ideias em linhas de código úteis. E isso é complicado. Aprender uma linguagem de programação nova não é. Em pouco mais de uma ou duas semanas você já consegue escrever além de um Hello world. Mas chegar a maestria leva tempo.

Como foi demonstrado no Nerdologia Programação e Cognição programação é mais sobre ler e escrever código, do que sobre lógica e matemática. Boa parte do nosso tempo enquanto programadores é ler e escrever código legível, e aí está uma palavra bem conhecida pelos programadores: legível.

Um código ser legível vai além de ter uma boa lógica. É sobre deixar o código claro o suficiente para você ou outro alguém da sua equipe conseguir ler e entender o que ele resolve.

Pense em um livro mal escrito, não importa se a mensagem escrita ali seja boa, se não for claro, não será entendido e se não for entendido perde o seu propósito. Ao escrever código, imagine-o como um livro. Você deve levar as pessoas pela sua estória, passar quais são os personagens e como eles interagem entre si. Tomemos aqui alguns exemplos:

1
2
3
4
5
6
<?php

public function bookDustJacket(Book $book): ?string
{
    return $book->dustJacket ?? null;
}
1
2
3
4
5
6
<?php

public function bookDustJacket(Book $book): ?string
{
    return $book->dustJacket ? $book->dustJacket : null;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php

public function bookDustJacket($book)
{
    if ($book->dustJacket) {
        return $book->dustJacket);
    } else {
        return null;
    }
}

Os três exemplos estão corretos. Os três exemplos retornam a mesma informação. Mas no exemplo 1 temos, além de um retorno simples, temos o uso do operador null coalescing e aproveito aqui para lançar mais um ponto sobre literatura e código: É necessário ter vocabulário.

Nossas linguagens de programação estão em constante mudanças (exceto por umas ou outras, e sim, estou olhando pra você Cobol). Por tanto é necessário procurar essa mudanças e nos acostumar a elas. O próprio null coalescing que usei como exemplo, está disponível desde a versão 7.0.0 do PHP, lançada em 2015 e mesmo assim muitos programadores não a conhecem.

Aproveite esse mar de código chamado Github e leia o código-fonte de outros projetos. Veja como é escrito um framework por exemplo. Isso vai te inspirar a escrever código melhor.

Ter classes pequenas com métodos pequenos, também tornam mais simples a compreensão do que está acontecendo. Já pegou um livro que um paragrafo tem 300 linhas? É cansativo, é difícil de absorver o que a obra está tentando passar (e aqui estou ignorando autores como José Saramago, que mesmo com seus paragrafo gigantes consegue manter a atenção do leitor, mas convenhamos, não somos José Saramago). Tenha em mente que você e outras pessoas iram ler isso no futuro, e que ser claro e objetivo na escrita pode evitar grandes problemas na manutenção desse código.

Escrever bom código também envolve lapidar.

Temos essa mania de escrever código e, se estiver funcionando, jogá-lo em produção. Após o código “estar funcionando”, volte a ele, veja se as instruções usadas até ali estão claras. Será que dá pra melhorar o nome de uma variável? Será que podemos quebrar essa classe gigantesca em classes menores?

Essa é uma forma de criar. Jogue tudo pra fora, coloque na tela tudo aquilo que você julga necessário para resolver o problema, e depois volte ao que escreveu e aprimore. A primeira versão do seu código, a que funciona, é o esboço mas ainda falta tirar as rebarbas, limpar as arestas, deixá-la limpa o bastante para que você possa olhar para ela daqui a alguns meses e ela ainda fazer sentido. Lembre-se que o contexto que você tem no momento em que está fazendo a tarefa não existirá no futuro. Você não vai se lembrar por que fez aquele trecho de código, então tente simplificá-lo para que você entenda no futuro.

Com isso em mente, na próxima vez que for escrever código, lembre-se de manter a clareza e coesão entre os elementos que fazem parte do seu código. Você está sendo autor de um livro que será lido muitas vezes…

Referências: