# Contribuir para o &arts;

## Como Pode Ajudar

O projecto do &arts; poderá usar a ajuda dos programadores para tornar as aplicações multimédia cientes do &arts;, criar aplicações multimédia novas e melhorar as capacidades do &arts;. Contudo, você não terá de ser um programador para contribuir. A ajuda também poderá ser usada para as pessoas dos testes para enviarem relatórios de erros, traduções do texto e da documentação das aplicações para outras línguas, artistas para desenharem imagens (especialmente para os módulos do artsbuilder), músicos para criarem módulos de amostras do &arts; e escritores para criarem ou validarem a correcção da documentação.

## Listas de Correio

A maioria das discussões de programação do &arts; tomam lugar em duas listas de correio. Este é o lugar para discutir as novas ideias de funcionalidades e de implementação, ou para pedir ajuda para alguns problemas.

A lista de correio de Multimédia do &kde; é para os assuntos gerais de multimédia do &kde;, e que inclui o &arts;, assim como as aplicações multimédia, como o &noatun; e o &aktion;. Você poder-se-á subscrever na página Web em http://www.kde.org/mailinglists.html ou enviar uma mensagem de e-mail com o assunto igual a `subscribe `o-seu-endereço-de-e-mail`` para kde-multimedia-request@kde.org. A lista está também arquivada em http://lists.kde.org.

A lista de correio do &arts; é para os assuntos específicos do &arts;, incluindo a utilização fora do &kde; do &arts;. Para se subscrever, envie uma mensagem de e-mail que contenha o corpo da mensagem `subscribe `o-seu-endereço-de-e-mail`` para arts-request@space.twc.de. A lista é arquivada em http://space.twc.de/~stefan/arts-archive.

## Normas de Código

Para obter uma leitura consistente de todo o código, é importante manter o estilo de código igual entre si em todo o código do &arts;. Por favor, mesmo que você só crie um módulo, tente escrever/formatar o seu código de acordo com as recomendações, para que facilite para as várias pessoas manterem a estrutura de código e para ser mais fácil de copiar pedaços de código de um bloco para outro.

Nome das funções-membro

- Estilo do &Qt;/&Java;. Isso equivale à capitalização nas quebras de palavras, tendo a primeira letra em minúsculas; sem sublinhados.

  Isto significa, por exemplo:

      criarDescrEstrutura()
         actualizarItem();
         iniciar();

Membros da classe

- Os membros da classe não são capitalizados, como por exemplo 'barramenu' ou 'botao'.

  Quando existirem funções de acesso, a norma deverá ser a do &MCOP;, isto é, ao ter um membro 'long' `xpto`, o qual não será visível directamente, você cria funções:

      xpto(long novo_valor);
         long xpto();

  para obter e alterar o valor. Nesse caso, o valor real de `xpto` serão armazenadas em _xpto.

Nomes das classes

- Todas as classes deverão ser capitalizadas nas palavras, o que significa `JanelaModulo`, `ModuloSintese`. Todas as classes que pertencem às bibliotecas deverão usar o espaço de nomes do &arts;, como o `Arts::Soundserver`.

  As implementações das classes do &MCOP; dever-se-ão chamar `Classe_impl`, como por exemplo `ServidorSom_impl`.

Parâmetros

- Os parâmetros nunca estão capitalizados.

Variáveis locais

- As variáveis locais nunca são capitalizadas, e poderão ter nomes do tipo `i`, `p`, `x`, &etc;, sempre que apropriado.

Tamanho da tabulação

- Uma tabulação equivale neste caso a 4 espaços.

Espaços nas expressões

- Você não precisa normalmente de usar espaços nas expressões. Você poderá, no entanto, usá-los entre os operadores e os seus operandos. Todavia, se você puser um espaço antes de um operador (p.ex., o +), você também precisa de pôr um a seguir ao mesmo. A única excepção a isto são as expressões do tipo lista (com o ,), onde você deverá pôr um espaço a seguir ao ",", mas não antes. Também é aceitável omitir aqui o espaço.

  Os exemplos seguintes demonstram uma boa utilização dos espaços:

      {
          int a,b;
          int c, d, e;
          int f = 4;

          a=b=c=d+e+f;
          a = b = c = d + e + f;

          if(a == 4) {
              a = b = c = (d+e)/2;
          }

          while(b<3)
              c--;

          arts_debug("%d\n", c);
      }

  Os exemplos seguintes demonstram como não usar os espaços. Para as chamadas as funções, a seguir ao 'if', 'while', 'for', 'switch', entre outros, não é adicionado nenhum espaço.

      {
          // MAL: se você indicar uma lista, ponha espaços apenas após o ","
          int a , b , c , d , e , f;

          // MAL: utilização não-simétrica dos espaços no operador '='
          a= 5;

          // MAL: se for considerada uma função, e se não for seguida de um espaço
          if (a == 5) {
          }

          // MAL: não colocar um espaço a seguir ao 'while'
          while (a--)
              b++;

          // MAL: os nomes das funções não são seguidos de um espaço
          arts_debug ("%d\n", c);

          // MAL: nada aqui é o nome de um membro
          Arts::Object o = Arts::Object::null ();
      }

Nomenclatura dos ficheiros de código

- Os ficheiros de código aqui não deverã ter capitalizações no nome. Deverã ter o nome da classe quando implementam uma única classe. A sua extensão é a `.cc` se se referirem ao código independente do &Qt;/&GUI;, e `.cpp` se se referirem ao código dependente do &Qt;/&GUI;. Os ficheiros de implementação das interfaces dever-se-á chamar ``xpto`_impl`, se o Xpto for o nome da interface.

  Os ficheiros &IDL; deverão ser chamados de uma forma descritiva para a colecção de interfaces que eles contêm, estando tudo também em minúsculas. Especialmente, não é bom chamar a um ficheiro &IDL; o nome da classe, dado que o mediador .mcopclass e os itens do tipo de informação irão colidir, nesse caso.