Artigo original: What is boilerplate and why do we use it? Necessity of coding style guide

Escrito por: Meet Zaveri

Em Tecnologia da Informação, um boilerplate é uma unidade de escrita que pode ser reutilizada continuamente sem alteração. Por extensão, a ideia às vezes é aplicada à programação reutilizável, como em "código boilerplate".

Contratos legais, incluindo termos e condições de software e hardware, fazem uso abundante de boilerplates.

Por exemplo, um advogado pode dar a você um contrato de cinco páginas para assinar, mas a maior parte do contrato contém um texto padrão (boilerplate) – o que significa que é o mesmo para todos aqueles que recebem esse contrato, com apenas algumas linhas alteradas aqui e ali.

Na programação de computadores, o código boilerplate ou boilerplate refere-se a seções de código que devem ser incluídas em muitos lugares com pouca ou nenhuma alteração. É frequentemente usado quando se refere a linguagens consideradas verborrágicas, ou seja, o programador deve escrever muito código para fazer trabalhos mínimos.

Por exemplo, no desenvolvimento para a web, um boilerplate simples para HTML ficaria assim:

<!DOCTYPE html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial- scale=1, shrink-to-fit=no">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body>
        <p>Hello world! This is HTML5 Boilerplate.</p>
        <script src="js/vendor/modernizr-{{MODERNIZR_VERSION}}.min.js"></script>
    </body>
</html>

Você pode ver todo o repositório aqui:

h5bp/html5-boilerplateum modelo de front-end profissional para criar aplicativos web ou sites rápidos, robustos e adaptáveis.

Na década de 1890, o boilerplate era, na verdade, fundido ou estampado em metal pronto para a impressão e distribuído para editoras de jornais e empresas nos Estados Unidos. Até a década de 1950, milhares de jornais recebiam e usavam o boilerplate do maior fornecedor do país, a Western Newspaper Union. Algumas empresas também enviavam comunicados à imprensa como boilerplates, de modo que tinham de ser impressos conforme eram escritos.

1_QQnxLRyGkTqHamqONvrftA

A maioria dos desenvolvedores para a web profissionais criou uma coleção de recursos e trechos de código que eles reutilizam em projetos para acelerar o desenvolvimento. Existem alguns padrões universais ou quase universais que todos os sites têm em comum. Em vez de reconstruí-los continuamente, a maioria dos desenvolvedores começa copiando o código usado para um projeto semelhante e, em seguida, começa a modificá-lo.

Alguns desenvolvedores reconhecem o valor desses modelos boilerplate iniciais e reservam um tempo para torná-los mais genéricos e compartilhá-los on-line para que outros possam usá-lo.

Isso não se limita apenas ao desenvolvimento para web. O boilerplate também é usado em AI/ML, pois há mais frameworks e bibliotecas em crescimento.

Características necessárias ao boilerplate para projetos grandes (prontos para produção)

  • Documentação de boa qualidade e legível
  • Estrutura de código com um nível de abstração mais profundo
  • Seguimento do padrão de código adequado
  • Ferramenta de CLI (para rápida prototipagem e configuração)
  • Escalabilidade
  • Ferramentas de teste fáceis
  • Módulos de API necessários
  • Suporte a internacionalização e localização
  • Divisão do código
  • Código do servidor e do client para configuração
  • Estrutura de navegação e de roteamento adequada

Depois de todas essas especificações mínimas, você deve começar a editar e alterar o código para construir seu projeto.

Existem algumas grandes empresas de tecnologia que até constroem seu próprio boilerplate. Elas o usam para projetos respectivos e similares ao longo do tempo.

Um exemplo perfeito para isso seria o boilerplate do react.js:

react-boilerplate/react-boilerplateuma base altamente escalável e off-line com a melhor experiência de desenvolvedor…

Boilerplate para projetos menores (scaffolding)

Este tipo de boilerplate é geralmente uma espécie de "conjunto para novatos", ou, de modo profissional, é chamado de “Scaffolding”. Seus principais usuários-alvo são desenvolvedores novatos ou novos adotantes.

Ele se concentra na prototipagem rápida, criando os elementos necessários apenas para novos projetos. Eles exigem menos funcionalidade e não são escaláveis ao longo do tempo e do projeto.

Sua estrutura de código não é muito expandida e não envolve uma camada de abstração mais profunda, pois os usuários precisam apenas criar os recursos principais. Isso elimina a necessidade de utilitários extras.

1_lfaRa-3SmkzcN2cuy3MCYw
Estrutura de código

O exemplo mais simples é o boilerplate do create-react-app, do Facebook:

facebookincubator/create-react-appcrie aplicações React com nenhuma configuração.

Qual é a diferença entre o boilerplate e o modelo (template)?

Como bem diz Joachim Pense (texto em inglês), boilerplate é algo que você copia e cola e apenas adiciona a um documento. Aparece com mais frequência em contratos em que a linguagem é usada e reutilizada, especificando coisas como condições e ressalvas.

Os escritores usam modelos (do inglês, templates) como texto padrão, às vezes com efeitos negativos. Em termos gerais, um modelo é um padrão usado para criar objetos. Na escrita, é uma forma padronizada de algo como um resumo que os escritores podem usar para desenvolver suas próprias versões.

