Главная страница
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 :)


 
DiamondShark ©   (2005-09-15 14:49) [41]


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

А они и так имеют.
Какая мне разница на каком они языке, если он мне чужой?


 
DiamondShark ©   (2005-09-15 14:56) [42]


> А также Java, C# и Object Pascal, ныне Delphi language :)

Не надо смешивать божий дар с яичницей.
С какой целью вы замазали в этоту сомнительную компанию Паскаль (пусть даже он и Обджект)?

А что касается Джавы и Ц№, то они намного ближе именно к паскалю, несмотря на уродливые родимые пятна, доставшиеся им в наследство исключительно по причине потворства извращённому мышлению сонмища маньяков.

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


 
КаПиБаРа ©   (2005-09-15 15:01) [43]

Удалено модератором


 
Игорь Шевченко ©   (2005-09-15 15:03) [44]

DiamondShark ©   (15.09.05 14:56) [42]


> С какой целью вы замазали в этоту сомнительную компанию
> Паскаль (пусть даже он и Обджект)?


по причине сходства языков, точнее, их возможностей.


 
DiamondShark ©   (2005-09-15 15:04) [45]

Удалено модератором


 
КаПиБаРа ©   (2005-09-15 15:04) [46]

Удалено модератором


 
DiamondShark ©   (2005-09-15 15:11) [47]


> по причине сходства языков, точнее, их возможностей.

Сходство возможностей -- это лишь бледная тень украденных и извращённых идей Великого Вождя и Учителя.

Читайть
http://www.inr.ac.ru/~info21/
До полного просветления.


 
Игорь Шевченко ©   (2005-09-15 15:13) [48]

DiamondShark ©   (15.09.05 15:11) [47]

А вот и нифига. Все идеи из Алгола.


 
Иксик ©   (2005-09-15 15:13) [49]

Удалено модератором


 
DiamondShark ©   (2005-09-15 15:14) [50]

Удалено модератором


 
IceBeerg ©   (2005-09-15 15:14) [51]

DiamondShark ©   (15.09.05 13:53) [22]
var
ТестПеременной:String;

[Error] Unit1.pas(53): Illegal character in input file: "Т" ($D2)
[Error] Unit1.pas(53): Illegal character in input file: "н" ($ED)
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"


 
boriskb ©   (2005-09-15 15:20) [52]

Игорь Шевченко ©   (15.09.05 15:13) [48]
Все идеи из Алгола.


Вот бы на какую тему "потрепаться" :))


 
DiamondShark ©   (2005-09-15 15:20) [53]


> Игорь Шевченко ©   (15.09.05 15:13) [48]
>
> А вот и нифига. Все идеи из Алгола.

Да. Но лишь потому что Учитель смог разглядеть в стихийно возникшем среди множества других языке великий потенциал и поставить его на научную основу.


> Иксик ©   (15.09.05 15:13) [49]
>
> Немного оффтопик, но все же, вот ты все время на c/cpp наезжаешь,
>  а почему?

А почему вы спрашиваете?

Я не наезжаю. Я конструктивно критикую.


 
КаПиБаРа ©   (2005-09-15 15:21) [54]

Удалено модератором


 
DiamondShark ©   (2005-09-15 15:23) [55]


> IceBeerg ©   (15.09.05 15:14) [51]

Это неправильные пчёлы.


 
Игорь Шевченко ©   (2005-09-15 15:24) [56]

IceBeerg ©   (15.09.05 15:14) [51]

"Появилась возможность использовать в именах типов и переменных символы Unicode.
Запись вида
type
 Работник = record
   Фамилия: string;
   Имя: string;
   Отчество: string;
   ДатаРождения: TdateTime;
   Должность: string;
 end;




выглядит понятнее, чем
Rabotnik = record
  Familija: string;
  Imya: string;
  Ochestvo: string;
  DataRogdenija: TdateTime;
  Dolgjnost: string;
end;

"

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1091


 
Андрей Жук ©   (2005-09-15 15:29) [57]


>
> Я не наезжаю. Я конструктивно критикую.

Ты просто не умеешь его готовить.
Допустим у нас есть очередь разнородных объектов. Чтобы в с++ сказать, сколько объектов какого типа, о котором мы можем узнать вызвав метод GetType(), мне нужно всего лишь написать

 map <string,int> DequeInfo;
 map <string,int>::iterator Iter;
 for (Find=d.begin();Find!=d.end();++Find)
    DequeInfo[(*Find)->GetType()]++;
 cout<<DequeInfo;
(правда еще нужно переопределить вывод для такого типа)

а сколько строк мне придется написать в Pascal?


 
Игорь Шевченко ©   (2005-09-15 15:37) [58]


> а сколько строк мне придется написать в Pascal?


for Find in d do


 
Ega23 ©   (2005-09-15 15:38) [59]

