# Сотрудничество с &arts;

## Как вы можете помочь

Помощь разработчикам заключается в адаптации существующих мультимедиа-приложений для работы с &arts;, создании новых приложений и расширении возможностей &arts;. Однако вам совсем необязательно быть разработчиком, чтобы помочь &arts;. Нам нужна помощь в тестировании (и написании отчётов об ошибках), переводе текстов и документации на различные языки, создании дизайна (особенно для модулей artsbuilder), музыканты могут написать примеры для модулей &arts;, а писатели - документацию.

## Списки рассылок

Большинство дискуссий разработчиков &arts; ведутся в двух рассылках. В этой обсуждаются новые функции, делятся мыслями и просят о помощи, если возникли проблемы.

Рассылка &kde; Multimedia предназначена для обсуждения общих мультимедиа-приложений для &kde;, в том числе и &arts;, наряду с &noatun; и &aktion;. Вы можете подписаться на нее с сайта http://www.kde.org/mailinglists.html или послать сообщение с темой `subscribe ваш-email-адрес` на kde-multimedia-request@kde.org. Архив рассылки можно найти по адресу http://lists.kde.org.

Рассылка для обсуждения вопросов об &arts;, в том числе и об использовании &arts; не в &kde;. Чтобы подписаться, пошлите сообщение с текстом`subscribe ваш-email-адрес` на arts-request@space.twc.de. Архив рассылки можно найти по адресу http://space.twc.de/~stefan/arts-archive.

## Стандарты кодирования

Чтобы можно было без лишних проблем читать разные исходные файлы, в них нужно использовать один стиль написания кода. Если вы просто пишете модуль, пожалуйста, постарайтесь писать код соответственно (или отформатируйте его), тогда разные люди смогут его дополнять или копировать его части.

Именование функций-членов

  Стиль &Qt;/&Java;. То есть каждое новое слово должно начинаться с заглавной буквы, но первое слово начинается со строчной, подчеркивания между словами не используются.

  Это значит, к примеру:

      createStructureDesc()
         updateWidget();
         start();

Члены класса

  Имена членов классов пишутся со строчной буквы: menubar, button.

  Если необходима функция доступа, лучше всего её писать в соответствии с &MCOP;, т. е. если есть функция-член `foo` типа long, которая не должна быть всегда видимой, вы пишете:

      foo(long new_value);
         long foo();

  функции получения и задания какого-либо значения. В этом случае, значение `foo` должно храниться в &lowbar;foo.

Имена классов

  В именах классов все слова должны начинаться с заглавной буквы, например, `ModuleView`, `SynthModule`. Все классы должны принадлежать библиотекам и использовать пространство имён &arts;, к примеру, `Arts::Soundserver`.

  Классы &MCOP; должны называться так:`Class&lowbar;impl`, например, `SoundServer&lowbar;impl`.

Параметры

  Параметры всегда пишутся строчными буквами.

Локальные переменные

  Локальные переменные всегда пишутся строчными буквами и могут называться `i`, `p`, `x` и т. д., если это не делает код трудночитаемым.

Размер табуляции (отступы)

  Один уровень отступа равен 4 пробелам.

Пробелы в выражениях

  Обычно вам не нужно использовать пробелы в выражениях. Хотя вы можете их вставлять между операторами и операндами. Однако, если вы набрали пробел перед оператором (например, +), нужно поставить его и после оператора. Единственное исключение - выражения с ",", в которых пробел нужно ставить после "," или вообще его опустить.

  Вот примеры правильного использования пробелов:

      {
          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);
      }

  А вот пример того, как не нужно ставить пробелы. В вызовах функций, после if, while, for, switch и т. д. пробелы не пишутся.

      {
          // ПЛОХО: в списке пробел ставится только после ","
          int a , b , c , d , e , f;

          // ПЛОХО: несимметричное использование пробела в операторе =
          a= 5;

          // ПЛОХО: if считается функцией, пробел не ставится
          if (a == 5) {
          }

          // ПЛОХО: не пишите пробел после while
          while (a--)
              b++;

          // ПЛОХО: после имён функций не надо ставить пробелы
          arts_debug ("%d\n", c);

          // ПЛОХО: не являются именами членов
          Arts::Object o = Arts::Object::null ();
      }

Имена сходных файлов

  В названиях исходных файлов не должно быть заглавных букв. Они должны называться по имени реализуемого класса, если в них описывается только он один. Если файл содержит код, не зависящий от &Qt;/&GUI;, его расширением должно быть `.cc`, иначе - `.cpp`. Файлы, в которых реализуются интерфейсы, должны называться так: `foo_impl`, если именем реализуемого интерфейса является Foo.

  Имена файлов &IDL; должны в достаточной мере описывать содержимое этих файлов и также не должны содержать заглавных букв. Не стоит называть файл по имени класса, так как информация о трейдере и типе в .mcopclass может перемешаться.