Модераторы: Nastya, LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой indent style вы используете в коде Си/Си++? 
:(
    Опции темы
 
Какой indent style вы используете для форматирования кода на Си или Си++?
K&R или 1TBS [ 7 ]  [21.88%]
BSD или Allman или ANSI [ 22 ]  [68.75%]
Whitesmiths [ 0 ]  [0.00%]
GNU [ 2 ]  [6.25%]
Pico [ 0 ]  [0.00%]
Другой (какой?) [ 1 ]  [3.12%]
Всего проголосовавших: 32
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
srd
Дата 11.12.2005, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 1
Всего: 49



Идея опроса родилась тут
Что из себя представляет каждый стиль, можно посмотреть тут.
smile


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Void
Дата 11.12.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 2
Всего: 173



K&R

Давайте еще делиться соглашениями именования smile У меня примерно так:
классы и параметры шаблонов: PascalStyle
методы, свободные функции, пространства имен: lowercase_with_underscores
typedef'ы и мелкие структуры: lowercase_with_suffix_t
локальные переменные: camelCase или with_underscores
закрытые члены классов: lowercase_with_trailing_


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Дрон
Дата 11.12.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 93



Года 3 назад писал в K&R, теперь BSD/Allman (судя по Вике -- сам-то я никогда не задумывался о названиях).

Цитата(Void @ 11.12.2005, 10:51)
Давайте еще делиться соглашениями именования

Пожалуйста smile

Всё PascalStyle, за исключением camelCase для локальных переменных, параметров и защищённых полей.

Сивол подчёркивания вообще не использую.



--------------------
Да. Именно так.
PM   Вверх
Sardar
Дата 11.12.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



K&R

На C++ ничего серьёзного не писал, сейчас по проекту только на C, вылилось в такие правила:

typedef'ы со структурами с заглавной буквы:
Код
typedef struct Hashtable {
//.....
} Hashtable;


typedef'ы с примитивами в верхнем регистре, например UINT24.

Все функции работающие с определёнными обьектами/структурами получают префикс имя обьекта, само же имя функции начинаеться с прописной (camelCase):
Код
HashtableEntry * Hashtable_getEntry(Hashtable *table, char *key);

Короче это методы класса Hashtable smile

Локальные переменные через '_', поля структур camelCase.

Первым языком был Java, потому ООП в крови smile Не понимаю суфиксов _t, _s, _enum и т.д. по моему убивают читабельность.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
DeadSoul
Дата 11.12.2005, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



use BSD.
Цитата(Void @ 11.12.2005, 10:51)
Давайте еще делиться соглашениями именования 

С эти сложнее smile Обычно стараюсь использовать стиль пинятый в текущей команде


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Void
Дата 11.12.2005, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 2
Всего: 173



Цитата(DeadSoul @ 11.12.2005, 15:26)
Обычно стараюсь использовать стиль пинятый в текущей команде

Это-то понятно, имеется в виду, какой стиль ты бы сам установил smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
DeadSoul
Дата 11.12.2005, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Цитата(Void @ 11.12.2005, 13:35)
Цитата (DeadSoul @ 11.12.2005, 15:26)
Обычно стараюсь использовать стиль пинятый в текущей команде
Это-то понятно, имеется в виду, какой стиль ты бы сам установил 

Крайне ограниченное использование венгерки, т.е. только
m_ - для членов класса
g_ - для глоюальным переменных
s_ - для статических членов класса( под вопросом )
p - для указателей



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Mayk
Дата 15.12.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



комбинированный
Код

#ifndef __INCLUDED_filename_h //имя __INCLUDED_filename_h генерируется автоматически самописной на bash'e тулзой
#define  __INCLUDED_filename_h
namespace Namespace
{namespace OtherNamespace
{

// имя класса для pImpl'а - имя класса с постфиксом Priv
class ClassNamePriv; 

//имя класса с большой буквы
class ClassName
{   
    public:     //объявление типов и констант
    typedef SomeType SomeOtherType;
    typedef SomeType2 SomeOtherType2;
    typedef enum {Enumeration1, Enumeration2}Enumeration;
    const static int SomeConstValue=342;

    public: //еще одна public с методами. enter перед public: обязателен
    //имена ф-ций с малой буквы
    void methodName(Enumeration enumeration){ //если не теряется смысл, то имя переменной есть имя класса (или часть)  с малой буквы
            ....
    int getProperty() const; //получение/установка  с помошью get/set. получение ссылки 
    void setProperty(int propValue);
    private:
    int m_varName; //все данные-члены имеют префикс m_
    int m_blabla;
    //все константы начинаются с большой буквы
    const static int ConstValue;
    ClassNamePriv* m_priv;
};
}}
#endif

void ClassName::methodName() //ентер м/ду ( ) и {  обязателен для всех нетривиальных ф-ций
{
#define MACRO_NAME(__arg1, __arg2) something(_arg1)  + something(_arg2)
//макросы, которые требуются для предотвращения cut/paste объявляются в теле ф-ции
#undef MACRO_NAME
//там же уничтожаются

        if( val == 5 ){ //пробелы м-ду  операторами   (так делают в q3. Выглядит читабельнее if (val==5))
             
                //размер tab'а - 8 символов. 
        }//левая { идет на строке с условием, правая  на уровне if'а
       int var=3; //с малой буквы, обычно инициализирована.
}


//get/setы пишутся в две строки
int ClassName::getProperty() const
{ return m_var; }

void ClassName::setProperty(int val)
{if(valid(val))m_var=val; else m_var = nearestToValid(val);}

//или в три для template
template <class _Tp, int Max> //все типы имеют префикс _, константы по прежнему с большой буквы
int ClassName<_Tp, Max>::get() const //если на место _Tp можно подставить int, то class  _Tp -заменяется на typename _Tp
{return m_var;}


Имена аргументов - в операторах - lhs и rhs.
В методах другой объект того же типа обзываю other, текущий(*this) если требуется, то self (так в quakec делалось) .
Возвращаемое значение обычно носит имя rc
Исключения обычно наследуются от logic_error.


Вот примерно так
UPDATE:

Класс ClassName объявляет ClassNamePriv другом.
ClassNamePriv объявляет другом ClassName.
ВСЁ без исключения в ClassNamePriv объявлено как private.
Ах да.
Перед СЛОЖНОЙ ф-цией идёт описание её алгоритма в комментариях. Вот так вот:
Код

/*
 Вычисление точки пересечения двух линий.
 Имеем
    x-x0         y - y0
   -------- =   --------
      a             b
и
    x-x1         y - y1
   -------- =   --------
      c             d

Приравниваем, получаем ...

*/
Point2D Line2D::intersection(const Line2D& other){
        const double a = m_direction.x, b=m_direction.y; //имена переменных берем из комментария
        const double c = other.m_direction.x, d = other.m_direction.y;
        const double x0 = m_point.x, y0 = m_point.y ;
        const double x1 = other.m_point.x, y1 = other.m_point.y;
       .... расчёт ....
}

Иногда с рисунком

Код

#if 0
(vim подсвечивает это как комментарий - так комментю только в .c[pp], не в хедерах)
Пересечение прямоугольников
             ############
             ############
           $$@@##########
           $$@@##########
           $$$$
#endif


Это сообщение отредактировал(а) Mayk - 15.12.2005, 13:28


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Exception
Дата 15.12.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 2
Всего: 186



Мой код (правда, не С++)
Код

Class MyNewClass
Private _myVar As String 'private начинаю с _, второе слово - с заглавной.
Public Sub MyMethod(myParam As String) 'открытые члены - с заглавных
    _myVar = myParam 'параметры и локальные как private, но без _
End Sub
End Class

indent'ы - 4 пробела.

PM   Вверх
dm9
Дата 18.12.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



K&R всегда.

Именование переменных, столбцов в БД, атрибутов в XML - camelStyle.
Именование ф-ций, методов и классов - PascalStyle.
Названия файлов - только строчные буквы.
В PHP4 приватные методы начинаю с подчёркивания, так как в этом языке нет другого способа выразить приватность. В нормальных языках это считаю излишним.

PM MAIL ICQ   Вверх
chipset
Дата 20.2.2006, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 4
Всего: 165



K&R
Именование методов: unix_style.
Именование классов: unix_style.
Именование переменных: unix_style.
Именование всего остального: unix_style.
Для приватных переменных ставлю "_" впереди.
Классы отделяю друг от друга /*---class foo----*/'ом, между методами ставлю
Код

/////////////////////////////////////////////////////////////////////////////////////////////////////////
///Method A, does bla-bla-bla-bla
/////////////////////////////////////////////////////////////////////////////////////////////////////////




--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
DeadSoul
Дата 20.2.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Цитата(chipset @ 20.2.2006, 02:29 Найти цитируемый пост)
Для приватных переменных ставлю "_" впереди.

Вроде такое не рекомендуется. Переменные с такими именами reserved для чего-то внутреннего разработчиков компиляторов\библиотек


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
chipset
Дата 20.2.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 4
Всего: 165



Сцылко в студию.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
dm9
Дата 21.2.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата(DeadSoul @ 21.2.2006, 00:44 Найти цитируемый пост)
Переменные с такими именами reserved для чего-то внутреннего разработчиков компиляторов\библиотек


"для чего-то внутреннего" как раз и есть "приватные переменные и методы".

PM MAIL ICQ   Вверх
JackYF
Дата 16.10.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 5
Всего: 162



Использую, как только что выяснилось (  smile ) BSD/Allman.
Хотя довольно нравится и GNU style.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Опросы"
Smartov
Nastya

В этом разделе собраны темы для опросов участников форума. Просьба не создавать здесь темы не касающиеся всех участников, узкоспециальные или с религиозным оттенком.

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



С уважением, Smartov, Nastya.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Опросы | Следующая тема »


 




[ Время генерации скрипта: 0.0783 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.