Гм...
Как раз вчера перед сном читал статью Вирта про языки.
Очень познавательно...


 
Ega23 ©   (2005-09-15 15:39) [60]

Ega23 ©   (15.09.05 15:38) [59]

А в свете вчерашнего топика об интервью со Страуструпом (если это он) - так вообще шикарно статья пролетела...


 
DiamondShark ©   (2005-09-15 15:40) [61]


> а сколько строк мне придется написать в Pascal?

Зависит от того, какую библиотеку ты мне дашь.

Сколько строк уже написано в STL?


 
Игорь Шевченко ©   (2005-09-15 15:40) [62]

DiamondShark ©   (15.09.05 15:20) [53]

Вы знаете, Дима, при всем моем признании Учителя, как авторитета в программистской науке, его бесконечное пинание С(++) уже несколько достало и напоминает религиозный фанатизм.


 
Андрей Жук ©   (2005-09-15 15:46) [63]


> Сколько строк уже написано в STL?

STL - часть СТАНДАРТА языка С++. Т.е. будет в поставке любого компилятора старше 1998 года.


 
DiamondShark ©   (2005-09-15 16:02) [64]


> Игорь Шевченко ©   (15.09.05 15:40) [62]

Так по делу же пинание.


 
Иксик ©   (2005-09-15 16:06) [65]


> DiamondShark ©   (15.09.05 15:20) [53]
> > Иксик ©   (15.09.05 15:13) [49]
> >
> > Немного оффтопик, но все же, вот ты все время на c/cpp
> наезжаешь,
> >  а почему?
>
> А почему вы спрашиваете?
>
> Я не наезжаю. Я конструктивно критикую.

Просто интересно твое мнение. Правда. :)


 
Igorek ©   (2005-09-15 16:06) [66]


> STL - часть СТАНДАРТА языка С++. Т.е. будет в поставке любого
> компилятора старше 1998 года.

Да ну? Ты не перепутал STL и std?


 
Андрей Жук ©   (2005-09-15 16:11) [67]

Не перепутал


 
paul_k ©   (2005-09-15 16:44) [68]

Игорь Шевченко ©   (15.09.05 14:03) [27]
а в Power Builder  на каждом шагу. и когда вижу преффикс вида as_ почти в ступор впадаю


 
Игорь Шевченко ©   (2005-09-15 16:54) [69]

DiamondShark ©   (15.09.05 16:02) [64]


> Так по делу же пинание.


Может быть, ему стоит на APL переключиться ? Там гораздо больше материала для пинания. Или на Фортран с Коболом...
У меня складывается впечатление, что ему просто хочется свой Оберон продвинуть таким вот образом. Отсюда, знаете ли, осадок неприятный получается. Может, ложки и не он украл, но осадок остался...


 
Eraser ©   (2005-09-15 17:28) [70]


> DiamondShark ©   (15.09.05 13:53) [22]
>
> Наконец-то появились средства разработки, полноценно поддерживающие
> интернационализацию.
>
> Наконец-то можно смело и без проблем использовать идентификаторы
>
> КодКлиента
> НазваниеТовара
> ОстатокНаСкладе
> КодЮридическогоЛица
>
> Если кто-то скажет, что идентификаторы должны быть английскими,
>  пусть сделает себе сепуку.


Вот только, к сожалению, стандартные классы в .NET на русский никто не перевёл. А программа, состоящая наполовину из русских, наполовину из английских слов смотриться убого, читается ещё хуже... да и раскладку постояно менять влом.
Что касается латиницы (OstatokNaSclade) - это вообще извращение, имхо.

Сипуку делать не стал, уж извините )


> Игорь Шевченко ©   (15.09.05 14:03) [27]
>
> lc - (local character) локальная символьная
> ld - (local date) локальная типа дата
> gn - (global numeric) глобальная числовая
> ga - (global array) глобальный массив и так далее"

Такое использование венгерской конвенции, понятное дело, не приемлемо.
Удобнее всего её использовать для простых типов в глобальных переменых (именно для идентификации типа переменой!).
Одно время применял её почти повсеместно, сейчас стараюсь по-возможности не заграмождать код, полностью отказываться не стОит.
Всё имхо.


 
DiamondShark ©   (2005-09-15 17:34) [71]


> а в Power Builder  на каждом шагу. и когда вижу преффикс
> вида as_ почти в ступор впадаю

О! ПоверБилдер -- это пестня...

А что?
as_ -- argument string
il_ -- instance long
li_ -- local integer

Надо же. Помню.
Даже писали:

int ii_i
for ii_i = 0 to 10


> Может быть, ему стоит на APL переключиться ?

А на APL пишется много софта? APL массово преподают в учебных заведениях? APL толкают как самый кульный и рульный язык, который для крутых перцев, а кто на нём не пишет, тот ламер позорный?
Да ладно натягивать-то...


