Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Поговорим об именах или что в имени тебе моем...   Найти похожие ветки 

 
Игорь Шевченко ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.017 c
6-1118755977
Vulko
2005-06-14 17:32
2005.10.09
Получить картинку (файл) с сервера...


1-1126785094
Новичок1
2005-09-15 15:51
2005.10.09
Здравствуйте , подскажите плз как изменить цвет кнопки


10-1105457879
S@shka
2005-01-11 18:37
2005.10.09
Show и Hide COM-Server


1-1127126173
Николай1
2005-09-19 14:36
2005.10.09
TreeView назначить событие на конкретный узел


3-1122478292
msguns
2005-07-27 19:31
2005.10.09
Вложенный запрос к представлению





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский