Ваш любимый стиль наименования в С++.
От: magesto  
Дата: 17.02.06 20:29
Оценка:
Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?
Re: Ваш любимый стиль наименования в С++.
От: Jax Россия  
Дата: 17.02.06 21:28
Оценка: 1 (1)
Здравствуйте, magesto, Вы писали:

M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?


Имена классов MyClass, интерфейса IMyClass.
Функция член doFunc, глобальная функция do_func, вызов WinApi функции ::<имя_функции>.
Члены классов m_member, без указания типа.
Глобальная константа kConst.

Такие правила достаточны для быстрого визуального определения основных конструкций и не перенасыщают код дополнительной и на, мой взгляд, бесполезной информацией типа венгерской нотации. При нынешнем уровне IDE очень быстро можно узнать дополнительную информацию о заинтересовавшем типе, например.
Re: Ваш любимый стиль наименования в С++.
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 18.02.06 12:00
Оценка:
Здравствуйте, magesto, Вы писали:

M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?


Как правило, система именования в той или иной степени определяется на корпоративном уровне, ей лучше и следовать.

Стилей же много, например тут можешь посмотреть один из примеров. Для "своих" проектов, к именованию тоже следует подходить избирательно, слепое апологетство тут вредно. Например, та же венгерская нотация с ее включением типа переменной в ее имя не очень стыкуется с ООП из-за наличия в нем такого явления, как полиморфизм объектов, что особенно проявляется в динамически-типизированных языках.
-- Андрей
Re: Ваш любимый стиль наименования в С++.
От: Mamut Швеция http://dmitriid.com
Дата: 18.02.06 12:46
Оценка: 1 (1)
M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?
class PrinterManager : public IPrinterManager
{
public:
   void initializePrinters();
   int  noOfPrinters;

private:
   char* _getDefaultPrinterName();
   bool  _isInitialised;
};

/* глобальные переменные и функции */

extern PrinterManager* gPrinterManager;
extern g_initialisePrinterManager();


в примере PrinterManager может стать и PrinterManagerClass, хотя я не люблю так писать Для всего, кроме названий классов использую lowerCamelCase.

Преимущества...
lowerCamelCase — нет необходимости нажимать Shift + Underscore для получения подчеркиваний в именах. А так как в С++ нельзя, как в Паскале-подобных языках писать вызов процедуры без скобок, то переменные и функции, хоть и написанные одинаковым стилем, легко различаются и выделяются в тексте. Соответственно, благодаря такому стилю одно-двухбуквенные локальные переменные и переменные в циклах так и отсаются lower-case.

PascalCase для имен классов позволяет визуально зацепиться за вызов конструкторов, да и просто визуально удобно. Благодаря этому мне и слово Class в названии не нужно — и так видно, что это класс

Приватные члены классов начинаю с подчеркивания, потому что удобно для Интеллисенса, да и в конструкторах удобно:
PrinterManager::PrinterManager(QString printerName)
{
    _printerName = printerName;
}


dmitriid.comGitHubLinkedIn
Re[2]: Ваш любимый стиль наименования в С++.
От: StatujaLeha на правах ИМХО
Дата: 18.02.06 14:03
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Приватные члены классов начинаю с подчеркивания, потому что удобно для Интеллисенса, да и в конструкторах удобно:

M>
M>PrinterManager::PrinterManager(QString printerName)
M>{
M>    _printerName = printerName;
M>}
M>


тоже хочу использовать похожий стиль наименования членов-данных класса, но только с маленьким нюансом: _OpenMember — для открытых,m_PrivateMember — для закрытых и защищенных. Отпугивает пока рекомендация стандарта не давать имен, начинающихся с "_". А Вы не сталкивались с проблемами при использовании имен, начинающихся с "_"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Ваш любимый стиль наименования в С++.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 18.02.06 15:27
Оценка:
Здравствуйте, StatujaLeha, Вы писали:

SL>А Вы не сталкивались с проблемами при использовании имен, начинающихся с "_"?


Re[4]: Шаблоный + CBuilder
Автор: Glоbus
Дата: 01.12.03
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Ваш любимый стиль наименования в С++.
От: _Skywalker Россия  
Дата: 19.02.06 17:44
Оценка:
// @desc
//       описание класса
class SomeClass
{
#pragma region Methods
    public:
        // @desc
        //          устанавливает необходимый видеорежим
        // @params
        //          [width]        - ширина режима в пикселях
        //          [height]       - высота режима в пикселях
        //          [bitsPerPixel] - число битов на пиксель (глубина цвета)
        //          [refreshRate]  - частота обновления, если 0, то используется 
        //                           значение по умолчанию для данного режима 
        //                           (определяется драйвером видеокарты)
        // @returns
        //          true - в случае успеха
        bool setVideoMode(Int width, Int height, Int bitsPerPixel = 32, Int refreshRate = 0);

    public:
        // @desc
        //          начинает рисовать кадр
        // @params
        //          [stride] - сюда будет помещён шаг памяти
        // @returns
        //          указатель на видеопамять
        ColorValue* beginDraw(Int& stride);

                ...

#pragma endregion

#pragma region Helper methods
                ...
#pragma region Stride
    private:
        // @desc
        //       Шаг памяти. Значение действительно только между вызовами beginDraw и endDraw
        Int Stride;

    private:
        // @desc
        //         setter for Stride
        // @params
        //         [newStride] - new value for Stride
        void setStride(Int newStride);

    public:
        // @desc
        //          getter for Stride
        // @returns
        //          current value of Stride
        Int getStride();
#pragma endregion
                ...
#pragma endregion

 };


