Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> имена переменных, какого стиля вы придерживаетесь 
:(
    Опции темы
 
какого стиля вы придерживаетесь при создании переменных?
все строчными разделенное знаком подчеркивания (max_len) [ 9 ]  [22.50%]
разделение заглавными (GetMaxLen или getMaxLen) [ 30 ]  [75.00%]
смешаный (Get_Max_Len) [ 1 ]  [2.50%]
я не заморачиваюсь, одной или двух букв всегда хватает [ 0 ]  [0.00%]
Всего проголосовавших: 40
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
baldina
Дата 20.7.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 32
Всего: 101



Цитата

какого стиля вы придерживаетесь при создании переменных?

бытие определяет сознание. жаль, что только один вариант ответа.
а что насчет смешения стилей? часто в одном проекте используются библиотеки с разными принципами именования. пример - MFC и STL. какой стиль выбрать? что делать (и нужно ли), что бы код смотрелся единообразно?
PM MAIL   Вверх
borisbn
Дата 20.7.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(Earnest @  20.7.2011,  11:28 Найти цитируемый пост)
код должен быть самодокументирован

 smile Был у нас один "программист" (сейчас уже уволился), который на полном серьёзе (не прикалываясь) писал такое:
Код

// Цикл по internal_cicle_counter от 0 до n-1
for ( int internal_cicle_counter = 0; internal_cicle_counter < n; internal_cicle_counter++ ) {
  // получаем указатель на структуру и т.д.
  SomeStruct * some_struct_pointer_for_foo_function_call = m_buffer[ internal_cicle_counter ].ptr;
  // вызываем функцию foo с параметром и т.п.
  foo( some_struct_pointer_for_foo_function_call );
}

В общем, крайности всегда плохо. И совсем без комментариев нельзя, и перегружать код лишними комментариями - тоже вредно.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
fish9370
Дата 20.7.2011, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Earnest @  20.7.2011,  11:28 Найти цитируемый пост)
Документация к коду ИМХО не нужна


Цитата(Earnest @  20.7.2011,  11:28 Найти цитируемый пост)
"Стратегические" документы (типа функциональной спецификации на разработку конкретного модуля \ утилиты или   описание дизайна программы) очень желательны


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


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Earnest
Дата 20.7.2011, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(borisbn @  20.7.2011,  13:52 Найти цитируемый пост)
 И совсем без комментариев нельзя, и перегружать код лишними комментариями - тоже вредно. 

Разумеется, я не такие комментарии имела в виду. За такое нужно сразу убивать. Самодокументированность - это четкая логическая структура, ясные имена переменных и необходимый минимум комментариев.
Цитата(fish9370 @  20.7.2011,  13:56 Найти цитируемый пост)
я не совсем понимаю, что такое документация к коду

Я под этим понимаю описание классов и их функций. Типа функция XXX класса YYY делает то-то. Как отдельный документ. Считаю, что это лишняя трата времени - и того, кто пишет, и того, кто читает. Такого рода информация нужна только разработчикам, а они могут и код посмотреть (уж точно актуальную инфу получат). А если код в этом смысле написан плохо, то разумнее потратить время на его улучшение, чем не его же описание.
Разумеется, если продукт - не библиотека, предназначенная для внешнего распространения.



--------------------
...
PM   Вверх
azesmcar
Дата 21.7.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



borisbn

У нас не до такой степени, но все же комментарии, чаще встречающиеся в нашем кода
Код

// draw busy cursor
drawBusyCursor();



Это сообщение отредактировал(а) azesmcar - 21.7.2011, 20:38
PM   Вверх
toxx
Дата 21.7.2011, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



borisbn,
azesmcar
Ктото из вас написал что коментарии нужны в самых сложных местах, тоже с этим согласен, в остальном должны быть интуитивно понятные названия методов и переменных.
А так, как я понял, стиль формируется в зависимости от конкретной команды и тимлидера(в соответствии с его стилем обычно пишут)
Поэтому считаю позицию Earnest верной по созданию дока со стилем.
PM MAIL   Вверх
borisbn
Дата 21.7.2011, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(toxx @ 21.7.2011,  21:50)
borisbn,
azesmcar
Ктото из вас написал что коментарии нужны в самых сложных местах, тоже с этим согласен, в остальном должны быть интуитивно понятные названия методов и переменных.
А так, как я понял, стиль формируется в зависимости от конкретной команды и тимлидера(в соответствии с его стилем обычно пишут)
Поэтому считаю позицию Earnest верной по созданию дока со стилем.

