À medida que envelheço e mais sábioAinda mais velho como programador, descobri que meu estilo pessoal de codificação tende fortemente para o minimalismo.
Fiquei satisfeito, então, ao encontrar muitas das convenções de codificação que adotei nos últimos 20 anos codificadas no Programação Spartan.
Não, não é esse tipo de Espartano, embora esteja historicamente relacionado. O significado específico de espartano A que estou me referindo é esta:
(adj) ascético, ascético, austero, espartano (que pratica grande abnegação) “Seja sistematicamente ascético… faça… algo apenas porque o senhor preferiria não fazê-lo” – William James; “a desert nomad’s austere life” (vida austera de um nômade do deserto); “a spartan diet” (dieta espartana); “a spartan existence” (existência espartana)
Tentei código menorchegando ao ponto de escrever nenhum código quando posso fazer isso. Programação espartana alinha-se perfeitamente com esses objetivos. O senhor se esforça para minimização simultânea de seu código em várias dimensões:
- Complexidade horizontal. A profundidade do aninhamento das estruturas de controle.
- Complexidade vertical. O número de linhas ou o comprimento do código.
- Contagem de tokens.
- Contagem de caracteres.
- Parâmetros. O número de parâmetros de uma rotina ou de uma estrutura genérica.
- Variáveis.
- Instruções de looping. O número de instruções iterativas e seu nível de aninhamento.
- Condicionais. O número de
if
e de ramificações múltiplasswitch
declarações.
A disciplina da programação espartana significa uso frugal de variáveis:
- Minimizar número de variáveis. Variáveis inline que são usadas apenas uma vez. Aproveite as vantagens do
foreach
loops. - Minimizar visibilidade de variáveis e outros identificadores. Defina as variáveis no menor escopo possível.
- Minimizar acessibilidade das variáveis. Prefira o maior encapsulamento do
private
variáveis. - Minimizar variabilidade das variáveis. Esforce-se para tornar as variáveis
final
em Java econst
em C++. Use anotações ou restrições sempre que possível. - Minimizar vida útil das variáveis. Prefira as variáveis efêmeras às de vida mais longa. Evite variáveis persistentes, como arquivos.
- Minimizar nomes das variáveis. Variáveis de curta duração e escopo restrito podem usar nomes concisos e concisos.
- Minimizar uso de matriz variáveis. Substitua-as por coleções fornecidas por suas bibliotecas padrão.
Isso também significa que uso frugal de estruturas de controlecom o uso precoce de return
sempre que possível. Isso provavelmente é melhor ilustrado com um exemplo real, começando com o código bruto e refatorando-o usando as técnicas de programação espartanas:
Não concordo com todas as regras e diretrizes apresentadas aqui, mas com certeza concordei com a maior parte da página. O minimalismo nem sempre é a escolha certa, mas raramente é a errada escolha. O senhor certamente poderia fazer pior do que adotar a disciplina da programação espartana em seu próximo projeto de programação.
(dica para Yuval Tobias por enviar este link para mim)