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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Стиль синтиксиса QT  (Прочитано 12143 раз)
Alexandr Az
Гость
« : Август 01, 2007, 14:57 »

Кто нибудь подскажет как писать в стиле QT. Исследование исходников  ответа не дало, должны же быть у них хоть какие нибудь правила!
Записан
pakulo
Гость
« Ответ #1 : Август 01, 2007, 16:41 »

Странно, как исследование исходников ничего не дало Улыбающийся
Что конкретно тебя интересует?
Записан
SABROG
Гость
« Ответ #2 : Август 01, 2007, 16:43 »

Я так понимаю они используют K&R стиль (Kernighan and Ritchie), родителей языка Си, судя по расстановке скобок. Мне больше нравится BSD/Allman, в нем и пишу.
Записан
Alexandr Az
Гость
« Ответ #3 : Август 01, 2007, 17:03 »

Больше всего интересует правила задания имён для закрытые данные членов классов и их эквивалентов - функций членов (get, set)

(Коряво как то, говоря языком ООП - закрытых данных и методов соответсвующих им)

Опять же - только в контексте стиля QT
Записан
SABROG
Гость
« Ответ #4 : Август 01, 2007, 17:20 »

По-моему там все понятно с этим правилом, вместо get используется простое название переменной со скобками, например имя метода для получения значения переменной с именем variant - variant(); Для установки значения переменной так - setVariant();
Записан
pakulo
Гость
« Ответ #5 : Август 01, 2007, 19:36 »

Угу, как называется член класа так и звучит метод get.
Т.е. переменная член QString text; а методы тогда QString text() const; void setText(const QString &newText);
Вот только единственная проблема, что ты не можешь назвать переменнут просто text, я вот делаю с приставкой m, т.е. mText;
Они немного по-другому это делают, посмотри любой *.h *.cpp файлы и все думаю поймешь...
Записан
mindz_eye
Гость
« Ответ #6 : Август 01, 2007, 22:41 »

По-моему у них скорее ява-стиль. Методы с маленькой буквы, никаких _ в именах и т.п. И доксигеновские комментарии, кстати, тоже в ява-стиле =)
Записан
Sergeich
Гость
« Ответ #7 : Август 01, 2007, 23:51 »

Цитата: "pakulo"
Угу, как называется член класа так и звучит метод get.
Т.е. переменная член QString text; а методы тогда QString text() const; void setText(const QString &newText);
Вот только единственная проблема, что ты не можешь назвать переменнут просто text, я вот делаю с приставкой m, т.е. mText
Почему же нет? Запросто. Например:
Код:
class Node{
public:
    enum Type { RegExp, Expression, Term, Factor, Atom, Terminal };
    Node(Type type, const QString &str = "");
    ~Node();
    Type type;
    QString str;
    Node *parent;
    QList<Node *> children;
};

Node::Node(Type type, const QString &str)
{
    this->type = type;
    this->str = str;
    parent = 0;
}
C++ GUI Programming with Qt 4
By Jasmin Blanchette, Mark Summerfield
Chapter 10. Item View Classes, Implementing Custom Models
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Август 02, 2007, 00:17 »

2 Sergeich: это не моё высказывание, а pakulo

Цитировать

Угу, как называется член класа так и звучит метод get.
Т.е. переменная член QString text; а методы тогда QString text() const; void setText(const QString &newText);
Вот только единственная проблема, что ты не можешь назвать переменнут просто text, я вот делаю с приставкой m, т.е. mText


Улыбающийся

По теме, наверное pakulo имел ввиду такой вариант:

Код:
class SomeClass
{
public:
    SomeClass() {}

    QString text() const { return text; }
    void setText(const QString &str) { text = str; }

private:
    QString text;
};


Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Sergeich
Гость
« Ответ #9 : Август 02, 2007, 00:42 »

Цитата: "pastor"
2 Sergeich: это не моё высказывание, а pakulo
Пардон, попутал Улыбающийся

добавлено спустя 42 секунды:

 Исправляюсь
Записан
vaprele07
Гость
« Ответ #10 : Август 02, 2007, 03:12 »

Цитировать
Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку.

а еще они любят шифроваться через: PrivateSomeClass
Записан
pakulo
Гость
« Ответ #11 : Август 02, 2007, 08:35 »

Цитата: "pastor"

Код:
class SomeClass
{
public:
    SomeClass() {}

    QString text() const { return text; }
    void setText(const QString &str) { text = str; }

private:
    QString text;
};


Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку.

Да, именно оно Улыбающийся

Цитата: "vaprele07"
Цитировать
Т.е. когда метод и член класса имеют одинаковые имена. В таком случае компилятор выдаст ошибку.

а еще они любят шифроваться через: PrivateSomeClass

Вот для того, что бы метод и член класса имели одинаковые имени, они так делают... Но меня что-то это напрягает, особенно этот private.
Посему я просто делаю приставку m.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #12 : Август 02, 2007, 09:21 »

Цитата: "vaprele07"

а еще они любят шифроваться через: PrivateSomeClass


Это одна из причин тому:

http://qt.osdn.org.ua/data-sharing.html
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pakulo
Гость
« Ответ #13 : Август 02, 2007, 10:40 »

Цитата: "pastor"
Цитата: "vaprele07"

а еще они любят шифроваться через: PrivateSomeClass


Это одна из причин тому:

http://qt.osdn.org.ua/data-sharing.html

Спасибо за ссылку!
Записан
SABROG
Гость
« Ответ #14 : Август 02, 2007, 10:41 »

Я не знаю как в MSVC, но GCC (mingw) поддерживает такие конструкции:

Код:

qDebug() << &(MyClass::parent) << (unsigned int)MyClass::parent << &parent << (unsigned int)parent;


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

А еще эта конструкция мне понравилась:

Код:

public:
    MyClass(QWidget * = 0);


Т.е. инициализация безымянного параметра. А зачем писать имя параметра в определении ? Достаточно в реализации ИМХО.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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