Переменные в программах

чем руководствуетесь, придумывая им имена?
 
+
-
edit
 

HolyBoy

аксакал

Сперва башизм:
xxx: Переменная "i"
xxx: 26 лет на рынке счётчиков!
 


Подумал: а ведь в самом деле, я практически всегда использую эту переменную в циклах. Интересно с чего началось победное шествие именно этого имени, а также, j и k? С математических умолчаний для диапазонов?

Также, интересно, кто как называет переменные? Я, скажем, исходя из контекста и из функций для неё. К примеру, в скрипте для фаерволла участвуют такие имена, как INP_TCPSERV_E (входящие tcp соединения на порты извне), INP_UDPSERV_I (входящие udp соединения на порты из внутренней сети), POSTGRES (порты, используемые postgreSQL) и тд и тп.
 
EE Татарин #09.12.2009 11:22  @HolyBoy#09.12.2009 10:43
+
-
edit
 

Татарин

координатор
★★★★☆
HolyBoy> Подумал: а ведь в самом деле, я практически всегда использую эту переменную в циклах. Интересно с чего началось победное шествие именно этого имени, а также, j и k? С математических умолчаний для диапазонов?
С традиции. i у математиков традиционно "пусть существует принадлежащая" N или Z. Самое логичное взять её для счётчика. :) Кроме того, index == idx == i.

HolyBoy> Также, интересно, кто как называет переменные?

Венгерская нотация — Википедия

Венгерская нотация
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 21 ноября 2011;
проверки требует 1 правка.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 21 ноября 2011;
проверки требует 1 правка.


// Дальше — ru.wikipedia.org
 


:)
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
RU HolyBoy #09.12.2009 14:08  @Татарин#09.12.2009 11:22
+
-
edit
 

HolyBoy

аксакал

Татарин> С традиции. i у математиков традиционно "пусть существует принадлежащая" N или Z. Самое логичное взять её для счётчика. :) Кроме того, index == idx == i.

Ага, так и думал. :)

Татарин> Венгерская нотация — Википедия

Зло. Но кому что нравится… ©
 
EE Татарин #09.12.2009 14:31  @HolyBoy#09.12.2009 14:08
+
-
edit
 

Татарин

координатор
★★★★☆
HolyBoy> Зло. Но кому что нравится… ©


Как заставить неправильный код выглядеть неправильно - The Joel on Software Translation Project


Как заставить неправильный код выглядеть неправильно
From The Joel on Software Translation Project
Jump to: navigation, search
Автор: Джоэл Сполски
Переводчик: Илья Болодурин
В английском оригинале статья называется Making Wrong Code Look Wrong и была написана в среду, 11 мая 2005 г.


// Дальше —
local.joelonsoftware.com
 


Вот именно так, да.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
+
-
edit
 

Kuznets

Клерк-старожил
★☆
HolyBoy> Подумал: а ведь в самом деле, я практически всегда использую эту переменную в циклах. Интересно с чего началось победное шествие именно этого имени, а также, j и k?

патамушта из всех циклов с переменными первым придумали цикл с простым инкрементом. :)
пс ну а дальше тупо по алфавиту...
 3.5.53.5.5
US Mishka #09.12.2009 15:25  @Татарин#09.12.2009 11:22
+
-
edit
 

Mishka

модератор
★★★

Татарин> С традиции. i у математиков традиционно "пусть существует принадлежащая" N или Z. Самое логичное взять её для счётчика. :) Кроме того, index == idx == i.

Ага. a, b, c — константы; x, y, z — переменные; i, j, k — индексы для перечисляемых множеств; для мощностей всякие алефы, для чего-то подобного i, j, k в непрерывном случае всякие дельта-эпсилоны. Ну и надо вспомнить, кто были первые потребители Фортрана — там ещё и тип переменной объявлялся неявно как целый для определённых букв. :)

А венгерская нотация зло. Вот такое моё ИМХО.
 3.5.23.5.2
+
-
edit
 

Kernel3

аксакал

Mishka> А венгерская нотация зло. Вот такое моё ИМХО.

Для плюсов и прочих языков, где помимо встроенных типов данных есть ещё полиморфные объекты, - да. А для какого-нибудь C сойдёт :) Хотя я тоже не пользуюсь - не вижу особого смысла.