> У меня складывается впечатление, что ему просто хочется
> свой Оберон продвинуть таким вот образом.

Да, хочется. И что? Это низкое и подлое желание?
Кстати, за Оберон он денег не имеет, лицензий не продаёт, за копирайтом не охотится. Сидит себе на профессорском жалованьи и мечтает осчатливить мир. И искренне удивляется, что мир не спешит осчастливливаться.
Мир занят "сохранением инвестиций". Выливающееся на деле в огромные непроизводительные затраты.


 
Игорь Шевченко ©   (2005-09-15 17:36) [72]

DiamondShark ©   (15.09.05 17:34) [71]


> APL толкают как самый кульный и рульный язык, который для
> крутых перцев, а кто на нём не пишет, тот ламер позорный?
>


А С++ значит толкают ? :) Тогда Вирт занимается аналогичным толканием своего оберона :)


 
TUser ©   (2005-09-15 17:58) [73]

> Так по делу же пинание.

Авторитет его, я конечно тоже признаю безусловно и навсегда. Вот только, пинание это на непонятных мне агрументах строится. Какая разница писать dec или --?


 
Igorek ©   (2005-09-15 19:48) [74]


> Какая разница писать dec или --?

Се-ман-ти-ка текста.


 
Sergey_Masloff   (2005-09-15 20:42) [75]

boriskb ©   (15.09.05 14:09) [29]
>Никогда не находил венгерскую нотацию ни удобной, ни  нужной.
>Возможно потому что не работал в больших командах.
Потому что не писал больших программ на ассемблере, скорее ;-) (я тоже не писал это не гнутье пальцев) Насколько понимаю все эти lp и lpsz нужны были потому что очень большая часть Windows была написана на ассемблере и понять прямо из объявления что это за хрень было весьма трудно.

По существу естественно i j k для локальных переменных
Для всего остального более-менее длинные но чуть сокращая. Впрочем, без проблем подстраиваюсь под правила общие для команды - надо будет lpsz писать напишу без проблем, надо маленькое сочинение в имени каждой переменной - напишу. Вот такая подлая гибкая натура.


 
Igorek ©   (2005-09-15 22:08) [76]


> Потому что не писал больших программ на ассемблере, скорее
> ;-)

На ассемблере большой контекст.


 
Игорь Шевченко ©   (2005-09-15 22:14) [77]

Sergey_Masloff   (15.09.05 20:42) [75]


> Потому что не писал больших программ на ассемблере, скорее


Я писал (типа пальцы гну :)), не увидел необходимости указывать тип переменной в имени (который в программе на ассемблере вообще-то не сильно существен).

Более того, видел очень хорошо читаемые программы на ассемблере, немаленькие программы (AdaScript, например), там необходимость типа переменной из имени не проистекала :)


 
Nick Denry ©   (2005-09-15 23:18) [78]

DiamondShark ©   (15.09.05 14:56) [42]

Жесток... (с) А.П.

А вообще развернули тему круто.... прям проникаешься...


 
Юрий Зотов ©   (2005-09-16 01:16) [79]

> DiamondShark ©   (15.09.05 13:53) [22]

Я не возражаю, можете использовать имена типа КоличествоВодыВЧайнике. И пусть Вам будет счастье.

Но вот беда - не будет ведь... И кому тогда придется делать сепуку... непонятно...

Но это уже дело Ваше. А я не против - вперед.

==========================

Если непонятно, что же я тут такого сверхумного загнул, предлагаю всерьез поразмыслить над словосочетанием "вульгаризация программирования".

И к чему она ведет...


 
Igorek ©   (2005-09-16 10:05) [80]

> Юрий Зотов ©   (16.09.05 01:16) [79]
> Я не возражаю, можете использовать имена типа КоличествоВодыВЧайнике.
>  И пусть Вам будет счастье.


Нет, думаю Дима прав в том, что нельзя категорические запрещать так писать. Ведь родной язык - это язык на котором мы думаем.
Поначалу непривычно, но.. долой догмы! :)
Т.е. если писать только для себя или в коллективе людей для которых этот язык родной то конечно можно. Даже нужно. Особенно если проект солидный и сложный.
А если говорить о таком болоте как "ИТ-индустрия", то рулит англ. И в коде и в доках.

Вообще это далеко не такая простая тема как кажется. Тут могли бы сказать свое слово и психологи и семиотики и много других..


> предлагаю всерьез поразмыслить над словосочетанием "вульгаризация
> программирования".

Слишком размытый термин. Понимать можно что угодно.


 
Defunct ©   (2005-09-16 10:34) [81]

Игорь Шевченко ©   (15.09.05 14:03) [27]

