КИТА unofficial
Ноябрь 22, 2024, 03:53:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   ПРАВИЛА Помощь WIKI PDA Войти Регистрация  


Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Стиль кода и правила именования идентификаторов  (Прочитано 42078 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
zer_owlet
Необычные пользователи
Проректор
*

Карма: +103/-16
Offline Offline

Пол: Мужской
Сообщений: 2399



« : Июнь 15, 2010, 08:45:24 »

"потому что не привили преподаватели нормальное именование переменных"
Скажи это EvilMax'у и Елене Осиповне как минимум.
Ну и Полякову тоже можешь.

1. С Савковой и Поляковым плотно общался все 5 лет учебы, вопрос по именованию переменных не возникало, хотя транслит и TForm1 были поголовно у всех.
2. Если на 5-м курсе человек все еще юзает TForm1 и Sortirovka, то преподаватели закрывали на это глаза весь курс обучения. Если подобное именование не нравится, Поляков просто не примет лабу или курсовой и студент к 5-у курсу или привыкнет нормально именовать или не дойдет туда.

В общем, народ, не путайте студентов с лабами и проекты. Для студентов все эти замарочки простительны, а на работе все равно скажут "все забудьте и начинаем учить все заново".

Я в свое время принимал на работу порядка 6-7 студентов, так плевать на TForm1, пусть хоть код форматировать научатся.... это ж просто АААААА ((

Кстати, никто не вспомнил именование таблиц в виде t_customers, а ведь это тоже вызывает вопросы Улыбка
Записан



Если бы те, кто злословит обо мне, знали, что я о них думаю, они бы ещё не то говорили.

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

Памятка женщинам: если ты хочешь, чтоб мужчина встал на колени - разденься и встань на четвереньки.
Волера
Первак
*

Карма: +3/-0
Offline Offline

Сообщений: 48



« Ответ #1 : Июнь 15, 2010, 09:10:15 »

Та какой t_customers, ето ещё хорошо)
Блощ напостой требовал именовать таблицы типа тСтуденты, тПреподаватели, тЕщёКакаятоХрень.
такой гемор был напостой переключать с англ на русский язык когда пишешь запрос.
(Отправлено в: Июнь 15, 2010, 09:07:16 )
 ага, типа хороший стиль воспитывали)
Записан
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #2 : Июнь 16, 2010, 08:32:58 »

"потому что не привили преподаватели нормальное именование переменных"
Скажи это EvilMax'у и Елене Осиповне как минимум.
Ну и Полякову тоже можешь.
А как Вам прививать - розгами что ли?
У меня, например, в любом программном блоке вряд ли наберется больше 30 переменных. Поэтому мои любимые идентификаторы это:
i, j, n, m, k, i1, j1, n1, p_rec, p_kol, x, y - для целочисленных переменных
p_sum, p_vs, p_s1, p_***(где ***-имя поля) - для вещественных переменных
p_str, p_name, p_fio, p_kpd, p_***(где ***-имя поля) - для символьных переменных
ar, array, aget, an, am, a1, v1, s, s1, sum - для массивов
ob - для объекта
l_key - для кода нажатой клавиши
scr - для сожержимого экрана
col - для хранения цветовой палитры
vz - для возвращаемого значения
А больше мне и не надо - этих идентификаторов хватает для написания программного продукта любой сложности с объемом содержательного кода до 100 тысяч строк.
P.S.Для справки объем содержательного кода задачи "зарплата" менее 50 тысяч строк
Записан
zer_owlet
Необычные пользователи
Проректор
*

Карма: +103/-16
Offline Offline

Пол: Мужской
Сообщений: 2399



« Ответ #3 : Июнь 16, 2010, 10:16:12 »

Polyakov, а можно вопрос? Вот хорошие у вас переменные, красивые. Но только кто в них, кроме вас, разберётся, если ему дать этот код?

Даже при самых великолепных именах переменных, если код не содержит комментарии или написан индусами, разобраться в нем очень тяжело и не нужно об этом забывать Улыбка
Если команда сработалась, то найти определение переменной p_name и проследить путь в нормальном коде не составит труда.

Кстати, кудя тяженее работать с таким кодом: $salary_previous_quarter = $opening_balance_shop + $sum_sales + ..... При 10+ таких переменных читать код без мата невыносимо.
Записан



Если бы те, кто злословит обо мне, знали, что я о них думаю, они бы ещё не то говорили.

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

Памятка женщинам: если ты хочешь, чтоб мужчина встал на колени - разденься и встань на четвереньки.
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #4 : Июнь 16, 2010, 10:23:45 »

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

Или называть переменные надо как индейцам:

Например, "это_та_переменная_которая_будет_использоваться_как_параметр_для_внешних_циклов_с_параметром_и_при_необходимости_как_счетчик_итераций_для_циклов_пред_и_пост_условиями_и_т_п",

но вместо всего этого я вначале программного блока в разделе описания переменных просто пишу "i=0"
Записан
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #5 : Июнь 16, 2010, 11:29:16 »

как нормально и AbstractDataMatrix, InMemoryDataMatrix, PagedDataMatrix, DataMatrixColumnPropertyDescriptor.
Если честно, то такие имена для меня - не нормально. При использовании в коде таких имен - зарплату такому программисту нужно урезать минимум вдвое, а то и втрое, так как он очень много времени будет тратить только на написание названий этих идентификаторов. И чем больше у него таких идентификаторов, тем ниже его зарплата. И если бы я выступал для тех кто использует такие идентификаторы как работодатель, то поверьте я бы не стал платить за то лишнее время, которое уходит на написание таких длинных имен переменных. Кроме того это увеличивает не только исходный текст программы, а и компилируемый модуль, и выполняемый модуль.
Ну конечно, ну чего мы будем мелочиться и считать какие-то байты программы, при современных та объемах оперативной памяти. Но только лишние байты имеют свойства превращаться в лишние килобайты, а лишние килобайты - в мегабайты и т.д. по цепочке. А потом мы слышим, что причина того что программа не работает как надо - слабая техника. Хотя в большинстве случаев все наоборот.

P.S. Хотя мы в нашей дискуссии отвлеклись от темы.
(Отправлено в: Июнь 16, 2010, 11:17:48 )
 
Polyakov, утрируете
Я не утрирую - я так пишу. Вот уже 19 лет как я пишу программы для различных предприятий и некоторые из них уже 17 лет как работают. Операционные системы, компьютера меняются, а они все работают. Может быть в них все-таки что-то есть?
Записан
Волера
Первак
*

Карма: +3/-0
Offline Offline

Сообщений: 48



« Ответ #6 : Июнь 16, 2010, 11:31:47 »

Polyakov,
Цитировать
У тех, кто пользует нормальную IDE, таких проблем просто нет.
В большинстве хороших IDE реализован механизм автодополнения (IntelliSence), при котором что на переменную i, что на DataMatrixColumnPropertyDescriptor тратится одинаковое кол-во времени - 1 сек.

Ну конечно, если писать код в блокноте - тогда да..
Записан
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #7 : Июнь 16, 2010, 11:39:42 »

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

он очень много времени будет тратить только на написание названий этих идентификаторов
Нормальные IDE имеют расширенные средства подстановки имени переменной при написании кода. И расширенные средства рефакторинга кода.
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #8 : Июнь 16, 2010, 11:44:12 »

В большинстве хороших IDE реализован механизм автодополнения (IntelliSence), при котором что на переменную i, что на DataMatrixColumnPropertyDescriptor тратится одинаковое кол-во времени - 1 сек.
Чем больше у Вас переменных начинающихся на букву "D" тем больше вариантов выбора в вспывающем окне подстановки и Вам придется либо выбрать с помощью нажания клавиши "Стрелка вниз" и "Enter" нужную альтернативу или набирать следующую букву сокращая таким образом список альтернатив.
"Делали - знаем"
Так, что не надо хоть мне рассказывать эту чушь о равных временных затратах.
Если хотите приходите - сделаем хронометраж.
(Отправлено в: Июнь 16, 2010, 11:40:28 )
 
При больших объемах кода понять назначение переменной описанной в начале, а используемой где-то в середине громадного цикла с кучей ветвлений, довольно затруднительно.
У каждого разное понятие слова "громадный". А вообще разбивать программу на функции учат, если я не ошибаюсь, уже на 4-ой лабораторной 1-го сесместра.
Записан
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #9 : Июнь 16, 2010, 11:45:07 »

И расширенные средства рефакторинга кода.
Только не надо здесь выражаться.
Записан
naxellar
Главный флудер
Проректор
*****

Карма: +101/-52
Offline Offline

Пол: Мужской
Сообщений: 5015

Главный флудер


« Ответ #10 : Июнь 16, 2010, 11:45:31 »

Polyakov, время тратися больше, но шансов запутаться меньше. Особенно, если посмотреть код через некоторое время. Так что, не факт, что таккая экономия времени действительно его экономит.
Записан
EvilMax
Администратор
Завкаф
*****

Карма: +59/-0
Offline Offline

Пол: Мужской
Сообщений: 1072


Злой и страшный :)