ЗЫ лично я i воспринимаю как сокращение от iterator, а не от index :)
Broken Windows® cures my ills and makes me feel alright... ©  
+
-
edit
 

Mishka

модератор
★★★

Kuznets> патамушта из всех циклов с переменными первым придумали цикл с простым инкрементом. :)
Kuznets> пс ну а дальше тупо по алфавиту...

Шиш. Матрицы вполне себе придумали до циклов. У них уже были такие индексы. Ну, а ряды ещё раньше. :P
 3.5.23.5.2
EE Татарин #09.12.2009 16:30  @Mishka#09.12.2009 15:25
+
-
edit
 

Татарин

координатор
★★★★☆
Mishka> А венгерская нотация зло. Вот такое моё ИМХО.
"Вы их готовить не умеете." (С)

fpszString, dwCounter - это, конечно, зло чистое, рафинированое.
А вот btnCancel, m_tblCustomers - рулез. Потому что это сильное (strict) соглашение об информативных именах, и это гораздо лучше, кратче, информативнее, чем OKButton, CustomersDataTable.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
+
-
edit
 

kuku67

новичок
настоящие программисты выросли из фортрана
в фортране I, J, K по умолчанию целочисленные
 3.5.33.5.3
+
-
edit
 

Balancer

администратор
★★★★★
kuku67> настоящие программисты выросли из фортрана
kuku67> в фортране I, J, K по умолчанию целочисленные

Угу. А потом ещё в Бейсике закрепили DEFINT I всякими :)
 
US Mishka #11.12.2009 07:47  @Татарин#09.12.2009 16:30
+
-
edit
 

Mishka

модератор
★★★

Татарин> "Вы их готовить не умеете." (С)

Умеем, просто отличаем хрен от пальца венгерские, от общих. :P

Татарин> fpszString, dwCounter - это, конечно, зло чистое, рафинированое.

Это и есть венгерская.

Татарин> А вот btnCancel, m_tblCustomers - рулез. Потому что это сильное (strict) соглашение об информативных именах, и это гораздо лучше, кратче, информативнее, чем OKButton, CustomersDataTable.

А это не венгерская. Это нормальная. Но, если первая хорошо, то вторая уже спорно. Особенно, когда начитают в префикс засовывать не только членство, но и связанные с ним атрибуты, как, например, статические.
 3.5.23.5.2

Mishka

модератор
★★★

kuku67> настоящие программисты выросли из фортрана
kuku67> в фортране I, J, K по умолчанию целочисленные

Не только. Настоящие фортрановски программисты помнят, что таких букв 6. :P
 3.5.23.5.2

varban

администратор
★★★★
... L, M, N.

Я на FORTRAN пересел с BASIC (и чуть Algol, в рамках учебного курса).
Ну и напейсал программу интегрирования дифура без учета этой особености.

Смеялись надо мной с недели... как входил в терминальный класс с утра, спрашивали, какие новые открытия совершил %)
 3.0.195.333.0.195.33

varban

администратор
★★★★
Mishka> А венгерская нотация зло. Вот такое моё ИМХО.

Кому как.

Это способ держать перед глазами типы переменных и постоянно напоминать о преобразовании типов.

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

Вот я и начал переписывать потихонечку модули.
Убирал предупреждения, иногда очень легко.
Но некоторые не давались, а время поджимало.

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

Mishka

модератор
★★★

varban> Кому как.

Почти всем и всегда.

varban> Это способ держать перед глазами типы переменных и постоянно напоминать о преобразовании типов.

Ага, до тех пор, пока ты не захочешь поменять тип переменной в большой программе. :) И тут варианта два — лопатить все исходники или плюнуть на всё и сделать несоответствие префикса и типа.

Венгерская нотация способ подсказать. Для языков со структурной типизацией. С, Алгол 68 (не беря структуры, как типы). А вот с именной типизацией такого уже нет — Паскаль, Ада. Компилятор в последних сам отслеживает.

varban> Я на венгерскую нотацию набрел, когда пришлось поддерживать чужой софт. В начальном варианте компилятор завершал транцляцию, выдавая несколько сотен предупреждений. Было несколько редко проявляющихся багов. Смена версии компилятора приводила к неработоспособностью софта.

