Por que o código do Wordpress é tão "espaço-feliz"?

22

O núcleo do WP, muitos plugins do WP e os próprios padrões de codificação do WP usam uma "aplicação generosa" do Spacecaractere (não para identificação, mas "dentro" de parênteses e colchetes). Isso parece exclusivo do Wordpress - esse estilo / filosofia não parece estar presente em outros projetos similares, PHP ou outros.

Para obter mais informações sobre essa abordagem, consulte: https://make.wordpress.org/core/handbook/coding-standards/php/#space-usage

Exemplo: foreach ( (array) $foo as $bar ) { ...

Estou me referindo ao espaço após foreach, após o primeiro (e antes do final )(e outros espaços semelhantes mostrados em "Space Usage" no link acima).

Esse estilo me parece desnecessário - requer mais digitação e (opinião) torna o código de análise visualmente mais difícil.

Meu desejo não é debater se esse estilo é ou não uma boa ideia. Antes, eu simplesmente quero entender os motivos pelos quais esse é o estilo recomendado. Até comentaristas sobre os padrões de codificação WP são curiosos:

insira a descrição da imagem aqui

As respostas fornecidas à pergunta de MK Safi são essencialmente:

  1. Para legibilidade
  2. Status quo (aka "É assim que as coisas são")

Meu raciocínio para perguntar é que, pessoalmente, não vejo muito valor em adotar os padrões de codificação WP (relativos a "Uso do espaço") em nossos projetos internos. No entanto, estou curioso para saber se está faltando alguma coisa.

Existem razões além das duas listadas acima, ostensivamente válidas ou não, para seguir o estilo "Uso do espaço" do Wordpress?

rinogo
fonte
2
Você pode fazer o que quiser em seus projetos internos, desde que seja consistente. Como observação lateral, usamos guias em vez de espaços; portanto, é possível exigir menos digitação, mas isso não importa se você tiver um IDE moderno que faça toda a formatação para você e possa reformatar para estilos diferentes (por exemplo, sublime). com pacotes, PHPStorm, etc)
Tom J Nowell
Obrigado pelo seu comentário, @ TomJNowell! Acho que talvez tenha me comunicado mal na minha "pergunta" - estou perguntando menos sobre tabulações / espaços para indentação e mais sobre as regras mencionadas em "Uso do espaço" em make.wordpress.org/core/handbook/coding-standards/php / ... . Desculpe, eu não estava mais claro!
Rinogo
5
É mais fácil ler quando você não tem destaque de sintaxe. É por isso que estou usando esse estilo em projetos internos. Eu tenho que editar o PHP frequentemente em um console simples com o vi em uma configuração mínima.
fuxia
2
FWIW, o MediaWiki tem uma convenção de estilo muito semelhante e é realmente bastante rigorosa em aplicá-la (pelo menos no núcleo). Eles ainda têm um script para adicionar automaticamente os espaços ausentes. Tudo o que posso dizer é que se acostuma a isso depois de um tempo.
Ilmari Karonen
1
@rinogo eu sei, os comentários são às vezes apenas comentários, não responde :)
Tom J Nowell

Respostas:

13

Ressonância

Em relação ao "espaço em branco" (não importa se tabulações ou espaços): é simplesmente uma preferência pessoal que permaneceu no projeto.

Os padrões de codificação WP imo são uma bagunça e podem ser ignorados - desde que você não esteja contribuindo para o núcleo, o que é

  • uma história diferente e
  • O guia de estilo também é ignorado lá.

"[...] não é aplicado retroativamente em massa em códigos antigos, pois dificulta o uso do histórico svn / git. A política oficial é que o novo código siga o guia de estilo, mas se você formatar o código adjacente corretamente então seja assim, mas os patches que apenas formatam o código ou confirmam que apenas o código de formato são proibidos ".

- @TomJNowell nos comentários

Alternativas

É melhor você seguir os padrões PSR (a saber: 2) ou coisas como os padrões Symfony (ou apenas os seus).