По родине предложившего эту систему программиста она названа Венгерская нотация. Система именования очень проста. Прилагаемо к VFP, имя переменной начинается с 2-х буквенного префикса, 1-я буква которого область действия переменной, 2-я буква ее тип. То есть:

lc - (local character) локальная символьная
ld - (local date) локальная типа дата
gn - (global numeric) глобальная числовая
ga - (global array) глобальный массив и так далее"

Я подобного в VCL не наблюдаю.


А разве надо наблюдать lc/ld/gn/ga и прочее барахло предложенное 200 лет назад? Разве не достаточно наблюдать просто самогО принципа венгерской нотации для того чтобы понять что он удобен, особенно в IDE с Code Completion? В VCL масса примеров - bs/fs/vs/ws... продолжать?
и пусть в древности lp обозначало long pointer, в настоящее время lp можно применить для других целей (хоть для обозначения локальных переменных), т.к сама фраза long pointer - для Win32 является бессмысленной.

PS: считаю, что система префиксов очень подходит для перечислимых типов и констант. А в IDE с Code Completion система префиксов подобная венгерской нотации многократно сокращает время написания программ.


 
msguns ©   (2005-09-16 10:42) [82]

> DiamondShark ©   (15.09.05 13:53) [22]
> Если кто-то скажет, что идентификаторы должны быть английскими,
> пусть сделает себе сепуку.

Гениально, как, впрочем, все, что ты несешь !
Я вот преставил, например, как бы говорили медики без латыни ?

- Я Вам выписываю просрачник и капли соплегона.


 
Игорь Шевченко ©   (2005-09-16 10:44) [83]

Defunct ©   (16.09.05 10:34) [81]


> считаю, что система префиксов очень подходит для перечислимых
> типов и констант


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


 
Igorek ©   (2005-09-16 10:46) [84]


> Гениально, как, впрочем, все, что ты несешь !

Между прочим, действительно разумная мысль. Только ее еще понять надо...


 
Defunct ©   (2005-09-16 10:57) [85]

Игорь Шевченко ©   (16.09.05 10:44) [83]

ну.. ты же первый высказался довольно обширно в [16]...вот здесь:

> В свое время (10 лет назад) были попытки внедрить в нашем сообществе венгерскую нотацию. Префиксы там разные и т.д.

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


> Не надо любую префиксную нотацию называть венгерской и я с тобой соглашусь.

Ок, не называю. ;>


 
Lamer@fools.ua ©   (2005-09-16 13:24) [86]

>> DiamondShark

Насчёт локализованных идентификаторов. IMHO, это приемлимо, если выполняются следующие условия:
1. Язык программирования тоже локализован (например, встроенный язык 1С:Предприятия).
2. Заказчик не против (в случае аутсорсинга).


 
badevlad ©   (2005-09-16 14:55) [87]

По поводу "родноязычных переменных", сталкивался я с таким. Можно, конечно, если среда позволяет. Но реально использовать в каких-то серьезных проектах сложно и нецелесообразно.
1. Если язык не локализован, возникают проблемы с постоянным переключением раскладки.
2. Пробовал разобраться в чужих исходниках, там только комментарии были на немецком. Вырванные годы. А такая необходимость довольно часто возникает: то компоненты, то примеры.
3. Проблемы с окончаниями и склонениями в русском языке. Из-за них текст программы будет выглядеть оччень подозрительно :)
4. В среднем длинна слова в русском языке гораздо больше, чем в английском. Сравните:

начало
 МаскаСобытий := ПослатьСообщение(БогатыйРедактор1.Идентификатор, РС_ПОЛУЧИТЬМАСКУСОБЫТИЙ, 0, 0)
конец;

или

begin
 EventMask:= SendMessage(RichEdit1.Handle, EM_GETEVENTMASK, 0, 0)
end;


5. Не стоит забывать о традициях. Они еще долго будут давать о себе знать.


 
Adder ©   (2005-09-16 15:20) [88]

Что касается "родноязычных переменных" - стараюсь этого избегать. Причина простая. При разборе исходника программа воспринимается как некий связный текст. Теперь представьте, что пришлось читать текст, написанный на двух языках одновременно. Через слово.
Лично у меня постоянное переключение с языка на язык  вызовет намного больше затруднений, чем чтение программы "на английском языке".



Страницы: 1 2 3 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.74 MB
Время: 0.027 c
2-1125237595
Profi
2005-08-28 17:59
2005.10.09
Глюк TreeView?


14-1126854553
boriskb
2005-09-16 11:09
2005.10.09
Ищутся свадебные тосты


6-1118676712
incX
2005-06-13 19:31
2005.10.09
Проблемы с Indy 10


6-1118606328
Руслан Бахтияров
2005-06-12 23:58
2005.10.09
Безопасное подключение к серверу...


6-1118655176
Dimitrij
2005-06-13 13:32
2005.10.09
работа с FTP