« Ответ #11 : Июнь 16, 2010, 11:50:40 »

Off-Topic - помечено автором как "не соответствует обсуждаемой теме"
Если хотите приходите - сделаем хронометраж.
Только если так, давайте хронометраж просуммируем с временем разбора достаточно сложного кода программистом, его не писавшим, в случаях с информативными идентификаторами и идентификаторами an, am, a1, p_* (кстати, о * - а имена полей какие? если длинные - чем хуже полное имя, если нет - тогда очень интересно, сколько новый человек будет разбираться с кодом и привыкать к нему)

(Отправлено в: Июнь 16, 2010, 11:49:41 )
 
вот ручной просчет очень часто делает из студента нормального разработчика. крайне вредно не понимать что программа делает.
Это не моя цитата ))) Но я согласен.
Записан

Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач...
---
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #12 : Июнь 16, 2010, 11:53:02 »

Только не надо здесь выражаться.
Александр Иванович, если вы за 19 лет своего опыта разработчика не разу не сталкивались с понятием рефакторинга (переведу - улучшения, переработки) кода, то мне искренне жаль ваши 17летние программы. Dixi.

P.S. Честно говоря, напрягает то, что на любую современную технологию вы бросаетесь аки бык на красную тряпку.
P.P.S. Если не трудно будет Евилмаксу, то разделите тему - пообсуждаем правила именования переменных, всяческие нотации, форматирование кода.
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #13 : Июнь 16, 2010, 11:54:49 »

