+12

Dicas de estilo de programação

criado por Rubens Takiguti Ribeiro em 22/03/2010 1:43am
Organizando o Código-fonte

Outras dicas úteis para tornar o código mais legível são:

1. Evitar muitas chamadas de funções dentro de outras chamadas de funções. Isso pode tornar o código muito ilegível se usado com abuso. Veja o exemplo:
$texto = str_replace(' ', '_', substr(strtoupper($texto), 1, 3));
Note que não é tão claro perceber que o parâmetro "1" e "3" são utilizados pela função substr.
O código abaixo, embora um pouco menos eficiênte, é mais legível, já que se observa, com clareza, cada parâmetro utilizado em cada linha:
$texto = strtoupper($texto);
$texto = substr($texto, 1, 3);
$texto = str_replace(' ', '_', $texto);

2. Evitar criar funções/métodos com muitos parâmetros. Nestes casos, melhor estipular o que é de fato obrigatório para a função/método e, para os valores opcionais, definir um único parâmetro que representa um pacote de valores opcionais (representado na forma de vetor associativo).
function exemplo($a, $b, $opcional = array()) {

    // Valor padrao para os parametros opcionais
    $padrao = array(
        'quantidade' => 1,
        'cor'        => '#FF0000'
    );
    $opcional = array_merge($padrao, $opcional);

    // Aqui o vetor $opcional possui todos os indices opcionais preenchidos
    // ou com o valor padrao, ou com o valor passado para a funcao
    ...
}

3. Utilizar funções de formatação como sprintf, printf, etc. para tornar strings mais legíveis. Em alguns casos, concatenar strings com variáveis, depois com outras strings, pode tornar o código menos legível. Nestes casos, pode ser útil usar alguma função de formatação:
$link = sprintf('<a href="%s">%s</a>', $url, $nome);

4. Identar o código-fonte. A cada início de bloco de comandos, identar o conteúdo com tabulação ou um número pré-determinado de espaços (de preferência 3 ou 4).

Comentários:

Mostrando 1 - 10 de 11 comentários
Cara... Muito bom! Aprendi, e muito, com este artigo!
10/05/2012 12:00pm (~12 anos atrás)

Parabéns pelo artigo! :-)

Por isso eu acho importante o uso de frameworks, pois eles seguem certos padrões de desenvolvimento e não vira bagunça.
31/03/2011 2:15am (~13 anos atrás)

Josué, a quantidade de memória usada pelo PHP em uma execução é limitada pela diretiva memory_limit, do php.ini. Você consegue alterar o valor dela em tempo de execução chamando a função ini_set:
ini_set('memory_limit', '128M');

Se não me engano, o padrão é 128M, que já é uma quantidade considerável. O conteúdo gerado por uma página normalmente tem de 50Kb a 300Kb. Em casos extremos, pode chegar a 1Mb, mas é muito abaixo de 128M.

Um detalhe que ajuda a usar menos memória é encapsular bem os métodos. Assim, as variáveis (não estáticas) criadas exclusivamente para os métodos são desalocadas assim que o método termina a execução. Ou, caso alguma variável gigante não precisa mais ser usada em determinado ponto do código, usa-se unset para desalocá-la.
18/01/2011 2:35pm (~13 anos atrás)

Josue Samuel disse:
Há tempos venho ensaiando criar um script com o layout html como o exemplo da página 2 do artigo em questão.

Depois, eu utilizaria uma variável única pra concatenar o conteúdo gerado por uma página em específico e, ao termino de todo o processamento, imprimí-la no local adequado conforme a abordagem do Carlos Eduardo Gomes Monteiro (segundo post de baixo pra cima).

Entretanto, ainda não me sinti confortável em somar essas duas abordagens em especial pelo fato de não ter tando controle da quantidade de dados armazenado na variável que daria o output do conteúdo. Esse desconforto de seve em eu não saber exatamente o tamanho/memória consumida que o PHP/servidor suportaria.

Alguém tem idéia qual o limite máximo de tamanho de uma variável e no que isso pode impactar para o servidor?
18/01/2011 12:20pm (~13 anos atrás)

Não conhecia o heredoc e nowdoc... bem interessante
21/11/2010 12:06pm (~13 anos atrás)

Cara, estou impressionado, cada dia que passa, descubro que conheço menos de PHP hehehe Parabéns !!!
30/09/2010 9:57am (~13 anos atrás)

Anderson disse:
Sou novo no site phpbrail, quero dar os parabéns pelo artigo, achei sensacional.
Abraço.

Anderson de Oliveira Morais.
28/09/2010 12:09pm (~13 anos atrás)

Filipe Mtro disse:
Acho interessante a forma de usar os arquivos .tpl com as variáveis, as vezes vejo coisa como %%TPL_RODAPE%% e Olá você tem %s créditos e %s de débitos.

Alguem pode me explicar o uso dessa tecnologia?
Eu realmente ainda não entendi.
15/06/2010 5:06am (~14 anos atrás)

Wake Up disse:
Muito bom!

Principalmente a parte sobre as notações "heredoc" e "nowdoc" (que eu desconhecia até então).

[]'s
Mario
08/06/2010 1:45pm (~14 anos atrás)

Ótimo artigo!!!
Duas coisas que gostaria de comentar.

Esta parte
$time = time();
foreach ($itens as $item) {
    if ($item->tamanho > $tamanho_minimo) {
        foreach ($item->elementos as $elemento) {
            if ($elemento->visivel) {
                echo '<p>';
                if ($data > $time) {
                    echo 'teste';
                }
                echo $elemento->nome;
                echo '</p>';
            }
        }
    }
}

Eu prefiro ao invés de imprimir, eu gosto sempre de atribuir a variaveis e fazer a impressão apenas no final.
Que inclusive, algo que você citou no começo de forma sutil mas não detalhada.
Eu sempre atribuo tudo à variaveis.
Deixando as impressões apenas para o final.
Pois assim, toda a execução do PHP seria feita, e apenas após concluir é que viria o HTML.
Isso ajuda muito em relação do uso de funções como header(), session_start() e etc...

Outro ponto importante que você comentou foi os parametros nas funções.
Isso realmente é um problema quando se cria muitos parametros.
Eu também faço como você as vezes, utilizando arrays para parametros opcionais.
Mas uma outra forma de faze-lo.
É em caso de métodos de uma classe, utilizar métodos GET e SET para determinar os parametros opcionais.
Ou seja, dentro da classe, já seta os atributos com valores padrões, e utilizando o SET apenas para o caso de setar um valor diferente do padrão.
Isto também dá mais clareza ao código, pois fica mais fácil de ser entendido, sendo que utilizando array, o programador vai ter que ler o código para entender como ele deve escrever o array com os valores opcionais...

Mas estes dois pontos é claro, é tudo uma questão de estilo né...
Só estou deixando o meu ponto de vista, quem sabe agrade alguem né...

Abraço a todos!!!
07/06/2010 12:07pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)