ни тот, ни тот, а как раз Earnest:
Цитата(Earnest @  20.7.2011,  11:28 Найти цитируемый пост)
код должен быть самодокументирован, включая подробные комментарии к сложным местам


Это сообщение отредактировал(а) borisbn - 21.7.2011, 22:38


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 22.7.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



мне очень не нравится Google's C++ style guide.
совсем случайно наткнулся на эту тему: http://stackoverflow.com/questions/5695082...nce-in-industry
радует что не мне одному он кажется нелепым. особенно запрет использовать исключения и обильно шаблоны... smile 
PM WWW   Вверх
fish9370
Дата 22.7.2011, 12:09 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(boostcoder @  22.7.2011,  10:14 Найти цитируемый пост)
мне очень не нравится Google's C++ style guide.совсем случайно наткнулся на эту тему: http://stackoverflow.com/questions/5695082...nce-in-industryрадует что не мне одному он кажется нелепым. особенно запрет использовать исключения и обильно шаблоны...


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


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Earnest
Дата 22.7.2011, 12:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(fish9370 @  22.7.2011,  13:09 Найти цитируемый пост)
код упрощается, значит меньше ошибок..

Код упрощается? При неиспользовании исключений? Да ладно! Букв становится больше - ошибки-то все равно обрабатывать нужно. А больше букв - больше возможностей случайно напортачить.
Косяки могут возникнуть какие угодно и где угодно. Все зависит от квалификации кодеров. Нет способа защититься от кривых рук, кроме превентивного отстрела. Но как распознать кривые руки еще до того, как они успели нанести ущерб - вот вопрос... smile 


--------------------
...
PM   Вверх
fish9370
Дата 22.7.2011, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Earnest @  22.7.2011,  12:25 Найти цитируемый пост)
Код упрощается? При неиспользовании исключений?


нет, при неиспользовании Си++
А здесь пошли на компромис, между чистым Си и Си++, код стал проще - меньше ошибок, со стороны "криворуких" кодеров..
криворуких взял в кавычки, так как сам язык к этому распологает, это кстати попытка сделать из них пряморуких.. 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 22.7.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Цитата(fish9370 @  22.7.2011,  14:17 Найти цитируемый пост)
при неиспользовании Си++

да ну ладно ;)
тебе уже не раз примеры приводили, что с++ код проще. главное иметь прямой моцг.

Цитата(fish9370 @  22.7.2011,  14:17 Найти цитируемый пост)
криворуких взял в кавычки, так как сам язык к этому распологает, это кстати попытка сделать из них пряморуких.

не-не-не! причина в моцге!

Добавлено через 4 минуты и 28 секунд
вот тебе еще парочка.
банальное получение списка элементов на ФС в текущем каталоге.
1.
Код

#include <boost/filesystem.hpp>
#include <iostream>
 
int main() {
   boost::filesystem::recursive_directory_iterator beg("."), end;
   for ( ; beg != end; ++beg ) {
      std::cout << *beg << std::endl;
   }
}

http://liveworkspace.org/code/840584682a73...df6c8cd75a70848

2.
Код

#include <boost/filesystem.hpp>
#include <iostream>
#include <algorithm>
 
void printer(const boost::filesystem::path& path) {
   std::cout << path << std::endl;
}
 
int main() {
   std::for_each(
      boost::filesystem::recursive_directory_iterator("."),
      boost::filesystem::recursive_directory_iterator(),
      printer
   );
}

http://liveworkspace.org/code/a137f45778dc...002ba5aeda118bd

3.
Код

#include <boost/filesystem.hpp>
#include <iostream>
#include <algorithm>
#include <vector>
 
void printer(const boost::filesystem::path& path) {
   std::cout << path << std::endl;
}
 
int main() {
   std::vector<boost::filesystem::path> list(
      boost::filesystem::recursive_directory_iterator("."),
      boost::filesystem::recursive_directory_iterator()
   );
   
   std::for_each(std::begin(list), std::end(list), printer);
}