но шансов запутаться меньше. Особенно, если посмотреть код через некоторое время.
В своей программе никогда не запутаешься.
Если наши преподаватели будут из-за имен не принимать лабораторные
У меня такого никогда не было. Хотя я если очень длиннные идентификаторы - обращаю внимание студента на это.
Записан
TapTap
Первак
*

Карма: +1/-0
Offline Offline

Пол: Женский
Сообщений: 33



« Ответ #14 : Июнь 16, 2010, 11:56:38 »

Вот уже 19 лет как я пишу программы для различных предприятий и некоторые из них уже 17 лет как работают. Операционные системы, компьютера меняются, а они все работают. Может быть в них все-таки что-то есть?
Может быть, они морально уже устарели?

По поводу названия переменных: работая с одним большим проектом, вначале тоже называла переменные сокращенно, чтобы "минимизировать код", но впоследствии пришла к тому, что не все переменные можно сократить. И сокращенные переменные, такие как c_t, n_b, n_b1, nb2 и проч., только усложняют программу. Потому что через время больше времени тратится на то, чтобы вспомнить и разобораться что именно подразумевает эта переменная, чем на написание кода.

Но я не думаю, что это повод для дискуссии между студентом и преподавателем. К сожалению, это понимание приходит только с опытом работы, а не на университетских лабораторных.
Записан
Polyakov
Специалист
***

Карма: +12/-7
Offline Offline

Сообщений: 164


« Ответ #15 : Июнь 17, 2010, 12:06:26 »

