Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.59 MB
Время: 0.038 c
14-1124903150
Aldor
2005-08-24 21:05
2005.10.09
Ссылку на гимн Украины (mp3) кто-нибудь подскажет?


3-1124719894
M@rlin
2005-08-22 18:11
2005.10.09
Не выполняется процедура SQL из Delphi


2-1125304120
-=snoop=-
2005-08-29 12:28
2005.10.09
не работает select


1-1127203933
_BIM
2005-09-20 12:12
2005.10.09
Подскажите как создать каталог.


3-1124864767
Jeka
2005-08-24 10:26
2005.10.09
бд через инет..