CodingStyle/C/C++/Rules: различия между версиями
(Новая страница: «= Общие правила 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