Russian Qt Forum
Май 21, 2024, 07:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Соглашения по стилю написания кода в Qt  (Прочитано 21731 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Январь 26, 2010, 19:10 »

Доброго всем времени суток.

Недавно пересмотрел вот это: http://translated.by/you/qt-coding-conventions/into-ru/

И в глаза мне бросилось:
Цитировать
...
При включении заголовочных файлов Qt, всегда используйте следующую форму записи: \#include <QtCore/qwhatever.h>. Префикс библиотеки необходим для фреймворков Mac OS X, а также очень целесообразен для не qmake проектов.
...

Но просмотрев исходники примеров Qt4 и т.п., я вижу что там встречаются такие варианты записи (к примеру):
1.
Код:
...
#include <QString>
#include <QStringList>
...
2.
Код:
...
#include "QtCore/qstring.h"
#include "QtCore/qstringlist.h"
...
3.
Код:
...
#include "QtCore/QString"
#include "QtCore/QStringList"
...


так вот вопрос: все-таки как правильнее подключать Qt-шные классы к проекту..? (разумеется с учетом того, что гипотетически буду использовать CMake)
есть ли все-таки разница?

Записан

ArchLinux x86_64 / Win10 64 bit
niXman
Гость
« Ответ #1 : Январь 26, 2010, 19:19 »

наверное это потому что то всего лишь примеры.

лично я всегда использую одну из:
Код
C++ (Qt)
#include "QtCore/QString"
#include <QtCore/QString>
 
и обязательно соблюдение регистра.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Январь 26, 2010, 19:29 »

фигня всё про префикс на маке, и без него работает. Но я все равно пишу их, с соблюдением регистра (а это уже для линукса важно).
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Январь 26, 2010, 19:36 »

А я всегда использую то как в описании класса в асистенте написано, т.е.:
#include <QString>
Записан

Юра.
SABROG
Гость
« Ответ #4 : Январь 26, 2010, 21:07 »

А я всегда использую префикс. Даже QtCreator генерит код без префикса пока в опциях не выбрать иначе. На мой взгляд это более читаемо и понятно. Сразу видно какой класс к какому модулю относится. Чем-то похоже на стиль Java:

Код
Java
import javax.swing.*;   More common GUI elements. Note "javax".
import java.util.*; Data structures (Collections), time, Scanner, etc classes.
import java.io.*; Input-output classes.
 

Код
C++ (Qt)
#include <QtCore/...>
#inlcude <QtGui/...>
#include <QtXml/...>
#include <QtSql/...>
 

А теперь посмотрите на эти классы и скажите можно ли догадаться к какому модулю они относятся:

Код
C++ (Qt)
#include <QAbstractEventDispatcher>
#include <QAbstractMessageHandler>
#include <QAuthenticator>
#include <QErrorMessage>
#include <QLine>
#include <QMatrix4x4>
#include <QMargins>
#include <QPoint>
#include <QPolygon>
#include <QPropertyAnimation>
#include <QQuaternion>
#include <QSignalSpy>
#include <QSocketNotifier>
#include <QSourceLocation>
#include <QUrl>
#include <QUrlInfo>
 

Если кому-то удастся не подглядывая соотнести каждый класс с конкретным модулем, то я вас поздравляю - вы можете писать код, который смогут прочитать и понять такие же по уровню профессионалы как вы, но остальная часть программистов будет вас доставать на форуме создавая темы типа "почему после копипастинга вашего кода я получаю ошибку undefined reference to"
Записан
DS_tm
Гость
« Ответ #5 : Январь 26, 2010, 21:27 »

Полностью согласен. Читабильность - важная штука, особенно если работаешь в команде.
Вообще статья хорошая, только форматирование слишком жестокое, порой не понимаешь где закончилась одна мысль и началась другая.
Хотя есть и спорные моменты, особенно меня удивила фраза по поводу исключений. Я сам лично старательно их избегаю, но большое количество действительно хороших специалистов используют их постоянно. А Вы что думаете по поводу исключений?
Записан
BRE
Гость
« Ответ #6 : Январь 26, 2010, 21:32 »

А Вы что думаете по поводу исключений?
Не так давно немного поговорили на эту тему.  Улыбающийся
http://www.forum.crossplatform.ru/index.php?showtopic=3483
Записан
SABROG
Гость
« Ответ #7 : Январь 26, 2010, 21:32 »

А Вы что думаете по поводу исключений?

Это соглашение относится к редактированию исходников Qt, поэтому не всё, что там написано нужно переносить на свои проекты. Если гуру в исключениях и знаешь их вдоль и поперек вместе с подводными камнями - используй на здоровье, иначе изучать до победного или обходить их стороной. Вот в FAQ'e по C++ про исключения есть: http://www.parashift.com/c++-faq-lite/exceptions.html
Записан
DS_tm
Гость
« Ответ #8 : Январь 26, 2010, 21:46 »

Спасб за инфу. В свое время читал Мейерса и Александреску, они часто вспоминают про исключения и их использование. Кстати надо бы перечитать их. Кто не читал, настоятельно советую.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Январь 26, 2010, 22:15 »

Единственное что я вижу, для чего нужен префикс, это для того чтобы было видно из какого модуля класс(типа самодокументация кода).
Записан
niXman
Гость
« Ответ #10 : Январь 27, 2010, 00:07 »

Цитировать
А Вы что думаете по поводу исключений?
я думаю что без них писать на с++ невозможно!

тут развернуто: http://forum.vingrad.ru/forum/topic-281797.html
очень рекомендую внимательно прочесть.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Январь 27, 2010, 02:05 »

тут развернуто: http://forum.vingrad.ru/forum/topic-281797.html
очень рекомендую внимательно прочесть.

там флейм  Строит глазки

Цитировать
А Вы что думаете по поводу исключений?
я думаю что без них писать на с++ невозможно!

Qt написана без исключений, KDE написано на 99.9% без исключений.
Записан
niXman
Гость
« Ответ #12 : Январь 27, 2010, 03:04 »

Цитировать
Qt написана без исключений, KDE написано на 99.9% без исключений.
невнимательно читали)
http://forum.vingrad.ru/index.php?showtopic=281797&view=findpost&p=2032673
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Январь 27, 2010, 03:19 »

невнимательно читали)

Это обработка исключений. Qt не генерирует исключения. Ненужно путать
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
crackedmind
Гость
« Ответ #14 : Январь 27, 2010, 04:31 »

pastor
В недрах QtXmlPatterns генерируются и обрабатываются исключения Улыбающийся Хотя наружу конечно ничего не торчит Улыбающийся

А если по теме то... Использую precompiled headers куда подключаю хедеры библиотек и не парюсь Веселый
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.137 секунд. Запросов: 22.