Qt Coding Style/ru: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
m (Исправлена опечатка)
 
(6 intermediate revisions by 4 users not shown)
Line 5: Line 5:
=Правила кодирования с использованием Qt=
=Правила кодирования с использованием Qt=


Ниже представлен обзор соглашений по написанию кода с использованием Qt. Эта информация была собрана здесь из разных источников: документации по Qt, тематических формуов, e-mail списков рассылки и опыта различных разработчиков.
Ниже представлен обзор соглашений по написанию кода с использованием Qt. Эта информация была собрана здесь из разных источников: документации по Qt, тематических форумов, e-mail списков рассылки и опыта различных разработчиков.


==Отступы==
==Отступы==


* Для обозначения отступа используйте 4 пробела подряд
* Для обозначения отступа используйте 4 пробела подряд
* Используйте проблелы, а не табуляцию!
* Используйте пробелы, а не табуляцию!


==Объявление переменных==
==Объявление переменных==


* Объявляйте по одной переменной в строке.
* Объявляйте по одной переменной в строке.
* Избегайте, если это возможно, коротких и запутанных названий переменных (Например: “a”, “rbarr”, “nughdeget”).
* Избегайте, если это возможно, коротких и запутанных названий переменных (Например: "a", "rbarr", "nughdeget").
* Односимвольные имена переменных подходят только для итераторов циклов, небольшого локального контекста и временных переменных. В остальных случаях имя переменной должно отражать ее назначение.
* Односимвольные имена переменных подходят только для итераторов циклов, небольшого локального контекста и временных переменных. В остальных случаях имя переменной должно отражать ее назначение.
* Заводите переменные только по мере необходимости.
* Заводите переменные только по мере необходимости.
Line 31: Line 31:
</code>
</code>


* Функции и переменные должны именоваться со строчной буквы. Каждое последуеще слово в имени переменной должно начинаться с прописной буквы.
* Функции и переменные должны именоваться со строчной буквы. Каждое последующие слово в имени переменной должно начинаться с прописной буквы.


* Избегайте аббревиатур
* Избегайте аббревиатур
Line 45: Line 45:
</code>
</code>


* Имена классов всегда начинаются с заглавной буквы. Public-классы начинаются с буквы ‘Q’ (QRgb). Public-функции должны начинаться с прописной буквы ‘q’ (qRgb).
* Имена классов всегда начинаются с заглавной буквы. Public-классы начинаются с буквы 'Q' (QRgb). Public-функции должны начинаться с прописной буквы 'q' (qRgb).
* Сокращения в верблюжем регистре. (e.g. QXmlStreamReader, not QXMLStreamReader).
* Сокращения в верблюжем регистре. (e.g. QXmlStreamReader, not QXMLStreamReader).


Line 64: Line 64:
</code>
</code>


* Всегда ставьте один пробел после *или &, если они стоят перед описанием типов. Но никогда не ставьте пробелы после ‘*или &и именем переменной.
* Всегда ставьте один пробел после '*' или '&', если они стоят перед описанием типов. Но никогда не ставьте пробелы между '*' или '&' и именем переменной.


<code>
<code>
Line 72: Line 72:
</code>
</code>


* Бинарные операции отделяются пробелами с 2-х строн.
* Бинарные операции отделяются пробелами с двух сторон.
* После преобразования типов не ставьте пробелов.
* После преобразования типов не ставьте пробелов.
* Избегайте проеобразования типов в стиле C.
* Избегайте преобразования типов в стиле C.


<code>
<code>
  // Правильно
  // Неправильно
  char* blockOfMemory = (char* ) malloc(data.size());
  char* blockOfMemory = (char* ) malloc(data.size());


  // Неправильно
  // Правильно
  char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));
  char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));
</code>
</code>
Line 86: Line 86:


* Не используйте несколько операторов на одной строке
* Не используйте несколько операторов на одной строке
* По возможности, используйте новую строку для тела оператора управления:
* По возможности, используйте новую строку для тела оператора ветвления:


<code>
<code>
  // Правильно
  // Неправильно
  if (foo) bar();
  if (foo) bar();


  // Неправильно
  // Правильно
  if (foo)
  if (foo)
     bar();
     bar();
Line 118: Line 118:


* Операторы case должны быть в одном столбце со switch
* Операторы case должны быть в одном столбце со switch
* Каждый оператор case должен иметь закрывающий break (или return) или комментарий, котрой предполагает намеренное отсутсвие break & return.
* Каждый оператор case должен иметь закрывающий break (или return) или комментарий, которой предполагает намеренное отсутствие break & return.


==Разрыв строк==
==Разрыв строк==
Line 126: Line 126:
* Запятые помещаются в конец разорванной линии; операторы помещаются в начало новой строки. В зависимости от используемой вами <span class="caps">IDE</span>, оператор на конце разорванной строки можно проглядеть.
* Запятые помещаются в конец разорванной линии; операторы помещаются в начало новой строки. В зависимости от используемой вами <span class="caps">IDE</span>, оператор на конце разорванной строки можно проглядеть.


==Наследование и ключево слово `virtual`==
==Наследование и ключове слово `virtual`==


* При переопредлении virtual-метода, ''ни за что'' не помещайте слово `virtual` в заголовочный файл.
* При переопределении virtual-метода, ''ни за что'' не помещайте слово `virtual` в заголовочный файл.


==Главное исключение==
==Главное исключение==

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.

Русский English Spanish 简体中文

Правила кодирования с использованием 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` в заголовочный файл.

Главное исключение

  • Не бойтесь нарушать описанные выше правила, если вам кажется, что они только запутают ваш код.

Categories: