LINUX.ORG.RU

[c++] Префиксы у классов, переменных и т.п.

 


0

0

Иногда вижу префиксы m у перменных (mSomeVar) и I (большая i) у классов (ISomeClass). Насколько я понимаю, второе говорит о том, что класс является интерфейсом. А что есть m?

Какие ещё бывают префиксы?

Если у меня проект графического редактора на Qt, у которого есть поле, область инструментов, линейки масштаба, палитра и т.п., следует ли давать всем этим виджетам какой-то префикс?

Спасибо.

★★★★★
Ответ на: комментарий от Obey-Kun

> Названия-то говорящие.

void startAutoScroll();

void stopAutoScroll();



и что эти методы делают? выполняют реальный скролл, если да - то куда? или это просто выставляется флаг? если да - то почему не написать просто setAutoScroll?

/* Функции, относящиеся в автоматической прокрутке */


абсолютно бесполезный комментарий

lester ★★★★
()
Ответ на: комментарий от lester

вобщем учись писать комментарии нормальные - если это метод «startAutoScroll», то ты должен написать, что будет после его вызова - хотя бы когда именно будет происходить тот самый авто-скроллинг

lester ★★★★
()
Ответ на: комментарий от lester

Автоскролл — это скролл, который скроллит по направлению от начала скролла к точке назначения. startAutoScroll() его стартует, stopAutoScroll() останавливает.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

где указывается точка назначения? в комментарии к startAutoScroll должно быть описано это

lester ★★★★
()
Ответ на: комментарий от lester

>> /* Функции, относящиеся в автоматической прокрутке */

абсолютно бесполезный комментарий

особенно учитывая, что он на РЯ

korvin_ ★★★★★
()
Ответ на: комментарий от Obey-Kun

который скроллит по направлению от начала скролла к точке назначения. startAutoScroll() его стартует, stopAutoScroll() останавливает.

1) не хватает описания к каким элементам он может применяться (нужен основной таргет и, желательно, требования к возможным кандидатам)

2) не определено что такое начало скролла

3) не определена точка назначения

4) не описан порядок смены состояний

5) не описаны работа автоскроллера в случае если состояние таргета изменилось

кстати, хороший принцип - давать определение термину как только он встретился, так что встретилась точка начала - опиши что это такое, дай определение

главное, пиши каменты подробно, даже если они тебе кажутся примитивными и очевидными (уверяю, что даже через 2-3 месяца они тебе не будут казаться такими очевидными) и, в первую очередь, описывай логику работы, а не конструкции языка

shty ★★★★★
()
Ответ на: комментарий от korvin_

> особенно учитывая, что он на РЯ

проект только для русских. как только кому-нибудь англоговорящему потребуется с ним работать, комментарии будут переведены.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

> особенно учитывая, что он на РЯ

проект только для русских. как только кому-нибудь англоговорящему потребуется с ним работать, комментарии будут переведены.

это миф :) представь твой проект разросся и, ВНЕЗАПНО, стал интересен буржуйскому заказчику... на 2 месяца (оптимизм) засядешь переводчиком работать, да?

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

shty ★★★★★
()
Ответ на: комментарий от shty

> на 2 месяца (оптимизм) засядешь переводчиком работать, да?

2 дня работы максимум (в случае этого проекта). вот. и инглиш у меня кривой, лучше будет поручить это кому-нибудь.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

> на 2 месяца (оптимизм) засядешь переводчиком работать, да?

2 дня работы максимум (в случае этого проекта). вот.

ну так и тренируйся на кошках пока есть возможность :)

и инглиш у меня кривой, лучше будет поручить это кому-нибудь.

в бою кого-нибудь не будет, а будешь только ты :) а потом тебя переводчики истерзают, это тебе не мануалы переводить :) и да инглиш прямее не станет, если устраняться от проблемы :) смотри как кутишники пишут и пиши, помни что от тебя никто не ждёт что окажешься Байроном, главное донесённая мысль

shty ★★★★★
()
Ответ на: комментарий от shty

> ну так и тренируйся на кошках пока есть возможность :)

ладно, обещаю, доведу проект до презентабельного вида (т.е. до того, когда можно будет заливать в vcs) — переведу :). Просто пока не хотелось бы тратить мозг на это.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от shty

А структуры внутри класса стоит с префиксом m давать?

И правильно ли я понимаю, что членам c-style структуры (у которой методов нет) не нужны префиксы m?

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

По первому пункту. Наверное, нет. Как минимум, выглядит глупо.

        struct m_Anchor {
            /**
            * Точка, к которой осуществляется привязка курсора
            */
            QPoint point;
            
            /**
            * Возможна ли привязка
            */
            bool is_possible;
        };

        m_Anchor m_anchor;
Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

да, выглядит странновато и m в имени структуры точно не нужна

я бы эту структуру определил так

typedef struct {
    QPoint point;
    bool bindable;
} anchor_t, *anchor_ptr_t;

обрати внимание на имя булевской переменной, в данном случае bind явно указывает на связывание, в то время как possible - это какая то абстрактная возможность

иногда имена структур пишут большими буквами, типа так

typedef struct {
    QPoint point;
    bool bindable;
} ANCHOR, *PANCHOR;

но это уже как кому нравится :)

если структуре надо ссылаться на себя то её можно определить например так

typedef struct __anchor {
    QPoint point;
    bool bindable;
    __anchor *next_anchor;
} anchor_t, *anchor_ptr_t;
shty ★★★★★
()
Ответ на: комментарий от shty

если тебе не нужен указатель на структуру можешь писать например так

typedef struct { 
    QPoint point; 
    bool bindable; 
} anchor_t;

и да, в С++ структура - это класс без закрытых членов, так что никто тебе не мешает определить в структуре конструктор (или деструктор), например так

typedef struct __anchor { 
    QPoint point; 
    bool bindable; 
    /* ctor */
    __anchor() {
    // OMG, it works! :)
    }
} anchor_t, *anchor_ptr_t;

вот как то так :)

причём в структуре можно определить и функции

правда увлекаться не стоит, если чувствуешь желание напихать в структуру функций - задумайся, может тебе нужен обычный класс :)

shty ★★★★★
()
Ответ на: комментарий от Obey-Kun

> ладно, обещаю, доведу проект до презентабельного вида (т.е. до того, когда можно будет заливать в vcs)

Нам ссылочку не забудь кинуть, а мы оценим ;-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.