Ao contrário dos boilerplates, os modelos são adaptados para um uso específico. O problema surgiu para mim quando os alunos usaram modelos do Word para seus currículos e todos acabaram parecendo iguais.

Tanto os modelos quanto os boilerplates podem tornar a redação comercial artificial e emperrada se usados de modo imprudente.

Guia de estilo para escrita de código

Independentemente de você estar usando um boilerplate ou não, existem alguns padrões seguidos por empresas para escrever código. Um deles é o guia de estilo. Ele tenta explicar os estilos e padrões básicos usados em várias empresas ou organizações. Geralmente, é regra que os funcionários devam adotar o guia de estilo de escrita de código de sua empresa.

1_VHZwgapkhk1bMWHilZa6vw

O guia de estilo descreve inúmeras regras para se escrever código, como recuo de tabulações e espaços, nomenclatura de variáveis e funções, escrita de comentários necessários, formatação, estruturas de arquivo de origem, uso do método adequado de estruturas de dados, prevenção de hoisting, escopo, instruções de controle e muito mais.

1_hxP11Dbe9ksYpK5c8_nU3g

Os estilos de programação geralmente lidam com a aparência visual do código-fonte com o objetivo de legibilidade. Há muito tempo estão disponíveis softwares que formatam o código-fonte automaticamente, deixando os programadores se concentrarem em nomenclatura, lógica e técnicas superiores.

Como ponto prático, usar um computador para formatar o código-fonte economiza tempo, sendo possível impor padrões em toda a empresa sem debates infinitos e sem resolução. Alguns desses debates incluem: usar tabulações ou espaços para a indentação do código, qual o IDE perfeito para programar e assim por diante. O interessante é que você pode se envolver nesses debates que acontecem, principalmente no Reddit. Você também pode participar de algumas das perguntas e respostas do Stack Overflow.

1_rjETUMQ62xAZegCSAglE6Q
Fonte — https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/

Para desenvolvedores para a web, o guia de estilo mais comum para JS é o guia de estilo de javascript do Airbnb. É código aberto e todo mundo pode contribuir.

airbnb/javascriptguia de estilo de JavaScript

Se alguém tiver alguma dúvida do porquê o Javascript precisa de um guia de estilo, leia a segunda resposta do relatório de problemas escrito por Harrison Shoff, programador na Airbnb.

Por que o JavaScript precisa de um guia de estilo? · Issue #102 · airbnb/javascriptuma das minhas partes favoritas sobre a comunidade de JavaScript é que as pessoas escolhem escrevê-lo em tantas formas diferentes...

Aqui estão alguns guias de estilo (em inglês) para algumas das linguagens mais populares:

DotNet Code Formatter

Java: Google-Java-Format

Javascript Standard Style (diferente do javascript do airbnb)

PHP Coding Standards Fixer

Python: Google’s YAPF

Ruby: Rubocop

Mais sobre boilerplate: conceito para POO

Em programação orientada a objetos (POO), as classes geralmente são fornecidas com métodos para obter e definir variáveis de instância. As definições desses métodos podem, frequentemente, ser consideradas boilerplates.

Embora o código varie de uma classe para outra, sua estrutura é suficientemente estereotipada para que seja melhor gerado automaticamente do que escrito à mão.

Por exemplo, na classe Java a seguir, que representa um animal de estimação, quase todo o código é boilerplate, exceto pelas declarações de Pet (animal de estimação), name (nome), and owner (proprietário):

public class Pet {
    private String name;
    Person owner;
    Pet(String name, Person owner) {
    	this.name = name;
        this.owner = owner;
    }
    
    public String getName() {
    	return name;
    }
    
    public void setName(String name) {
    	this.name = name;
    }
    
    public Person getOwner() {
    	return owner;
    }
    
    public void setOwner(Person owner) {
    	this.owner = owner;
    }
}

A definição de boilerplate está se tornando mais global em muitas outras linguagens de programação hoje em dia. Vem de linguagens de POO e híbridas – que antes eram processuais, mas se tornaram POO. Elas agora têm o mesmo objetivo de repetir o código que você constrói com um modelo/template/classe/objeto, então adotam esse termo. Você faz um modelo e as únicas coisas que você faz para cada instância de um modelo são os parâmetros individuais.

Esta parte é o que chamamos de boilerplate. Você simplesmente reutiliza o código a partir do qual criou um modelo, mas com parâmetros diferentes.

Boilerplate como API

Já que você está simplesmente reutilizando o código modelo com parâmetros diferentes, isso implica que poderíamos criar APIs reusáveis que só precisam de uma alteração de entradas e saídas.

Conclusão

"Código boilerplate" é qualquer código aparentemente repetitivo que é mostrado várias vezes para obter um resultado que parece ser muito mais simples.

O autor deste artigo o escreveu porque havia sido instruído por um líder de equipe a aprender sobre as muitas variedades de boilerplates que podem ser adequadas ao nosso projeto. Então, ele precisou sair em busca do "boilerplate perfeito".

Todo feedback sobre este artigo é muito bem-vindo! Vamos nessa!