Ну, это тому разработчику надо было оторвать руки. Но так писать можно на любом языке. :)

varban> Вот я и начал переписывать потихонечку модули.
varban> Убирал предупреждения, иногда очень легко.
varban> Но некоторые не давались, а время поджимало.
varban> Вот я и пришлось вводить обозначение типов в наименовании переменных, и за несколько дней убрал все предупреждения компилятора. Алгоритм не трогал, но когда исчезли предупреждения, программа перестала падать. С тех пор в моих мейк-файлах предупреждение приводит к остановки трансляции :)

А зачем тут венгерская нотация? :) Если ты убирал предупреждения вставлением ядер, то это, как бы, и не кошерно. Потому, как компилятор перестанет ругаться, но это не значит, что семантически верно. А тот же С++ уже позволяет писать вполне кошерно на уровне классов. Правда, преобразования типа вводят в ступор даже хорошо разбирающихся в С++. Но это скорее правила поиска преобразований (или приведений в термнах Алгола 68).

varban> Поскольку перед этим вдвоем бились несколько месяцев, на меня этот успех произвел неизгладимое впечатление. И в следующий свой проект я использовал венгерскую нотацию еще с чистого экрана.

:)
 3.5.23.5.2

varban

администратор
★★★★
Mishka> так писать можно на любом языке. :)

По-сиукски. Конкретно - Turbo C 1.0.
Я к тому времени писал на Borland C 3.0 и переползал на 3.1.
 3.0.195.333.0.195.33
RU Balancer #11.12.2009 11:03  @Татарин#09.12.2009 16:30
+
-
edit
 

Balancer

администратор
★★★★★
атарин> А вот btnCancel, m_tblCustomers - рулез. Потому что это сильное (strict) соглашение об информативных именах, и это гораздо лучше, кратче, информативнее, чем OKButton, CustomersDataTable.

1. Любые проявления camelCase считаю чистым злом :D

2. Более короткий вариант не считаю более информативным. Поэтому в моих программах это будет ok_button или button_ok (по контексту) :) Если лениво вводить лишний символ в имени переменной - то что-то не так в консерватории. Походу, ты пишешь так много, что не остаётся времени думать ;)
 
EE Татарин #11.12.2009 11:37  @Mishka#11.12.2009 07:47
+
-
edit
 

Татарин

координатор
★★★★☆
Mishka> А это не венгерская. Это нормальная.
Постой-постой. Но ведь тут явно указан тип: btnCancel. ЧТо же это, как не венгерская запись?

Mishka> Но, если первая хорошо, то вторая уже спорно.
А по-моему, очень помогает.

Mishka> Особенно, когда начитают в префикс засовывать не только членство, но и связанные с ним атрибуты, как, например, статические.
Любую идею можно извратить и довести до абсурда.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
EE Татарин #11.12.2009 12:01  @Balancer#11.12.2009 11:03
+
-
edit
 

Татарин

координатор
★★★★☆
Balancer> 1. Любые проявления camelCase считаю чистым злом :D
оВкусахНеСпорят. :)
А это именно чистая вкусовщина, в лучшем случае - с псевдорациональной аргументацией.

Balancer> 2. Более короткий вариант не считаю более информативным.
Та же информация в меньшем количестве символов - более информативно.
Ты можешь не считать, но оно так ЕСТЬ. :)

Balancer> Поэтому в моих программах это будет ok_button или button_ok (по контексту) :) Если лениво вводить лишний символ в имени переменной - то что-то не так в консерватории. Походу, ты пишешь так много, что не остаётся времени думать ;)
Э, не. Вот именно первое предложение твоего абзаца полностью раскрывает эту тему. "ок_буттон или буттон_ок (по контексту)" - такой подход сканает только если ты работаешь один или в команде из 2-3 человек. А если за время жизни твоего кода к нему имеет активно доступ (читает, понимает, перепользует, вносит серьёзные правки, рефакторит) 2-3 десятка человек, подход уже совсем-совсем иной.