Т.е. никаких подчеркиваний, никаких венгерских нотаций. Использую camel, модификатор доступа пишу возле каждого метода и поля. Свойства (поле + get/set) генерирую через VA, каждое свойство обрамляется через #pragma region...
Re: Ваш любимый стиль наименования в С++.
От: Chiрset Россия http://merlinko.com
Дата: 19.02.06 19:53
Оценка:
Здравствуйте, magesto, Вы писали:

M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?


Вот пример файла.
//  \src\utils\logger.cpp
//  Implementation of exception and logger classes
//  Copyright Alexander Beluga 2006.Use, modification, and distribution are
//  subject to the Boost Software License, Version 1.0. (See accompanying
//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)



namespace utils
{
    /*------------------------class utils::logger-------------------------------*/
    //TODO: Add implementation of logger

    //////////////////////////////////////////////////////////////////////////
    ///Constructor of logger
    //////////////////////////////////////////////////////////////////////////
    logger::logger()
    {
        configurate();
    }//logger::logger

    ///////////////////////////////////////////////////////////////////////////
    ///Configuration logic goes here, i.e: default-values, where to assign what etc
    ///////////////////////////////////////////////////////////////////////////////
    logger::configurate()
    {
        //some explanations are required here
        //configurator -- wrapper around config class
        //"LOGFILE" -- hash id of required param
        //"logger.txt" -- default value if nothing is there
        this->start_log(configurator("Logger")["LOGFILE"]="logger.txt");
    }//logger::configurate()

    //////////////////////////////////////////////////////////////////////////
    ///logger::handle_exception with one param
    ///utils::exception(in) -- specifies the exception of which to handle
    ///return value -- true if exc was handled
    //////////////////////////////////////////////////////////////////////////

    bool logger::handle_exception(const utils::exception &exc)
    {

        if(!_log.is_open())
            return false;
        return true;

    }//logger::handle_exception(utils::exception exc)


    /*----------------------class utils::exception-------------------------------*/
    ///////////////////////////////////////////////////////////////////////////
    ///utils::exception::log(), logs exception
    //////////////////////////////////////////////////////////////////////////
    bool exception::log()
    {
        //TODO: Add actual logging code: stub, I've no idea what it does

        flog() <<"/------"
        <<(this->_fatal ? "Fatal" : "Non-fatal")//fatal or non-fatal
        << " Exception thrown on "<<time_stamp()
        <<"----------"<<std::endl;
        flog() << "@ " << _funcsig << std::endl;
        flog()<<"The priority is:"<<this->_priority<<std::endl;
        if(_addinfo)
            flog()<<_addinfo<<std::endl;

        return true;
    }//exception::log

}//namespace utils
"Всё что не убивает нас, делает нас сильнее..."
Re: Ваш любимый стиль наименования в С++.
От: alex_ez Россия alex.jife.ru
Дата: 20.02.06 04:00
Оценка:
Здравствуйте, magesto, Вы писали:

M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?


[class,struct,union] MYclass {
private:
void myFunc();
public:
[ MYclass();]
};
silence in quite
Re: Ваш любимый стиль наименования в С++.
От: Ligen Украина http://zone-of-ambiguity.blogspot.com/
Дата: 20.02.06 16:51
Оценка:
M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?

1. CMyClass, IMyClass
2. DoSomething
3. венгерская + m_, g_, s_ ; m_dwBufferSize;
4. GetMyProperty, SetMyProperty

Привычка + упрощает чтение кода, разбор легче чем LL(1) =)))
Viva el Junta Militar! Viva el Presidente!
Re: Ваш любимый стиль наименования в С++.
От: Владек Россия Github
Дата: 21.02.06 17:06
Оценка: +1
Здравствуйте, magesto, Вы писали:

M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?


class MyClass
{
public:
    enum SomeEnum
    {
        SomeEnum_Enum1, // можно и Enum1, но не все компиляторы поддержживают SomeEnum::Enum1.
        SomeEnum_Enum2
    };
    
    void doFunc();

    const Member &member() const;
    void setMember(const Member &);

protected:
    void doFuncProtected();

    Member _member;

private:
    void doFuncPrivate();

    Member _member; // Иногда member_, но выглядит коряво. Использую для небольших классов.
};

MyClass globalVariable;


Преимуществ никаких. Я не против других стилей написания кода, главное — чтобы использовались они повсеместно.
Re[4]: Ваш любимый стиль наименования в С++.
От: Mamut Швеция http://dmitriid.com
Дата: 22.02.06 07:37
Оценка:
SL>>А Вы не сталкивались с проблемами при использовании имен, начинающихся с "_"?

OE>Re[4]: Шаблоный + CBuilder
Автор: Glоbus
Дата: 01.12.03


Абыдна, да


dmitriid.comGitHubLinkedIn
Re: Ваш любимый стиль наименования в С++.
От: av Россия  
Дата: 23.02.06 22:31
Оценка:
M>Как вы именуете классы, методы, члены классов, пространства имён в своём коде и почему? Как пишете имя класса: MyClass, CMyClass, myClass, My_Class, my_class? Имя метода: DoFunc, doFunc, Do_Func, do_func, Func, func? Как в таком случае пишете имена переменных. Выделяете ли каким либо образом члены классов, типа m_member, _member, member_ или ваш вариант? И, самое главное, почему именно так? Какие преимущества даёт вам этот стиль?

Namespaces: MyNamespace.
Классы: MyClass.
Методы: myMethod().
Поля: _myField.

Глобальные переменные и функции не использую или запихиваю в какой-нибудь namespace, где они не мешают. Называю так же, как и методы.

Подчеркивания в именах полей пишу, потому что не люблю префикс get в именах методов. Таким образом получается нечто вроде такого:
class MyClass {
    public:
        int count() const { return _count; }
        void setCount(int count) { _count = count; }
    private:
        int _count;
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.