Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Трёп _ Правила именования идентификаторов в С++

Автор: trdm 3.2.2010, 1:09

Цитата(igorenja @ 2.2.2010, 13:16) *
Спасибо большое тупанул по чёрному (плюсы тока изучаю).

а классы с приставкой "T" это привет из дельфы?
Что эта приставка означает?
ПС. Терпеть не могу когда так классы зовут...

Автор: igorenja 3.2.2010, 5:26

Цитата(trdm @ 3.2.2010, 4:09) *
Цитата(igorenja @ 2.2.2010, 13:16) *
Спасибо большое тупанул по чёрному (плюсы тока изучаю).

а классы с приставкой "T" это привет из дельфы?

Привет это из C++Builder`a, но в дельфе по-моему тоже самое...

Цитата(trdm @ 3.2.2010, 4:09) *
Что эта приставка означает?


"Т" я так понимаю это сокращение от Type. Я использую для однозначного понимания что есть тип и что есть объект этого типа...

Цитата(trdm @ 3.2.2010, 4:09) *
ПС. Терпеть не могу когда так классы зовут...

пишу для себя, мне так понятнее

Автор: Litkevich Yuriy 3.2.2010, 12:13

Цитата(igorenja @ 3.2.2010, 8:26) *
"Т" я так понимаю это сокращение от Type. Я использую для однозначного понимания что есть тип и что есть объект этого типа...
В Qt принято довольно простое соглашение об именовании:
Имена классов (типов) всегда записываются с большой буквы
Имена переменных (объекты тоже переменные) и функций всегда с маленькой.
Все имена имеют форму "CamelCase", т.е. каждое слово начинается с большой буквы (для первой буквы смотри правила выше)

П.С. на практике оказалось очень удобным

П.П.С. Ещё можно почитать http://translated.by/you/tags/Coding%20Style/, имеется перевод на русский язык

Автор: Rocky 3.2.2010, 18:32

Я вот классы всегда называю с большой буквы С. Потому что qt-ные начинаются с Q. Хотя может это последний пережиток, оставшийся у меня после MFC.
T - если struct.
E - если enum.
Да и вообще igorenja если только начинаете С++ изучать есть такая Венегрская нотация. Советую почитать.

Автор: Litkevich Yuriy 3.2.2010, 20:30

Цитата(Rocky @ 3.2.2010, 21:32) *
есть такая Венегрская нотация. Советую почитать.
категорически не советую это читать. Венгерская нотация - то как не надо делать.

Автор: SABROG 3.2.2010, 20:47

Цитата(Litkevich Yuriy @ 3.2.2010, 20:30) *
Цитата(Rocky @ 3.2.2010, 21:32) *
есть такая Венегрская нотация. Советую почитать.
категорически не советую это читать. Венгерская нотация - то как не надо делать.


Сам Bjarne Stroustrup в FAQ'e по C++ не советует её использовать. В этом плане меня очень расстроил исходный код в последней книге http://torrents.ru/forum/viewtopic.php?t=2605735. Он повсеместно использует эту нотацию и в результате его код сложно читать. Кроме того венгерская нотация мне самому создавала трудности с переменными. Т.к. название типа как бы дублируется в имени переменной, то при смене типа переменной приходилось её тоже переименовывать и искать места во всех исходниках, где она могла бы употребляться. На тот момент небыло фичи QtCreator'a, чтобы переименовывать один раз и оно бы затрагивало все исходники.

Автор: AD 4.2.2010, 14:34

Мне тоже не нравится венгерская нотация. Кстати к ее именованию во время пользования MFC, практически, так и не привык. А вот к Qt-шным правилам именования привык быстро. Правда, вот хотел спросить, нормальны ли следующие имена функций:

Цитата
takeLoader
indexDirectory
isDirListEmpty
addChartNameToList
?
Все время имеется чувство, что названия чересчур длинные или же не очень удачные... Для меня с названиями - беда просто. В 8-10 символов название функций удается поместить крайне редко.

Автор: Litkevich Yuriy 4.2.2010, 17:55

Цитата(AD @ 4.2.2010, 17:34) *
В 8-10 символов название функций удается поместить крайне редко.
В данный момент я склоняюсь к тому, что не нужно жёстко определять длину имени. Хотя краткое удобнее. Я пишу код в программерском блокноте, автодополнения нет. Поэтому мне важно чтобы названия были легко вспоминаемые. И интуитивные.
Немного свыкнувшись со словами используемыми в Qt, можно ожидать определённое название. Например, по твоим названиям что я ожидаю:
takeLoader - берёт какой-то загрузчик, вынимая его из чего-то, т.е. его потом нужно будет удалять вручную или куда-то вставить, чтоды удалился сам
indexDirectory - непонятно, что это такое, какой индекс каталога
isDirListEmpty - "список каталогов пуст?", по моему избыточное название
addChartNameToList - "добавить имя диаграммы в список", по моему избыточное название

Если не знать название класса то сложно сказать точное значение. А по поводу двух последних похоже что в имени функции имеется дубль имени класса

Автор: Rocky 4.2.2010, 19:13

Я другого мнения =). Изменил тип - ctrl+shift+h и заменил все имена на нужные, делов на пол-секунды. Но спорить смысла нет, кому как удобнее. в qt разработчики вообще одной буквой обозначают переменные. Мне например неясно какого типа переменная "o" и т. п. Ладно, это все лирика =)


А... топик оказывается в трепе и есть =))))

Автор: AD 4.2.2010, 19:45

Цитата(Litkevich Yuriy @ 4.2.2010, 17:55) *
Например, по твоим названиям что я ожидаю:
takeLoader - берёт какой-то загрузчик, вынимая его из чего-то, т.е. его потом нужно будет удалять вручную или куда-то вставить, чтоды удалился сам
indexDirectory - непонятно, что это такое, какой индекс каталога
isDirListEmpty - "список каталогов пуст?", по моему избыточное название
addChartNameToList - "добавить имя диаграммы в список", по моему избыточное название

Если не знать название класса то сложно сказать точное значение. А по поводу двух последних похоже что в имени функции имеется дубль имени класса

Да я понимаю, что некоторые названия не сократить. :) Дело не в этом. Первые два - это просто показ того, что не все имена функций у меня кривые. :) Вторая функция именно то и делает, что написано. Определяет индекс каталога, который был выбран. А вот изменение последних двух имен я бы сделал. Но не знаю как лучше! Дело в том, что в классе, где есть функция isDirListEmpty, isEmpty уже есть и относится к другому списку (в классе их два).

Да.... Название класса - BaseLoader.

P.S. Юра, спасибо за критический разбор и отклик. Буду очень благодарен за дальнейшее обсуждение. Поправить кривые название - большая польза!

Автор: Litkevich Yuriy 4.2.2010, 20:47

Цитата(Rocky @ 4.2.2010, 22:13) *
в qt разработчики вообще одной буквой обозначают переменные. Мне например неясно какого типа переменная "o"
так поступают, когда какую-то переменную нужно часто использовать, соответственно хотят сократить кол-во нажимаемых клавиш на клавиатуре. И так как не зная смысла переменной, а не только её типа, её не получится использовать. По этому посмотреть на то как она объявлена и инициализирована становится необходимостью. Т.е. одно только знание о типе переменной мало чего даёт.

Цитата(Rocky @ 4.2.2010, 22:13) *
Но спорить смысла нет, кому как удобнее.
спорить действительно смысла нет, т.к. спор - удел баранов. А вот по обсуждать полезно. Если бы существовал для языка Си++ идеальный вариант именования, то все остальные уже были бы забыты.

Цитата(AD @ 4.2.2010, 22:45) *
Дело в том, что в классе, где есть функция isDirListEmpty, isEmpty уже есть и относится к другому списку (в классе их два).
ябы их логически разделил. Например, в классе объявил тип DirList
typedef QList<QDir> DirList;

сделал бы функцию возвращающую DirList, например, dirList(), а у списка бы спрашивал пуст он или нет, например так:
bool empty = loader->dirList()->isEmpty()

Автор: Iron Bug 5.2.2010, 17:47

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

Автор: AD 5.2.2010, 17:55

Цитата(Iron Bug @ 5.2.2010, 17:47) *
не пойму смысла спора.
маленькие-большие имена... остроконечники и тупоконечники :) да какая разница?

Так вроде бы и спора особого уже и нет. Конечно, главное, чтобы потом был понятен код - остальное неважно. Но вот лично мне интересно научиться более правильному именованию, так что-ли сказать.

Автор: Iron Bug 5.2.2010, 18:11

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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)