Programação Spartan

À 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.

300-movie.jpg

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:

  1. Complexidade horizontal. A profundidade do aninhamento das estruturas de controle.
  2. Complexidade vertical. O número de linhas ou o comprimento do código.
  3. Contagem de tokens.
  4. Contagem de caracteres.
  5. Parâmetros. O número de parâmetros de uma rotina ou de uma estrutura genérica.
  6. Variáveis.
  7. Instruções de looping. O número de instruções iterativas e seu nível de aninhamento.
  8. Condicionais. O número de if e de ramificações múltiplas switch declarações.

A disciplina da programação espartana significa uso frugal de variáveis:

  1. Minimizar número de variáveis. Variáveis inline que são usadas apenas uma vez. Aproveite as vantagens do foreach loops.
  2. Minimizar visibilidade de variáveis e outros identificadores. Defina as variáveis no menor escopo possível.
  3. Minimizar acessibilidade das variáveis. Prefira o maior encapsulamento do private variáveis.
  4. Minimizar variabilidade das variáveis. Esforce-se para tornar as variáveis final em Java e const em C++. Use anotações ou restrições sempre que possível.
  5. Minimizar vida útil das variáveis. Prefira as variáveis efêmeras às de vida mais longa. Evite variáveis persistentes, como arquivos.
  6. Minimizar nomes das variáveis. Variáveis de curta duração e escopo restrito podem usar nomes concisos e concisos.
  7. 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)