Ferramentas e aumento de desempenho

Você não obtém lucro por ter um padrão de codificação (além de ter um para compartilhar e a minoria que o odeia, enquanto o resto o dita) ou por ter mais ou menos tabulações ou espaços. Caso esteja preocupado com o espaço em disco desnecessário usado ou com programas mais lentos, você ainda pode compactar seu código (consulte o projeto GitPHPHooks ) ao confirmar. O benefício que você vai ganhar vai ser em torno de no máximo 5% do espaço de arquivo original, praticamente igual ao que HTML sintaxe compressão / minification lhe dá. Existem ferramentas de minificação do Node.js disponíveis via npm para isso.

O que pessoalmente achei realmente útil é o PHP Linter e o _PHP Mess Detector. Incorporei os dois na Biblioteca GitPHPHooks para não precisar pensar ou me preocupar em executá-lo.

kaiser
fonte
O guia de estilo não é ignorado no Core, mas não é aplicado retroativamente em massa no código antigo, pois torna o histórico do svn / git muito difícil de usar. A política oficial é que o novo código siga o guia de estilo, mas se você formatar o código adjacente corretamente, o mesmo será feito, mas os patches que apenas o formato do código ou confirmam que apenas o código do formato são proibidos
Tom J Nowell
@ TomJNowell E, portanto, torna o guia de estilo inútil :) De qualquer forma, envie uma edição e adicione-a à resposta. É uma informação digna de nota.
kaiser
Eu acho que não fui super claro na minha pergunta - estou me referindo menos a guias versus espaços e mais a "Uso do espaço" em make.wordpress.org/core/handbook/coding-standards/php/… . Vou editar a pergunta para ficar mais claro.
Rinogo
1
@rinogo Eu entendi direito da primeira vez, daí o primeiro parágrafo. Btw, eu considero isso mais legível também.
kaiser
7

Os espaços após os pontos são normais, como $baz . '-5', esse estilo é usado em muitos padrões de codificação para operadores ( y + z).

Isso é feito para melhorar a legibilidade, por exemplo, um deles é mais legível que o outro.

$cow.$dog.$cat.$table.$chocolate.$puddle.$iterator.$stuctureone.$stucturetwo

$cow . $dog . $cat . $table . $chocolate . $puddle . $iterator . $stuctureone . $stucturetwo

Isso se torna ainda mais óbvio quando cercado por outro "código".

Quanto aos espaços entre parênteses, ( 1, 2, 3 )eu não tenho ideia, acho que o argumento é de legibilidade também.

Pode ser confuso, já que os próprios padrões do WordPress têm exemplos entre parênteses nos comentários que não têm espaços e a própria base de código é confusa com algumas partes com espaços e outras sem (veja a captura de tela abaixo), mesmo com a mesma função.

A maioria dos padrões PHP realmente faz o oposto de uma chamada para .. parênteses devem incluir seu conteúdo. De fato, a maioria dos padrões de codificação para outros idiomas o escreve assim: (1, 2, 3)é um pouco misterioso o motivo pelo qual o WP faz dessa maneira.

Aqui está um exemplo para comparar a partir de uma função do WordPress.

insira a descrição da imagem aqui

Versão maior para comparar: http://i.imgur.com/nTEbV7v.jpg

Eu prefiro o da direita, especialmente quando vejo uma tela cheia de código, mas é uma preferência pessoal.

Wyck
fonte
obrigado pela sua resposta! O .espaçamento faz sentido para mim, pois .é realmente apenas um operador binário, assim como +ou -. Seus pensamentos entre parênteses "abraçando" o conteúdo deles são exatamente o motivo pelo qual eu fiz essa pergunta. Esse comportamento, junto com as regras ainda mais estranhas, como as entre colchetes (o WP diz usar $foo['bar']e $foo[ $bar ]), é exatamente o motivo pelo qual eu fiz essa pergunta. :)
rinogo 08/01