Текущий архив: 2005.10.09;
Скачать: CL | DM;
Вниз
Поговорим об именах или что в имени тебе моем... Найти похожие ветки
← →
Игорь Шевченко © (2005-09-15 12:29) [0]Читая ветку http://delphimaster.net/view/14-1126765256/ решил найти старый анекдот про программиста, которому сказали, что имена в программе должны быть длинными и самоидентифицирующимися. С тех пор он каждую переменную называл
ДлинноеСамоидентифицирующееИмя1,
ДлинноеСамоидентифицирующееИмя2
и т.д.
Анекдот не нашел, но нашел любопытную статью
http://www.dklab.ru/chicken/nablas/15.html
В которой есть такая фраза:
"Уж не знаю, что сподвигло авторов вводить функции вида GetWindowModuleFileName, когда точно то же самое можно сказать несколько короче: getWinModFName. Так как слово Window, опять же, является очень распространенным, никто и не заподозрит в Win ничего иного. Более того, вполне можно было бы сократить его и до одной-единственной буквы W без потери читабельности. "
Насчет сокращений очень неплохо высказался Е.В.Лишак в "Записках парасистемного программиста":
" Кто не знает утилиты IEBPTPCH ОС ЕС? Вряд ли
кому-нибудь из пользователей или системщиков, обслуживающих
ОС ЕС удалось без нее обойтись. Хуже всего приходится тем
из них, кто встречается с ней реже, чем раз в две недели.
Потому что, несмотря на всю скудность действий, которые
она может выполнить, язык, при помощи которого приходится
управлять этой программой, по своей красоте, сложности и
многогранности, количеству подтекстов слегка смахивает на
язык великого Шекспира.
....
Но и это не все. Исходя из каких соображений имена
этих операндов выбраны такими, а не MAXFIELD и MAXNMS,
например? Ну почему в первом операнде английское слово
FIELD сокращается с выпусканием гласных и берется в
множественном числе, а в другом слово NAME не сокращается и
берется в единственном числе? Только вчера я пользовался
этой утилитой в последний раз после месячного перерыва. С
третьей попытки мне удалось, наконец, получить от нее то,
что я хотел (а ведь я знал уже, с чем имею дело), а теперь
я уже не помню, правильно ли я пишу операнды MAXGROUPS и
MAXLINE. Может, надо MAXGRP и MAXLINES?"
.....
Когда мы садимся в лифт, то мы нажимаем кнопку нужного
нам этажа. Можно даже представить себе лифт, где два
одинаковых ряда кнопок с одними и теми же номерами этажей,
и лифт тронется, лишь если нажаты обе кнопки с одним и тем
же номером. Но очень трудно представить себе лифт, в
котором стоит дисплей, и мы должны набрать на его
клавиатуре фразу на французском языке, количество гласных
букв в которой, деленное на тринадцать, даст в остатке
номер нашего этажа. Вряд ли нас обрадует такой лифт, даже
если в нем на полке будет стоять французско-русский
словарь. Так почему же мы так часто делаем подобные
программные системы?"
В связи с этим вопрос - а как вы считаете, какие имена должны быть в программах - длинные и самоидентифициющиеся или сокращенные ?
← →
Ega23 © (2005-09-15 12:34) [1]В связи с этим вопрос - а как вы считаете, какие имена должны быть в программах - длинные и самоидентифициющиеся или сокращенные ?
Читабельные они должны быть. При этом обязательно нужно соглашение о наименованиях. Я как-то blackman"у приводил выдержку из нашего внутреннего документа, описывающего семантику проекта.
← →
boriskb © (2005-09-15 12:35) [2]Игорь Шевченко © (15.09.05 12:29)
длинные и самоидентифициющиеся или сокращенные ?
Без разницы.
Всё равно должно быть:
1. Единообразие
2. Коментарий при объявлении
← →
boriskb © (2005-09-15 12:36) [3]Игорь Шевченко © (15.09.05 12:29)
Насчет сокращений очень неплохо высказался Е.В.Лишак
А он не только по поводу сокращений хорошо высказался.
Для меня он гуру в свое время :)
← →
TUser © (2005-09-15 12:37) [4]Короткие и самоидентифицирующиеся хотелось бы :)
← →
Игорь Шевченко © (2005-09-15 12:39) [5]boriskb © (15.09.05 12:36) [3]
А ты его знаешь ? :)
← →
Bless © (2005-09-15 12:39) [6]В связи с этим вопрос - а как вы считаете, какие имена должны быть в программах - длинные и самоидентифициющиеся или сокращенные ?
Имхо, по возможности сокращенные и самоидентифицирующиеся. Но уж если стоит выбор или-или... Имена функций и глобальных переменных, опять же имхо, должны быть самоидентифицирующимися, пусть даже в ущерб краткости. А вот имена локальных переменных - по обстоятельствам. Имхо.
← →
Sandman29 (2005-09-15 12:41) [7]Имена должны быть понятны без контекста, так как вникание в контекст требует времени и сил. Поэтому никаких GetWFldNm, а только полностью - GetWindowFieldName, даже если получается очень длинно.
← →
Ega23 © (2005-09-15 12:42) [8]Короче, как говаривал наш ротный - "должно быть безобразно, но - единообразно."
← →
boriskb © (2005-09-15 12:42) [9]Игорь Шевченко © (15.09.05 12:39) [5]
А ты его знаешь ? :)
Переписывался даже :)
← →
Adder © (2005-09-15 12:46) [10]
> В связи с этим вопрос - а как вы считаете, какие имена должны
> быть в программах - длинные и самоидентифициющиеся или сокращенные
> ?
Если работа в группе - имена и оформление должны соответствовать соглашению между участниками группы.
Если только для себя - так, как удобнее самому.
Обычно делаю сокращенными только имена локальных переменных (например, счетчики - i, j, k) и имена процедур и функций, не выходящие за пределы модуля (в секции implementation).
Все остальные - "длинные и самоидентифицирующиеся". Если чувствую, что этого не достаточно - добавляется комментарий.
← →
begin...end © (2005-09-15 12:48) [11]Кому как, а мне GetWindowModuleFileName более понятно, чем getWinModFName.
← →
Думкин © (2005-09-15 12:52) [12]> Adder © (15.09.05 12:46) [10]
Ну вот. И я также.
← →
Гаврила © (2005-09-15 12:54) [13]
> getWinModFName
Для меня это непонятно. Именно - F и mod
Что такое Mod ? Mode?
с F вообще неясно
Я считаю, что можно вводить аббривеатуры в ряде случаев
например
TObjectSpaceItem - TOSItem
TObjectSpaceItemList - TOSItemList
при этом они должны быть полностью единообразны везде, и документированы
← →
ZeroDivide © (2005-09-15 13:00) [14]Длинные и непонятные :)
... А если серьезно: то максимально оптимизированые по 2-м параметрам:
1. Длинна.
2. Точность с которой название отражает суть.
Приоритет за пунктом 2.
← →
Igorek © (2005-09-15 13:03) [15]Имена должны быть читабельные в контексте. Если для этого надо имя делать длинным - то это недостаток дизайна системы.
← →
Игорь Шевченко © (2005-09-15 13:04) [16]Гаврила © (15.09.05 12:54) [13]
> Я считаю, что можно вводить аббривеатуры в ряде случаев
>
> например
В свое время (10 лет назад) были попытки внедрить в нашем сообществе венгерскую нотацию. Префиксы там разные и т.д.
вижу в тексте программы объявление:
var
lpTotal: Integer;
lpFOP: string[2];
Согласно той самой венгерской нотации префикс lp означает long pointer - дальный указатель, спрашиваю у автора, куда указывают его переменные,
автор на голубом глазу отвечает: lp - это локальная переменная.
← →
Юрий Зотов © (2005-09-15 13:08) [17]> имена в программе должны быть длинными и самоидентифицирующимися
Если в этой фразе слово "длинными" заменить на слово "англоязычными", то она станет правильной.
← →
Гаврила © (2005-09-15 13:10) [18]
> lp - это локальная переменная.
LOL
PS
На прошлой работе столкнулся с венгерской нотацией
крови она мне много попортила.... Не люблю ее
← →
Игорь Шевченко © (2005-09-15 13:11) [19]Гаврила © (15.09.05 13:10) [18]
> На прошлой работе столкнулся с венгерской нотацией
> крови она мне много попортила.... Не люблю ее
Я тоже не люблю, но 10 лет назад я был моложе, следовательно, опыта было меньше :) Вроде как оправдание
← →
Юрий Зотов © (2005-09-15 13:17) [20]Венгерская нотация, как и все остальное, будучи употребленной в разумном количестве, в нужном месте и в нужное время - весьма полезна. Примеров в VCL полно (скажем, едва ли не все перечислимые типы).
Если же некий программист полагает, что префикс lp означает локальную переменную, то это у него со знаниями беда, а вовсе не повод отказываться от венгерской нотации совсем.
← →
Mystic © (2005-09-15 13:32) [21]Обычно использую длинные имена + несколько принятых в проекте сокращений/аббревиатур.
При кодиовании математики сокрашения использую чаще, потому как формула зачастую уже несет в себе больше содержательной информации, чем имя. И длинные имена затрудняют чтение формулы. Ну и в таких случаях иногда просто невозможно подобрать адекватное имя, короче 128 символов :)
Ну и иногда выкидываю несколько вспомогательных слов из идентификатора, если достаточно контекста.
← →
DiamondShark © (2005-09-15 13:53) [22]Наконец-то появились средства разработки, полноценно поддерживающие интернационализацию.
Наконец-то можно смело и без проблем использовать идентификаторы
КодКлиента
НазваниеТовара
ОстатокНаСкладе
КодЮридическогоЛица
Если кто-то скажет, что идентификаторы должны быть английскими, пусть сделает себе сепуку.
← →
Игорь Шевченко © (2005-09-15 13:59) [23]Юрий Зотов © (15.09.05 13:17) [20]
> Венгерская нотация, как и все остальное, будучи употребленной
> в разумном количестве, в нужном месте и в нужное время -
> весьма полезна. Примеров в VCL полно (скажем, едва ли не
> все перечислимые типы).
Точнее, только перечислимые
← →
boriskb © (2005-09-15 14:01) [24]DiamondShark © (15.09.05 13:53) [22]
идентификаторы должны быть английскими
Ну может и не должны, но для меня крайне желательны.
Привычка. Например не без труда разбираю 1С проги именно из-за языка.
← →
Igorek © (2005-09-15 14:02) [25]
> Если кто-то скажет, что идентификаторы должны быть английскими,
> пусть сделает себе сепуку.
(.. мысленно - "а если заказчик из-за бугра хочет код?.." )
:)
← →
MeF Dei Corvi © (2005-09-15 14:02) [26]
> префикс lp означает локальную переменную
Интересно, lp = local peremennaya?
При наличии удобной IDE использую длинные и понятные названия (а в VS2005 ещё и описание к ним), без неё программы не пишу :)
← →
Игорь Шевченко © (2005-09-15 14:03) [27]Юрий Зотов © (15.09.05 13:17) [20]
"В Вашем приложении могут быть сотни и тысячи переменных. Чтобы избежать путаницы и долгих размышлений при отладке программы типа: "A[i,j] что за массив и чего он здесь вообще делает?" была предложена и успешно используется стройная система именования переменных и других объектов программы.
По родине предложившего эту систему программиста она названа Венгерская нотация. Система именования очень проста. Прилагаемо к VFP, имя переменной начинается с 2-х буквенного префикса, 1-я буква которого область действия переменной, 2-я буква ее тип. То есть:
lc - (local character) локальная символьная
ld - (local date) локальная типа дата
gn - (global numeric) глобальная числовая
ga - (global array) глобальный массив и так далее"
Я подобного в VCL не наблюдаю.
← →
Германн © (2005-09-15 14:05) [28]А я вот до сих пор пользуюсь ассемблером для 8х51 процессора выпуска 1991 года. Потому, что он единственный, который поддерживает локальные метки, других не нашел. А придумывать уникальные имена для меток терпежу не хватает. :(
← →
boriskb © (2005-09-15 14:09) [29]Юрий Зотов ©
Игорь Шевченко ©
Никогда не находил венгерскую нотацию ни удобной, ни нужной.
Возможно потому что не работал в больших командах.
← →
DiamondShark © (2005-09-15 14:12) [30]
> Например не без труда разбираю 1С проги именно из-за языка
А в чём проблема-то? Неужели, будь они написаны подобным же суржиком, но на основе английской лексики и латинским алфавитом, было бы легче? Не верю!
Те же борландовские идентификаторы легко читаются не потому что написаны по-английски, а потому что написаны полными словами.
Неужели русские полные слова сложнее для восприятия?
Мне приходилось иметь дело с исходниками французских и польских программистов. Никаких комплексов по поводу языка они не испытывают, пользуются родным. Правда, им с алфавитом повезло.
Никаких причин, кроме тяжёлого наследия времён семибитной кодировки середины прошлого века, для неиспользования родного языка я не вижу.
← →
КаПиБаРа © (2005-09-15 14:14) [31]DiamondShark © (15.09.05 13:53) [22]
Вот дадут вам доработать программу, а исходники на итальянском или китайском.
Посмотрим кто сипуку будет делать
← →
DiamondShark © (2005-09-15 14:14) [32]
> а если заказчик из-за бугра хочет код?..
Пусть учит албанский.
← →
boriskb © (2005-09-15 14:17) [33]DiamondShark © (15.09.05 14:12) [30]
Никаких причин, кроме тяжёлого наследия времён семибитной кодировки середины прошлого века, для неиспользования родного языка я не вижу.
Тебе повторить? :))
boriskb © (15.09.05 14:01) [24]
Привычка.
По дурацки смотрится. Сам язык на основе английского, а идентификаторы на кирилице :)
Второе. Может, если б я был 1с-программистом, то привык бы. Даже наверняка бы привык. Но я не он :) Везде латиница, а здесь прямо в глаза бросается.
Впрочем - каждый сам себе хозяин :)
← →
Jeer © (2005-09-15 14:18) [34]Идеями венгерской нотации пользуюсь достаточно часто для экземпляров сложных классов:
Префиксы:
iir* - фильтр IIR
fir* - фильтр FIR
isq* - интеграл по прямоугольникам
ipar* - интеграл по Симпсону
lcg* - генератор случ. чисел типа LCG
regl*, regp*, regh* - виды регрессии
sgSin*, sgSq*, sgTr*, sgSaw - виды генераторов сигналов
qu* - запросы к базам
ar* - встроенные массивы
lst*, dic*, col* - списки, словари, коллекции
snd* - звуковые
и тп.
Поскольку это введено в практику давно, то не возникает затруднений в чтении.
P.S.
Т.к. - монописец, то все равно как это и кому.
← →
DiamondShark © (2005-09-15 14:24) [35]
> Вот дадут вам доработать программу, а исходники на итальянском
> или китайском.
Не будут.
Исходники будут на Паскале. Ну или, не приведи Аллах, на языке с крестами (тут уже ничего не поможет, язык по природе своей write-only).
Я имел дело с иноязычными исходниками. Говорю же: никаких комплексов по поводу родного языка неанглоязычные программисты не испытывают.
И вообще, с демагогией -- фсад. Речь о том, как писать самому и в сообществе родноязычных программистов. При чём тут "пришлют исходники"?
Как неиспользование мной родного языка защитит меня от "присылания исходников"?
Надглоточный ганглий хоть иногда надо включать...
← →
DiamondShark © (2005-09-15 14:30) [36]
> Привычка.
На привычку есть отвычка.
> По дурацки смотрится
Кому родной язык смотрится по-дурацки, можно рекомендовать смену страны проживания.
← →
Igorek © (2005-09-15 14:34) [37]
> И вообще, с демагогией -- фсад. Речь о том, как писать самому
> и в сообществе родноязычных программистов. При чём тут "пришлют
> исходники"?
> Как неиспользование мной родного языка защитит меня от "присылания
> исходников"?
> Надглоточный ганглий хоть иногда надо включать...
Попробую включить..
Если я привыкну в "сообществе" писать на своем языке, то будет тяжело перейти на англ. Собственно английский считается всеобщим языком для выражения смысла кода. Я уж молчу про доки. Потому не вижу весомых аргументов писать на своем.
← →
КаПиБаРа © (2005-09-15 14:34) [38]DiamondShark © (15.09.05 14:24) [35]
Как неиспользование мной родного языка защитит меня от "присылания исходников"?
Не тобой, а никем. То что все пишут на одном языке гарантирует, что не придется работать с исходниками в которых переменные имеют татаро-монгольские имена.
DiamondShark © (15.09.05 14:24) [35]
Речь о том, как писать самому и в сообществе родноязычных программистов
Я не телепат. Не могу угадать о чем вы еще умалчиваете.
← →
boriskb © (2005-09-15 14:36) [39]DiamondShark © (15.09.05 14:30) [36]
:)))
Кто там против демагогии выступал? :)
Не напомнишь? :)))))
← →
Игорь Шевченко © (2005-09-15 14:37) [40]DiamondShark © (15.09.05 14:24) [35]
> (тут уже ничего не поможет, язык по природе своей write-
> only).
А также Java, C# и Object Pascal, ныне Delphi language :)
Страницы: 1 2 3 вся ветка
Текущий архив: 2005.10.09;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.013 c