http://liveworkspace.org/code/457efd76e5d4...38034951d1668eb


покажи Си`шный эквивалент ;)

Добавлено через 8 минут и 26 секунд
вдобавок: с++, с++су рознь.
ибо даже в Qt("Си с классами" (с) я) это сделано криво.
Код

QDirIterator it("/etc", QDirIterator::Subdirectories);
 while (it.hasNext()) {
     qDebug() << it.next();

     // /etc/.
     // /etc/..
     // /etc/X11
     // /etc/X11/fs
     // ...
 }


вот и пойми кто тут не прямой)
PM WWW   Вверх
Earnest
Дата 22.7.2011, 15:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(boostcoder @  22.7.2011,  15:19 Найти цитируемый пост)
причина в моцге!

Ничо подобного! Причина как раз в его отсутствии! smile 
Цитата(fish9370 @  22.7.2011,  15:17 Найти цитируемый пост)
 это кстати попытка сделать из них пряморуких..  

Это из области мифологии, к сожалению... Если у человека нет нужной хромосомы, то как задачу не упрощай - все равно найдет возможность сделать глупость. 
Нельзя упрощать до бесконечности - на упрощение\ разбиение придется потратить больше времени, чем на решение задачи самому. Так что смысла никакого, кроме 100% занятности населения. smile 
Понятно, у Гуглов может быть свое мнение на этот счет, и они имеют на это право. Как и мы.

Добавлено через 2 минуты и 50 секунд
Цитата(boostcoder @  22.7.2011,  15:19 Найти цитируемый пост)
покажи Си`шный эквивалент ;)

Да, кстати еще один аргумент в пользу шаблонов и всяких бустов. Если умудрился написать подобное выражение так, что оно скомпилировалось, то очень много шансов за то, что оно работает правильно. Простой код таких "гарантий" не дает. smile 


--------------------
...
PM   Вверх
fish9370
Дата 22.7.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(boostcoder @  22.7.2011,  14:19 Найти цитируемый пост)

#include <boost/filesystem.hpp>
#include <iostream> 
int main() {
       boost::filesystem::recursive_directory_iterator beg("."), end;
       for ( ; beg != end; ++beg ) {
              std::cout << *beg << std::endl;
       }
}


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

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

на Си я код напишу, сразу как появится время..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 22.7.2011, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



fish9370, естественно, что это уже оффтоп.
но тем не менее...

Цитата(fish9370 @  22.7.2011,  15:40 Найти цитируемый пост)
я говорил про простой код

в простом коде(самописном), как показывает практика, больше шансов нагородить ошибок, как ты недавно заметил в теме где ты написал функцию strcmp().

Цитата(fish9370 @  22.7.2011,  15:40 Найти цитируемый пост)
этот код сложен тем, что не зная буста (как в моем случае), сложно понять, что тут вообще происходит

ну вот видишь... а ты про кривизну рук ;)

Цитата(fish9370 @  22.7.2011,  15:40 Найти цитируемый пост)
уверен, что там куча подводных камней

не исключено! но плюс в том, что эти подводные камни отловятся раньше, т.к. этот код юзаю не я один. в смысле boost использую не только я. и это все к тому, что: не нужно городить то, что давно нагорожено.

Цитата(fish9370 @  22.7.2011,  15:40 Найти цитируемый пост)
но когда начинается реальный проект с кучей участников, где как вы правильно заметили, не поймешь, кто с какими руками, вот тогда и начинается танец с бубном

в реальных проекта, как правило, наказывают за рукоблудие. по причинам написанным выше.

Цитата(fish9370 @  22.7.2011,  15:40 Найти цитируемый пост)
не знаю я проектов на бусте, мне просто так кажется

к примеру: http://www.boost.org/users/uses_shrink.html

Добавлено через 5 минут
а вообще, я знаю очень мало проектов на плюсах, написанных не теми кто учился программировать по доке Qt, не использующих boost.
сейчас, благо, boost.type_traits и boost.thread перешли в стандарт. это уже в некоторой степени позволяет отвязаться от boost. но все равно многого не хватает:
asio.
mpl.
fusion.
function_types.
filesystem.
iostreams.
e.t.c...
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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