Новая статья в рамках ликбеза: Константы, переменные и арифметика

Тема в разделе "Анонсы", создана пользователем nailxx, 4 ноя 2012.

  1. nailxx

    nailxx Официальный Нерд Администратор

  2. Unixon

    Unixon Оракул Модератор

    Я бы поспорил на счет единственно верного стиля оформления имен переменных и функций.
    В разных проектах используются разные стили, со своими достоинствами и недостатками.
    Перечислим 9 основных видов идентификаторов (надеюсь, ничего не забыл): макроопределение, глобальная переменная, локальная переменная, глобальная константа, локальная константа, глобальная функция, функция - член класса, переменная - член класса, константа - член класса, аргумент функции.
    Стиль оформления должен позволять все из них писать своим определенным стилем (в идеальном случае), чтобы одного взгляда на имя было достаточно, чтобы понять что это такое. На практике, некоторые идентификаторы оформляются одинаково, но выбор стиля для одного вида идентификаторов часто означает невозможность его использования для другого, без ущерба читабельности кода.

    Пример:

    MACRO_DEFINITION
    GLOBAL_CONSTANT
    GlobalVariable
    GlobalFunction(withArgument)
    {
    Local_Constant
    local_variable
    }
    MyClass::MemberFunction(alsoWithArgument)
    {
    m_MemberConstant
    m_memberVariable
    }

    Трудно вовсе без коллизий распихать все стили...

    Удобочитаемых стилей меньше, чем видов идентификаторов, поэтому также важно отметить, что главное не только выбрать хороший стиль, но и всегда его придерживаться, поскольку совсем уж идеального стиля нет. Даже по поводу расстановки скобок возле if или for тоже можно целый холивар устроить... :)
     
  3. nailxx

    nailxx Официальный Нерд Администратор

    Да, всё верно говорите. Главное — придерживаться единого стиля. C и C++ просто за десятки лет существования уже в стольких местах побывали, в стольких компаниях, что различных стилей действительно тьма.

    Но среди них можно выделить несколько доминирующих. Тех, с использованием которых существует наибольшее количество open source кода. А уж среди них можно увидеть и тот, что хотя бы используется в самом Wiring/Arduino. И это K&R.

    Грязно пользуясь положением автора статьи, дабы не разводить холивар в статье мной и был настойчиво предложен один стиль. Хотя вероятно стоит явно об этом упомянуть.