CodingStyle/C/C++/Rules: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(Новая страница: «= Общие правила Etersoft = == E1. Использование switch для enum == Обычно значения enum используется для…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 10: Строка 10:
См. также [[CodingStyle/C/C++/MartinRules#G23:_.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B9.D1.82.D0.B5_.D0.BF.D0.BE.D0.BB.D0.B8.D0.BC.D0.BE.D1.80.D1.84.D0.B8.D0.B7.D0.BC_.D0.B2.D0.BC.D0.B5.D1.81.D1.82.D0.BE_if.2FElse_.D0.B8.D0.BB.D0.B8_switch.2FCase|правило G23]] — возможно, вам и не нужен switch.
См. также [[CodingStyle/C/C++/MartinRules#G23:_.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B9.D1.82.D0.B5_.D0.BF.D0.BE.D0.BB.D0.B8.D0.BC.D0.BE.D1.80.D1.84.D0.B8.D0.B7.D0.BC_.D0.B2.D0.BC.D0.B5.D1.81.D1.82.D0.BE_if.2FElse_.D0.B8.D0.BB.D0.B8_switch.2FCase|правило G23]] — возможно, вам и не нужен switch.


== E2. Использование специальных типов ==
При разработке программы можно и нужно создавать специальные типы, и стараться избежать использования основных типов с помощью следования запрету на невыделенную в отдельную функцию конвертацию представления данных.


= Особенности для Qt =
= Особенности для Qt =
== Q1. Запись connect без макросов ==
== Q1. Запись connect без макросов ==
Есть предложение уйти от старого формата записи
По возможности надо уйти от старого формата записи
connect(&networkUserInfo, SIGNAL(error(ErrorAnswer)), this, SLOT(networkUserInfoError(ErrorAnswer)));
connect(&networkUserInfo, SIGNAL(error(ErrorAnswer)), this, SLOT(networkUserInfoError(ErrorAnswer)));
и использовать
и использовать
вызов connect с указателями на функции. Если такой вариант не будет приводить с сложным конструкциям.
вызов connect с указателями на функции. Конечно, если такой вариант не будет приводить к сложным конструкциям.
 
Дело в том, что это позволит осуществлять проверку соответствия функций сигнала и слота на этапе компиляции.
Дело в том, что это позволит осуществлять проверку соответствия функций сигнала и слота на этапе компиляции.




См. полный список: [[CodingStyle/C/C++/MartinRules]]
См. полный список: [[CodingStyle/C/C++/MartinRules]]
* [http://flibusta.lib/b/223917/read Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ. Скотт Мейерс]

Текущая версия на 21:00, 17 декабря 2015

Общие правила Etersoft

E1. Использование switch для enum

Обычно значения enum используется для разветвления алгоритма. Поскольку enum — численный тип, в таких случаях возможно и необходимо использовать switch, а не раскидистые if else. Это позволяет компилятору проверить, что все варианты enum обработаны. Конечно же, без особых оснований (и комментария о них) не следует дописывать default: в каждый switch.

См. также правило G23 — возможно, вам и не нужен switch.

E2. Использование специальных типов

При разработке программы можно и нужно создавать специальные типы, и стараться избежать использования основных типов с помощью следования запрету на невыделенную в отдельную функцию конвертацию представления данных.

Особенности для Qt

Q1. Запись connect без макросов

По возможности надо уйти от старого формата записи

connect(&networkUserInfo, SIGNAL(error(ErrorAnswer)), this, SLOT(networkUserInfoError(ErrorAnswer)));

и использовать вызов connect с указателями на функции. Конечно, если такой вариант не будет приводить к сложным конструкциям.

Дело в том, что это позволит осуществлять проверку соответствия функций сигнала и слота на этапе компиляции.


См. полный список: CodingStyle/C/C++/MartinRules