Qt Coding Style/ru: Difference between revisions
Jump to navigation
Jump to search
AutoSpider (talk | contribs) (Add "cleanup" tag) |
m (Исправлена опечатка) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{Cleanup | reason=Auto-imported from ExpressionEngine.}} | {{Cleanup | reason=Auto-imported from ExpressionEngine.}} | ||
'''Русский''' [[Qt Coding Style|English]] [[Qt Coding Style Spanish|Spanish]] [[Qt-Coding-Style-SimplifiedChinese|简体中文]] | |||
=Правила кодирования с использованием Qt= | |||
Ниже представлен обзор соглашений по написанию кода с использованием Qt. Эта информация была собрана здесь из разных источников: документации по Qt, тематических форумов, e-mail списков рассылки и опыта различных разработчиков. | |||
==Отступы== | |||
* Для обозначения отступа используйте 4 пробела подряд | |||
* Используйте пробелы, а не табуляцию! | |||
==Объявление переменных== | |||
* Объявляйте по одной переменной в строке. | |||
* Избегайте, если это возможно, коротких и запутанных названий переменных (Например: "a", "rbarr", "nughdeget"). | |||
* Односимвольные имена переменных подходят только для итераторов циклов, небольшого локального контекста и временных переменных. В остальных случаях имя переменной должно отражать ее назначение. | |||
* Заводите переменные только по мере необходимости. | |||
<code> | |||
// Неправильно | |||
int a, b; | |||
char *c, *d; | |||
// Правильно | |||
int height; | |||
int width; | |||
char *nameOfThis; | |||
char *nameOfThat; | |||
</code> | |||
* Функции и переменные должны именоваться со строчной буквы. Каждое последующие слово в имени переменной должно начинаться с прописной буквы. | |||
* Избегайте аббревиатур | |||
<code> | |||
// Неправильно | |||
short Cntr; | |||
char ITEM_DELIM = ' '; | |||
// Правильно | |||
short counter; | |||
char itemDelimiter = ' '; | |||
</code> | |||
* Имена классов всегда начинаются с заглавной буквы. Public-классы начинаются с буквы 'Q' (QRgb). Public-функции должны начинаться с прописной буквы 'q' (qRgb). | |||
* Сокращения в верблюжем регистре. (e.g. QXmlStreamReader, not QXMLStreamReader). | |||
==Пробелы== | |||
* Используйте пустые строки для логической группировки операторов, где это возможно. | |||
* Всегда используйте одну пустую строку в качестве разделителя | |||
* Всегда используйте один пробел перед фигурной скобкой | |||
<code> | |||
// Неправильно | |||
if(foo){ | |||
} | |||
// Правильно | |||
if (foo) { | |||
} | |||
</code> | |||
* Всегда ставьте один пробел после '*' или '&', если они стоят перед описанием типов. Но никогда не ставьте пробелы между '*' или '&' и именем переменной. | |||
<code> | |||
char *x; | |||
const QString &myString; | |||
const char * const y = "hello"; | |||
</code> | |||
* Бинарные операции отделяются пробелами с двух сторон. | |||
* После преобразования типов не ставьте пробелов. | |||
* Избегайте преобразования типов в стиле C. | |||
<code> | |||
// Неправильно | |||
char* blockOfMemory = (char* ) malloc(data.size()); | |||
// Правильно | |||
char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size())); | |||
</code> | |||
* Не используйте несколько операторов на одной строке | |||
* По возможности, используйте новую строку для тела оператора ветвления: | |||
<code> | |||
// Неправильно | |||
if (foo) bar(); | |||
// Правильно | |||
if (foo) | |||
bar(); | |||
</code> | |||
==Фигурные скобки== | |||
* Возьмите за основу расстановку открывающих фигурных скобок на одной строке с выражением, которому они предшествуют | |||
* Исключение: Тело функции и описание класса всегда открывается фигурной скобкой, стоящей на новой строке | |||
* Используйте фигурные скобки в условиях, если тело условия в размере превышает одну линию, или тело условия достаточное сложное и выделение скобками действительно необходимо | |||
* Исключение 1: Используйте скобки, если родительское выражение состоит из нескольких строк / оберток | |||
* Исключение 2: Используйте фигурные скобки, когда тела ветвлений if-then-else занимают несколько строчек | |||
* Используйте фигурные скобки для обозначения пустого тела условия | |||
==Круглые скобки== | |||
* Используйте круглые скобки для группировки выражений: | |||
==Использование конструкции switch== | |||
* Операторы case должны быть в одном столбце со switch | |||
* Каждый оператор case должен иметь закрывающий break (или return) или комментарий, которой предполагает намеренное отсутствие break & return. | |||
==Разрыв строк== | |||
* Длина строки кода не должна превышать 100 символов. Если надо – используйте разрыв строки. | |||
* Запятые помещаются в конец разорванной линии; операторы помещаются в начало новой строки. В зависимости от используемой вами <span class="caps">IDE</span>, оператор на конце разорванной строки можно проглядеть. | |||
==Наследование и ключове слово `virtual`== | |||
* При переопределении virtual-метода, ''ни за что'' не помещайте слово `virtual` в заголовочный файл. | |||
==Главное исключение== | |||
* Не бойтесь нарушать описанные выше правила, если вам кажется, что они только запутают ваш код. | |||
===Categories:=== | |||
* [[:Category:Developing with Qt|Developing_with_Qt]] | |||
* [[:Category:Qt пÑогÑаммиÑование|Qt_программирование]] |
Latest revision as of 10:48, 17 October 2017
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
Правила кодирования с использованием Qt
Ниже представлен обзор соглашений по написанию кода с использованием Qt. Эта информация была собрана здесь из разных источников: документации по Qt, тематических форумов, e-mail списков рассылки и опыта различных разработчиков.
Отступы
- Для обозначения отступа используйте 4 пробела подряд
- Используйте пробелы, а не табуляцию!
Объявление переменных
- Объявляйте по одной переменной в строке.
- Избегайте, если это возможно, коротких и запутанных названий переменных (Например: "a", "rbarr", "nughdeget").
- Односимвольные имена переменных подходят только для итераторов циклов, небольшого локального контекста и временных переменных. В остальных случаях имя переменной должно отражать ее назначение.
- Заводите переменные только по мере необходимости.
// Неправильно
int a, b;
char *c, *d;
// Правильно
int height;
int width;
char *nameOfThis;
char *nameOfThat;
- Функции и переменные должны именоваться со строчной буквы. Каждое последующие слово в имени переменной должно начинаться с прописной буквы.
- Избегайте аббревиатур
// Неправильно
short Cntr;
char ITEM_DELIM = ' ';
// Правильно
short counter;
char itemDelimiter = ' ';
- Имена классов всегда начинаются с заглавной буквы. Public-классы начинаются с буквы 'Q' (QRgb). Public-функции должны начинаться с прописной буквы 'q' (qRgb).
- Сокращения в верблюжем регистре. (e.g. QXmlStreamReader, not QXMLStreamReader).
Пробелы
- Используйте пустые строки для логической группировки операторов, где это возможно.
- Всегда используйте одну пустую строку в качестве разделителя
- Всегда используйте один пробел перед фигурной скобкой
// Неправильно
if(foo){
}
// Правильно
if (foo) {
}
- Всегда ставьте один пробел после '*' или '&', если они стоят перед описанием типов. Но никогда не ставьте пробелы между '*' или '&' и именем переменной.
char *x;
const QString &myString;
const char * const y = "hello";
- Бинарные операции отделяются пробелами с двух сторон.
- После преобразования типов не ставьте пробелов.
- Избегайте преобразования типов в стиле C.
// Неправильно
char* blockOfMemory = (char* ) malloc(data.size());
// Правильно
char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));
- Не используйте несколько операторов на одной строке
- По возможности, используйте новую строку для тела оператора ветвления:
// Неправильно
if (foo) bar();
// Правильно
if (foo)
bar();
Фигурные скобки
- Возьмите за основу расстановку открывающих фигурных скобок на одной строке с выражением, которому они предшествуют
- Исключение: Тело функции и описание класса всегда открывается фигурной скобкой, стоящей на новой строке
- Используйте фигурные скобки в условиях, если тело условия в размере превышает одну линию, или тело условия достаточное сложное и выделение скобками действительно необходимо
- Исключение 1: Используйте скобки, если родительское выражение состоит из нескольких строк / оберток
- Исключение 2: Используйте фигурные скобки, когда тела ветвлений if-then-else занимают несколько строчек
- Используйте фигурные скобки для обозначения пустого тела условия
Круглые скобки
- Используйте круглые скобки для группировки выражений:
Использование конструкции switch
- Операторы case должны быть в одном столбце со switch
- Каждый оператор case должен иметь закрывающий break (или return) или комментарий, которой предполагает намеренное отсутствие break & return.
Разрыв строк
- Длина строки кода не должна превышать 100 символов. Если надо – используйте разрыв строки.
- Запятые помещаются в конец разорванной линии; операторы помещаются в начало новой строки. В зависимости от используемой вами IDE, оператор на конце разорванной строки можно проглядеть.
Наследование и ключове слово `virtual`
- При переопределении virtual-метода, ни за что не помещайте слово `virtual` в заголовочный файл.
Главное исключение
- Не бойтесь нарушать описанные выше правила, если вам кажется, что они только запутают ваш код.