Название: Стиль синтиксиса QT Отправлено: Alexandr Az от Август 01, 2007, 14:57 Кто нибудь подскажет как писать в стиле QT. Исследование исходников ответа не дало, должны же быть у них хоть какие нибудь правила!
Название: Стиль синтиксиса QT Отправлено: pakulo от Август 01, 2007, 16:41 Странно, как исследование исходников ничего не дало :)
Что конкретно тебя интересует? Название: Стиль синтиксиса QT Отправлено: SABROG от Август 01, 2007, 16:43 Я так понимаю они используют K&R стиль (Kernighan and Ritchie), родителей языка Си, судя по расстановке скобок. Мне больше нравится BSD/Allman, в нем и пишу.
Название: Стиль синтиксиса QT Отправлено: Alexandr Az от Август 01, 2007, 17:03 Больше всего интересует правила задания имён для закрытые данные членов классов и их эквивалентов - функций членов (get, set)
(Коряво как то, говоря языком ООП - закрытых данных и методов соответсвующих им) Опять же - только в контексте стиля QT Название: Стиль синтиксиса QT Отправлено: SABROG от Август 01, 2007, 17:20 По-моему там все понятно с этим правилом, вместо get используется простое название переменной со скобками, например имя метода для получения значения переменной с именем variant - variant(); Для установки значения переменной так - setVariant();
Название: Стиль синтиксиса QT Отправлено: pakulo от Август 01, 2007, 19:36 Угу, как называется член класа так и звучит метод get.
Т.е. переменная член QString text; а методы тогда QString text() const; void setText(const QString &newText); Вот только единственная проблема, что ты не можешь назвать переменнут просто text, я вот делаю с приставкой m, т.е. mText; Они немного по-другому это делают, посмотри любой *.h *.cpp файлы и все думаю поймешь... Название: Стиль синтиксиса QT Отправлено: mindz_eye от Август 01, 2007, 22:41 По-моему у них скорее ява-стиль. Методы с маленькой буквы, никаких _ в именах и т.п. И доксигеновские комментарии, кстати, тоже в ява-стиле =)
Название: Стиль синтиксиса QT Отправлено: Sergeich от Август 01, 2007, 23:51 Цитата: "pakulo" Угу, как называется член класа так и звучит метод get. Почему же нет? Запросто. Например:Т.е. переменная член QString text; а методы тогда QString text() const; void setText(const QString &newText); Вот только единственная проблема, что ты не можешь назвать переменнут просто text, я вот делаю с приставкой m, т.е. mText Код: class Node{ By Jasmin Blanchette, Mark Summerfield Chapter 10. Item View Classes, Implementing Custom Models Название: Стиль синтиксиса QT Отправлено: pastor от Август 02, 2007, 00:17 2 Sergeich: это не моё высказывание, а pakulo
Цитировать Угу, как называется член класа так и звучит метод get. Т.е. переменная член QString text; а методы тогда QString text() const; void setText(const QString &newText); Вот только единственная проблема, что ты не можешь назвать переменнут просто text, я вот делаю с приставкой m, т.е. mText :) По теме, наверное pakulo имел ввиду такой вариант: Код: class SomeClass Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку. Название: Стиль синтиксиса QT Отправлено: Sergeich от Август 02, 2007, 00:42 Цитата: "pastor" 2 Sergeich: это не моё высказывание, а pakulo Пардон, попутал :) добавлено спустя 42 секунды: Исправляюсь Название: Стиль синтиксиса QT Отправлено: vaprele07 от Август 02, 2007, 03:12 Цитировать Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку. а еще они любят шифроваться через: PrivateSomeClass Название: Стиль синтиксиса QT Отправлено: pakulo от Август 02, 2007, 08:35 Цитата: "pastor" Код: class SomeClass Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку. Да, именно оно :) Цитата: "vaprele07" Цитировать Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку. а еще они любят шифроваться через: PrivateSomeClass Вот для того, что бы метод и член класса имели одинаковые имени, они так делают... Но меня что-то это напрягает, особенно этот private. Посему я просто делаю приставку m. Название: Стиль синтиксиса QT Отправлено: pastor от Август 02, 2007, 09:21 Цитата: "vaprele07" а еще они любят шифроваться через: PrivateSomeClass Это одна из причин тому: http://qt.osdn.org.ua/data-sharing.html Название: Стиль синтиксиса QT Отправлено: pakulo от Август 02, 2007, 10:40 Цитата: "pastor" Цитата: "vaprele07" а еще они любят шифроваться через: PrivateSomeClass Это одна из причин тому: http://qt.osdn.org.ua/data-sharing.html Спасибо за ссылку! Название: Стиль синтиксиса QT Отправлено: SABROG от Август 02, 2007, 10:41 Я не знаю как в MSVC, но GCC (mingw) поддерживает такие конструкции:
Код:
Т.е. указав область видимости члена класса можно передать данные без использования указателя this, напрямую через ссылку. А еще эта конструкция мне понравилась: Код:
Т.е. инициализация безымянного параметра. А зачем писать имя параметра в определении ? Достаточно в реализации ИМХО. Название: Стиль синтиксиса QT Отправлено: Alexandr Az от Август 02, 2007, 12:56 Вообщем то так и не понятно осталось.
Вопрос возник не из праздного любопытства, а из за того, что начал путаться именно с полями (членами класса). А как известно, одно из правил написания - хорошо читаемый код, хотя бы для себя. Первый попавшийся пример - QSQLField и член в самом классе (хехе), а не в приватном. Код:
Имя закрытых данных - чисто интуитивное сокращение. Так во всём куте - на голой интуиции. Я тоже так начал, но видно моя интуиция меня подвела.. Предложеный вариант mValue не плох, соответствует общему синтаксису, но по логике то должно быть mvalue ибо всё таки мы тип обозначаем с большОй буквы, а m - символ "для нас" За неимением лучших идей буду все таки использовать данный вариант... Название: Стиль синтиксиса QT Отправлено: pakulo от Август 02, 2007, 13:21 Я выбрал вариант mValue и вполне доволен... никакой путаницы, не надо думать в приват разместить или нет...
Название: Стиль синтиксиса QT Отправлено: vaprele07 от Август 02, 2007, 14:35 Alexandr Az,
Код:
это подставляемая функция :) аналогично макросам, так-же они и со статиками поступают. И вообще при таком раскладе, когда функция реализуется в самом классе, а класс реализуется в заголовочном файле, то во все объектные файлы будет скинута копия одного и того же кода. Та же схема с объявленными переменными. Еще одно, почему используется PrivateSomeClass, лучше иметь указатель на структуру, чем всю структуру целиком. Аналогично с приватными не виртуальными функциями (втбл) их то же нужно прятать. Ну и изменение заголовочных файлов, ведет к перекомпиляции всех объектных файлов, где они используются. Название: Стиль синтиксиса QT Отправлено: pastor от Август 02, 2007, 15:38 Цитата: "pakulo" Я выбрал вариант mValue и вполне доволен... Я использую вариант m_value Название: Стиль синтиксиса QT Отправлено: SABROG от Август 02, 2007, 15:44 Я так вообще привык находить синонимы для переменных, например parent=owner, widget=window, text=string, item=element...
Название: Стиль синтиксиса QT Отправлено: Alexandr Az от Август 02, 2007, 16:04 Цитировать Я использую вариант m_value Та я тоже его использовал. Но зоопарк получился в коде. Никакого эстетического удовольствия. если бы везде было set_value() то может быть красивше было. И с синонимами тоже приколы ещё те бывают! Название: Стиль синтиксиса QT Отправлено: SABROG от Август 02, 2007, 16:11 Цитата: "Alexandr Az" И с синонимами тоже приколы ещё те бывают! Они начинаются когда пытаешься вспомнить какой из синонимов является членом класса :) |