Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Такая немного странная тема. Охота узнать, кто какой стайлинг кода предпочитает при программировании. Будем говорить о С и С++ раздельно. Где ставить скобочки, как писать комментарии. В общем почему именно так, почему так удобнее и т.д.
ну кратко свой
Код:
class CMyClass { public: int PublicVar;
CMyClass(); private: int privateVar;
void privateMetod(); }
//comment void f() { int a; if(0 == a) { a++; } else { a--; }
int b; switch(b) { //comment case 1: a--; break; } //comment }
Каково ваше отношение к венгерской нотации. Способы названия переменных, регистры и т.д.
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Member
Статус: Не в сети Регистрация: 04.06.2005 Откуда: Оксфордшир
Тут у тебя непоследовательность. У класса скобка начинается но той же строчке, у функции на следующей... то комментарии в начале, то с краю...
Офф: Рано или поздно кто-нибудь все равно поднимет эту тему, так что лучше я сам - Python и нет проблем. Код сам по себе получается красивый. И короткий.
_________________ Таких людей уже нет, а скоро совсем не будет BTEAM_Shifty
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Хм. Питон конечно хорошо, но не все на нем можно решить
А про скобки. Дело в том, что если строка начиняется с ключевого слова - ожидание скобки логично
а если нет - то лучше дополнительно на том же уровне вложения показать это
а функция обычно объявляется не с ключевого слова (тама его вообще может не быть)
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Собственно кавычки ставлю всегда так(везде ). Коментарии чаще всего в том виде что на примере или непосредственно над блоком если длинные или многострочные.
nickyoz писал(а):
Да и зачем место экономить
Это насчёт скобок: наверное я не правильно выразился. Я имел ввиду рабочее, видимое пространство. Ни на работе ни дома я не имею возможности лицезреть на 24" в разрешении 1600х1200(и больше) поэтому борюсь за каждый видимый пиксель на экране, т.е. чем болше видишь за раз тем понятнее.В расход обычно идёт всё: темы, тулбары и всё остальное что может мешать.
Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
Возможно у меня извращенный вкус, но по жизни пользую таб на 2 пробела (вместо 4х).
{ в конце строчки на яве, на новой строчке - C++\C#.
else везде на новой строчке
Было время, когда имена полей начинал с подчеркивания, имена параметров метода с буквы a. Сейчас забил.
////////////////////////////////////////////////////////////////////////// // FlashHAL, some comments there ////////////////////////////////////////////////////////////////////////// class FlashHAL : public IHardDriveHAL { public: bool read_sector( void *buffer ); // comments bool write_sector( void *buffer ); // comments
//... };
////////////////////////////////////////////////////////////////////////// // FlashDrive, some comments there ////////////////////////////////////////////////////////////////////////// class FlashDrive { public: FlashDrive(); ~FlashDrive();
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
mein Ну это дело привычки - скобка
а количество кода большое видеть. А зачем?
вообще у нас считается что если функция больше 30 строк - то она плохая Добавлено спустя 1 минуту, 55 секунд Билли Бонс Класс. Мешанина подхода С и С++
А вот твою растоновку скобок когда-то давно пропогандировало MS
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Catar писал(а):
Возможно у меня извращенный вкус, но по жизни пользую таб на 2 пробела (вместо 4х).
маловато как-то два пробела, да и стандартный TAB обычно имеет их 8 штук(обычно и использую). Хотя 4 уже нормально смотрится.
nickyoz писал(а):
а количество кода большое видеть. А зачем?вообще у нас считается что если функция больше 30 строк - то она плохая
Вот теперь я понял о чём речь. К сожалению, частенько получаются функции поразмашистее - ну не всегда можно коротко и эффективно/наглядно развернуть алгоритм.
Тут у тебя непоследовательность. У класса скобка начинается но той же строчке, у функции на следующей..
Между прочим это хороший коммерческий стандарт. mein Хороший код, но лучше (имхо опять же, но опять же хороший коммерческий стандарт) } else { и if( x == .. ) (пробелы)
nickyoz писал(а):
вообще у нас считается что если функция больше 30 строк - то она плохая
да и правильно. но исключения есть всегда.
_________________ Первый огонь был получен людьми из-за перегрева. Пессимист отличается от оптимиста датой наступления конца света.
IOReturn PLX9080::plxRelease(PLX9080::CallbackWOReturn stop, PLX9080::CallbackWOReturn exit) { DbgPrint("PLX9080::plxRelease(), users %d\n", masterIface_.users); if (masterIface_.users == 1) { masterDev_.int_source->disable(); if (stop) (this->*stop)(); if (exit) (this->*exit)(); //Destroying DMA PLXDMAEngine::plxFree(masterIface_.dma); } masterIface_.users--; return kIOReturnSuccess; }
Писать предпочитаю, как рекомендует Саттер:
Имя типа LikeThis
Инстанс likeThis
Поле likeThis_ Добавлено спустя 2 минуты, 16 секунд А еще я не люблю стаил, как у mein'а
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
Если ты про void*, то иначе никак - буфер-то может быть любого типа.
Смарт-пойнтеры мы не уважаем А вообще действительно void* - дурной тон.
Цитата:
Хороший код, но лучше (имхо опять же, но опять же хороший коммерческий стандарт) } else { и if( x == .. ) (пробелы)
это чисто религиозные войны.
я лично обычно пишу так
Код:
if (x==y) { ... } else if (x1==y1) { ... } else { ... } //что-то мелкое if (zcv) fdfds;
переменные в немаленьких программах именую согласно венгерской нотации. Ну, вроде того, что bXXX - переменная типа "bool" (хотя это спорный вопрос ), dwXX - dword aka unsigned long int итд
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Последний раз редактировалось Root 07.12.2006 0:35, всего редактировалось 1 раз.
Если ты про void*, то иначе никак - буфер-то может быть любого типа.
Смарт-пойнтеры мы не уважаем А вообще действительно void* - дурной тон.
Не надо делать из меня идиота. :0) Причём здесь смарт-пойнтеры? Дурной, не дурной, а ты попробуй по-другому сделай, а потом уже морализируй.
Root писал(а):
переменные в немаленьких программах именую согласно венгерской нотации. Ну, вроде того, что bXXX - переменная типа "bool" (хотя это спорный вопрос ), dwXX - dword aka unsigned long int итд
Венгерская нотация маст дай!!!
Последний раз редактировалось Билли Бонс 07.12.2006 0:37, всего редактировалось 1 раз.
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Билли Бонс
Цитата:
Не надо делать из меня идиота. :0) Причём здесь смарт-пойнтеры?
альтернативы? да и по-любому брать void*, а потом из него мутить char* через каст смысла, ИМХО, нет - пущай кастует тот, кто передает параметры в функцию.
Цитата:
Венгерская нотация маст дай!!!
это еще почему? очень удобно. в частости когда программишь какую-нибудь девайсину и возюкаешься с кучей разных переменных разных типов.
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Последний раз редактировалось Root 07.12.2006 0:39, всего редактировалось 1 раз.
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
Пиши в вижуале и используй ассистанта
вижуал - мастдай, ассистант - тем более. GCC, консоль, MAKE и DDK рулят очень забавно приделывать драйверный проект к студии - проще его ручками набрать и забильдить спец. тулзой build
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Ну я тоже gcc и make'ом компилирую (да и не под Intel вовсе), но не в блокноте же проги писать. Добавлено спустя 6 минут, 31 секунду
Root писал(а):
да и по-любому брать void*, а потом из него мутить char* через каст смысла, ИМХО, нет - пущай кастует тот, кто передает параметры в функцию.
Вот это самый несуразный подход из всех, нельзя так. Если преобразования не избежать, надо оставлять его на нижнем уровне (в драйвере), а не переносить его в каждый вызов функции на верхнем уровне.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Root писал(а):
Смарт-пойнтеры мы не уважаем
Смартпоинтеры действительно в данном случае левые А вообще странно, почему буфер в void *, тем более что для этих целей (пересылка данных, буд-то порт, или сеть) зачастую применяется char *. А что если char * - void *, а потом опять char * Хотя это вопрос требований, если нужно void * - никуда от этого не уйти.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения