Dr Beco GitHub Blog

home

Série Contribuindo: como contribuir com um repositório

11 Jul 2016

Série: Contribuindo

Importância, peculiaridades e diferenças

Sua contribuição aos códigos disponíveis no github é essencial para tornar estes programas cada vez melhores. Além disso, é difícil para apenas um desenvolvedor testar a imensa quantidade de plataformas e a miríade de configurações existentes. Este guia está aqui para tornar mais simples sua contribuição e aumentar as chances dela ser aceita. Há apenas algumas regras que precisamos para que consigamos manter a organização e o controle do código, então basta seguir este pequeno guia de ‘Como contribuir’.

Cada código, claro, terá suas peculiaridades. Confira no repositório escolhido para entender os detalhes e para você se adaptar ao padrão estabelecido. Deste modo, este texto é mais um guia para que você possa adaptá-lo e inserir no seu próprio repositório.

O local ideal para colocar este texto é numa pasta escondida chamada .github, com nome de arquivo CONTRIBUTING.md. Desta forma, este texto terá um link automático na página de criação de novos issues como por exemplo em:

Please review the guidelines for contributing to this repository.

Iniciando

Tenha certeza de que sua conta está devidamente configurada. Cheque os seguintes itens:

Arquivos no repositório

Formatação

O estilo de indentação

Linguagem C

O estilo Allman é um entre mais de 15 estilos e variantes disponíveis e encontradas em vários tipos de código. Não misture os estilos. Este estilo utiliza a seguinte sintaxe, chamada de broken brackets (ou chaves quebradas). Atente para os espaços entre operadores e mudanças de linhas no exemplo abaixo:

/**
 * @ingroup Modulo
 * @brief Breve descricao
 * @details Descricao detalhada
 * que pode estar em multiplas linhas
 *
 * @param[in] is_bar indice de entrada
 * @param[out] x indice recalculado de saida 
 * @param[in,out] z Entra com um valor blablabla e devolve blebleble
 *
 * @return Descricao do que a funcao retorna
 * @author Ruben Carlo Benante
 * @date 2016-06-05
 */
int foonc(int is_bar[MAX], int x, char *z)
{
    int p; /* a really though condition */
    
    p = !(is_bar[0] || isBar[1]);

    /* check if it's beer number 2 and not in some thugh condition */
    if(is_bar[x] == 2 && !p)
    {
        z[bar(p + 1)] = 'b';
        return 1;
    }
    else
        return 0;
}

Conheça todos os estilos na página de documentação do astyle.

Dicas para um bom código fonte:

Comentários

Comentários DOXYGEN

Antes de cada função, coloque comentários na sintaxe DOXYGEN. O mínimo necessário para bem explicar uma função é detalhar:

O exemplo acima mostra somente os campos obrigatórios, e descreve hipotéticas variáveis como parâmetros.

No meio do código

Variáveis

Organização

A ordem que o esqueleto do programa deve ter é como segue:

Em linguagem C

Ciclo de trabalho

Teste

Faça uma boa mensagem de commit

Faz um exemplo para demonstrar a clareza do commit

Sem este commit a explicação sobre mensagens de commit ficaria 
falha, sem um exemplo concreto. Este é um problema, porque assim 
fica apenas na imaginação o que seria um bom commit.Este commit 
corrige este problema ao fazer aqui um exemplo concreto e imperativo.

A primeira linha é um título imperativo descritivo do essencial. 
Os dois parágrafos seguintes, o de cima e este, são explicações mais 
aprofundadas. É importante descrever:

(1) _o que ocorria_ antes do commit, 
(2) _qual_ é o problema que este commit resolve, 
(3) _porque_ este comportamento é problemático, e 
(4) _como_ este commit corrige este problema.

Também é possível usar enumerações para clarificar algumas mudanças 
em pontos específicos, como:

* mudafunc() : agora não retorna mais void e sim o código do cliente
* funcoutra() : criada para cumprir outra finalidade que faltava
* divideaqui() : criada para cumprir uma finalidade tal e tal que 
antes estava sendo feita na função mudafunc() de modo a ficar mais 
clara a divisão do que cada função faz.

Lembre que a primeira linha é importante para ver o log e acompanhar a evolução do programa.

Dicas de configuração

Final de linha estilo Unix (\n)

# Arquivo .gitattributes

* text=auto
*.c text
*.h text
*.txt text
*.ini text
*.eng text
*.x binary
*.jpg binary
*.png binary

Obrigado!

Agora é com você! Divirta-se programando!

Atenciosamente,

Prof. Dr. Ruben Carlo Benante <<rcb@beco.cc>>

Autor do brainforce

Thank you for your visit