Александр Иванович, если вы за 19 лет своего опыта разработчика не разу не сталкивались с понятием рефакторинга (переведу - улучшения, переработки) кода, то мне искренне жаль ваши 17летние программы.
Мальчик. Я к твоему сведению постоянно перерабатываю и улучшаю свои программы, а ты, кроме якобы умных слов, ни хрена на знаешь и не умеешь.
Я тебе недавно на одной из веток этого форума предлагал сделать программу и доказать кто есть "who". Причем не просто так сделать, а за приличные деньги. Но ты почему-то не согласился. Так что хватит здесь выпендриваться.
К твоему сведению у меня выполняемый модуль программы "Зарплата" сейчас занимает 1 017 856 байт и я не один раз бывал счастлив, когда в результате очередной глобальной переработки мне удавалось снизить его объем на 100-150 килобайт.

А вообще рефакторинг - это то что заботящийся о своем программном детище человек делает постоянно.
Но если Вы хотите побросаться умными словами, то я в 2004 - 2005 году для двух шахт и одного завода официально делал реинжиниринг. В отличии от Вас могу подтвердить его не только выполненной работой, но и договорами с печатями.
« Последнее редактирование: Июнь 17, 2010, 12:31:44 от Polyakov » Записан
TapTap
Первак
*

Карма: +1/-0
Offline Offline

Пол: Женский
Сообщений: 33



« Ответ #16 : Июнь 17, 2010, 12:06:39 »

В своей программе никогда не запутаешься.

Досадное заблуждение.
Если программа невелика (размера лабораторной или даже курсовой),  то вполне возможно удержать в голове все переменные.
Но если это большой совместный проект, то я бы всё-таки советовала называть переменные понятным языком. В этом случае высвобождается ОЗУ мозга человека от переменных для написания продуктивного кода  Улыбка
Записан
Волера
Первак
*

Карма: +3/-0
Offline Offline

Сообщений: 48



« Ответ #17 : Июнь 17, 2010, 12:08:00 »

ну а с другой стороны, зачем рефакторить если прога работает и разработчик один)))
требования к системе не меняются, она работает себе спокойно и забыл про неё.
Записан
mars
Магистр
***

Карма: +10/-0
Offline Offline

Награды:
За III место в фотоконкурсе \
Сообщений: 221



« Ответ #18 : Июнь 17, 2010, 01:00:48 »

Досадное заблуждение.
У Александра Ивановича очень хорошая память. Думаю все, кто пытался сдать ему курсовую, которую он уже видел, в этом убедились Улыбка))))))))

Но делать комментарии конечно нужно, особенно если пишется совместный проект.
Записан

Мне говорили: «Ты злой», и я соглашался. Мне говорили: «Ты не злой», и я не находил возражений. Сам-то я не хотел ни добра, ни зла и даже не думал об этом. Я просто шел своим Путем, а люди потом подбирали названия для моих поступков. М.Симонс
tos
Mодератор
Декан
*****

Карма: +80/-16
Offline Offline

Награды:
1 место в фотоконкурсе \1,3 место в фотоконкурсе \II место в фотоконкурсе \
Сообщений: 1949


♪♪ ♫Nice boys don`t play Rock`n`Roll♫ ♪♪


« Ответ #19 : Июнь 17, 2010, 10:05:28 »

"Кроме того это увеличивает не только исходный текст программы, а и компилируемый модуль, и выполняемый модуль. "
да ладно!
ну, время компиляции может чуток учеличится из-за большего объёма.
Провёл тест.
Компилятор min-GW(другого нет).
Код:
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


int SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO=0;

while (SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO)
{
int SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO_SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO;
SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO_SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO--;
SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO_SUPER_DLINNOE_NAZVANIE_CHTOB_UBEDITSA_CHTO_ETO_NE_VAZHNO++;
break;
}

    return a.exec();
}

И короткий вариант
Код:
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


int i=0;

while (i)
{
int j;
j--;
j++;
break;
}

    return a.exec();
}
итак, билдим Release.

Размеры -56,832 и (ВНИМАНИЕ!) 56,832

(Отправлено в: Июнь 17, 2010, 10:04:25 )
 "А вообще рефакторинг - это то что заботящийся о своем программном детище человек делает постоянно."
не могу не согласиться. +1
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 
Перейти в:  

Penguins Counter Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS! Internetmap
Страница сгенерирована за 0.137 секунд. Запросов: 35.