|
|
|
|
<!-- <?xml version="1.0" ?>
|
|
|
|
|
<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
|
|
|
|
|
To validate or process this file as a standalone document, uncomment
|
|
|
|
|
this prolog. Be sure to comment it out again when you are done -->
|
|
|
|
|
|
|
|
|
|
<chapter id="contributing">
|
|
|
|
|
<title
|
|
|
|
|
>Сотрудничество с &arts;</title>
|
|
|
|
|
|
|
|
|
|
<sect1 id="how-to-help">
|
|
|
|
|
<title
|
|
|
|
|
>Как вы можете помочь</title>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Помощь разработчикам заключается в адаптации существующих мультимедиа-приложений для работы с &arts;, создании новых приложений и расширении возможностей &arts;. Однако вам совсем необязательно быть разработчиком, чтобы помочь &arts;. Нам нужна помощь в тестировании (и написании отчётов об ошибках), переводе текстов и документации на различные языки, создании дизайна (особенно для модулей <application
|
|
|
|
|
>artsbuilder</application
|
|
|
|
|
>), музыканты могут написать примеры для модулей &arts;, а писатели - документацию. </para>
|
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
<sect1 id="mailing-lists">
|
|
|
|
|
<title
|
|
|
|
|
>Списки рассылок</title>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Большинство дискуссий разработчиков &arts; ведутся в двух рассылках. В этой обсуждаются новые функции, делятся мыслями и просят о помощи, если возникли проблемы. </para>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Рассылка <quote
|
|
|
|
|
>&kde; Multimedia</quote
|
|
|
|
|
> предназначена для обсуждения общих мультимедиа-приложений для &kde;, в том числе и &arts;, наряду с &noatun; и &aktion;. Вы можете подписаться на нее с сайта <ulink url="http://www.kde.org/mailinglists.html"
|
|
|
|
|
> http://www.kde.org/mailinglists.html</ulink
|
|
|
|
|
> или послать сообщение с темой <userinput
|
|
|
|
|
>subscribe <replaceable
|
|
|
|
|
>ваш-email-адрес</replaceable
|
|
|
|
|
></userinput
|
|
|
|
|
> на <email
|
|
|
|
|
>kde-multimedia-request@kde.org</email
|
|
|
|
|
>. Архив рассылки можно найти по адресу <ulink url="http://lists.kde.org"
|
|
|
|
|
> http://lists.kde.org</ulink
|
|
|
|
|
>. </para>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Рассылка для обсуждения вопросов об &arts;, в том числе и об использовании &arts; не в &kde;. Чтобы подписаться, пошлите сообщение с текстом<userinput
|
|
|
|
|
>subscribe <replaceable
|
|
|
|
|
>ваш-email-адрес</replaceable
|
|
|
|
|
></userinput
|
|
|
|
|
> на <email
|
|
|
|
|
>arts-request@space.twc.de</email
|
|
|
|
|
>. Архив рассылки можно найти по адресу <ulink url="http://space.twc.de/~stefan/arts-archive"
|
|
|
|
|
> http://space.twc.de/~stefan/arts-archive</ulink
|
|
|
|
|
>. </para>
|
|
|
|
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
<sect1 id="coding-standards">
|
|
|
|
|
<title
|
|
|
|
|
>Стандарты кодирования</title>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Чтобы можно было без лишних проблем читать разные исходные файлы, в них нужно использовать один стиль написания кода. Если вы просто пишете модуль, пожалуйста, постарайтесь писать код соответственно (или отформатируйте его), тогда разные люди смогут его дополнять или копировать его части. </para>
|
|
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Именование функций-членов</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>Стиль &Qt;/&Java;. То есть каждое новое слово должно начинаться с заглавной буквы, но первое слово начинается со строчной, подчеркивания между словами не используются. </para>
|
|
|
|
|
<para
|
|
|
|
|
>Это значит, к примеру:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting
|
|
|
|
|
>createStructureDesc()
|
|
|
|
|
updateWidget();
|
|
|
|
|
start(); </programlisting>
|
|
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Члены класса</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>Имена членов классов пишутся со строчной буквы: menubar, button. </para>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Если необходима функция доступа, лучше всего её писать в соответствии с &MCOP;, т. е. если есть функция-член <function
|
|
|
|
|
>foo</function
|
|
|
|
|
> типа long, которая не должна быть всегда видимой, вы пишете: </para>
|
|
|
|
|
|
|
|
|
|
<programlisting
|
|
|
|
|
>foo(long new_value);
|
|
|
|
|
long foo(); </programlisting>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>функции получения и задания какого-либо значения. В этом случае, значение <function
|
|
|
|
|
>foo</function
|
|
|
|
|
> должно храниться в <returnvalue
|
|
|
|
|
>_foo</returnvalue
|
|
|
|
|
>. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Имена классов</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>В именах классов все слова должны начинаться с заглавной буквы, например, <classname
|
|
|
|
|
>ModuleView</classname
|
|
|
|
|
>, <classname
|
|
|
|
|
>SynthModule</classname
|
|
|
|
|
>. Все классы должны принадлежать библиотекам и использовать пространство имён &arts;, к примеру, <classname
|
|
|
|
|
>Arts::Soundserver</classname
|
|
|
|
|
>. </para>
|
|
|
|
|
<para
|
|
|
|
|
>Классы &MCOP; должны называться так:<classname
|
|
|
|
|
>Class_impl</classname
|
|
|
|
|
>, например, <classname
|
|
|
|
|
>SoundServer_impl</classname
|
|
|
|
|
>. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Параметры</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>Параметры всегда пишутся строчными буквами. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Локальные переменные</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>Локальные переменные всегда пишутся строчными буквами и могут называться <varname
|
|
|
|
|
>i</varname
|
|
|
|
|
>, <varname
|
|
|
|
|
>p</varname
|
|
|
|
|
>, <varname
|
|
|
|
|
>x</varname
|
|
|
|
|
> и т. д., если это не делает код трудночитаемым. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Размер табуляции (отступы)</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>Один уровень отступа равен 4 пробелам. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Пробелы в выражениях</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>Обычно вам не нужно использовать пробелы в выражениях. Хотя вы можете их вставлять между операторами и операндами. Однако, если вы набрали пробел перед оператором (например, +), нужно поставить его и после оператора. Единственное исключение - выражения с ",", в которых пробел нужно ставить после "," или вообще его опустить. </para>
|
|
|
|
|
<para
|
|
|
|
|
>Вот примеры правильного использования пробелов: </para>
|
|
|
|
|
<programlisting
|
|
|
|
|
>{
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
</programlisting>
|
|
|
|
|
<para
|
|
|
|
|
>А вот пример того, как <emphasis
|
|
|
|
|
>не нужно</emphasis
|
|
|
|
|
> ставить пробелы. В вызовах функций, после if, while, for, switch и т. д. пробелы не пишутся. </para>
|
|
|
|
|
<programlisting
|
|
|
|
|
>{
|
|
|
|
|
// ПЛОХО: в списке пробел ставится только после ","
|
|
|
|
|
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 ();
|
|
|
|
|
}
|
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term
|
|
|
|
|
>Имена сходных файлов</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para
|
|
|
|
|
>В названиях исходных файлов не должно быть заглавных букв. Они должны называться по имени реализуемого класса, если в них описывается только он один. Если файл содержит код, не зависящий от &Qt;/&GUI;, его расширением должно быть <literal role="extension"
|
|
|
|
|
>.cc</literal
|
|
|
|
|
>, иначе - <literal role="extension"
|
|
|
|
|
>.cpp</literal
|
|
|
|
|
>. Файлы, в которых реализуются интерфейсы, должны называться так: <filename
|
|
|
|
|
><replaceable
|
|
|
|
|
>foo</replaceable
|
|
|
|
|
>_impl</filename
|
|
|
|
|
>, если именем реализуемого интерфейса является Foo. </para>
|
|
|
|
|
|
|
|
|
|
<para
|
|
|
|
|
>Имена файлов &IDL; должны в достаточной мере описывать содержимое этих файлов и также не должны содержать заглавных букв. Не стоит называть файл по имени класса, так как информация о трейдере и типе в .mcopclass может перемешаться. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
</variablelist>
|
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
</chapter>
|