Я ж не зря сказал про strict convention. Потому что как только ты поработаешь в большой команде, меньше всего, что тебе захочется - это сидеть и думать, глядя на код, о том, какой "контекст" был в голове того, кто это писал. Тебе захочется предсказуемости и однозначности правил именования, единый стиль. Венгерская запись - хороший путь к.
btnCancel - btn тут не может стать button, Button, button_, Button_ или _Button. В этом суть. А лишние три буквы ничего к понятности не добавляют совершенно. Двно уже бринтские учёые устаоили, что мжно выкнть или прпстить поолину бкв без ущерба для понтнсти.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
EE Татарин #11.12.2009 12:06  @varban#11.12.2009 09:48
+
-
edit
 

Татарин

координатор
★★★★☆
varban> Поскольку перед этим вдвоем бились несколько месяцев, на меня этот успех произвел неизгладимое впечатление. И в следующий свой проект я использовал венгерскую нотацию еще с чистого экрана.
Дело в том, что венгерская нотация часто навязывалась MS во всех её SDK людям, которые не понимали её смысла и часто в случаях, когда она на самом деле не имела смысла. :)

Отношение у людей, которые сами пришли к ней и используют с пониманием - совсем иное.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
RU spam_test #11.12.2009 12:13  @Татарин#11.12.2009 12:01
+
-
edit
 

spam_test

аксакал

Татарин> Та же информация в меньшем количестве символов - более информативно.
количество меньше, а вот нажатий на клавиши - одинаково. Хотя ИМХО на "верблюдов" глаз цепляется лучше, и подчеркивания с пробелами мешаться не будут.
 
RU Balancer #11.12.2009 12:41  @Татарин#11.12.2009 12:01
+
-
edit
 

Balancer

администратор
★★★★★
Татарин> А это именно чистая вкусовщина, в лучшем случае - с псевдорациональной аргументацией.

Фигушки, есть рациональная аргументация :) такой_текст_мозг_токенизирует прощеЧемТакой :) Элементарно с нашей письменностью связано.

Татарин> Та же информация в меньшем количестве символов - более информативно.

Угу. А теперь вспомни принципы помехозащищённости. И почему английские радисты понимают друг друга намного хуже, чем немецкие ;)

Татарин> Э, не. Вот именно первое предложение твоего абзаца полностью раскрывает эту тему. "ок_буттон или буттон_ок (по контексту)" - такой подход сканает только если ты работаешь один или в команде из 2-3 человек.

Именно способы с разного рода сокращениями годятся только для работы в одиночку :) Ибо в большом коллективе всегда появятся люди, для которых принципы сокращений будут разными. Я на это в L2Fortress хорошо напоролся, когда пытался пропихивать идеи Форт-сокращений. Вот уж где компактность и информационная насыщенность! :) Увы, и ах. Кмпксть и нсщеннсть обртн. проп. наглядности и понятности :)

Татарин> Я ж не зря сказал про strict convention.

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

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

Именно поэтому button_ok будет нагляднее, чем btnOk.

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

Плохой. И практика это показывает. По сути сегодня она прижилась только в низкоуровневом программировании на Си++ в Windows :) Можно сказать, что венгерская нотация - пережиток древних времён, во время которых не было нормальных IDE и не было языков с достаточно строгой типизацией :)

«Этот стиль выбора имён называется «венгерской» записью по названию родины руководителя отдела программирования Microsoft Чарльза Симони, который его изобрёл. (А не потому, что его использование придаёт программам такой вид, будто они написаны на венгерском языке» :)

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

Но читать такой текст сложнее. Трудно это не заметить ;)
 
EE Татарин #11.12.2009 13:28  @spam_test#11.12.2009 12:13
+
-
edit
 

Татарин

координатор
★★★★☆
spam_test> количество меньше, а вот нажатий на клавиши - одинаково.
Лично меня нажатия на клавиши не ломают, :) лишь бы текст был понятен, легко читался и правился.

spam_test> Хотя ИМХО на "верблюдов" глаз цепляется лучше,
По-моему - тоже.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  3.0.195.333.0.195.33
+
-
edit
 

varban

администратор
★★★★
Я логику в твоем постинге не отрицаю, но не могу пройти мимо:

Balancer> Но читать такой текст сложнее. Трудно это не заметить ;)

Сорс - особый вид текста.

Критерий понятности сорса != возможность прочитать его с выражением.
 3.0.195.333.0.195.33

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru