Есть ли оправдание коротким именам переменных?


140

Это стало большим разочарованием из-за кодовой базы, в которой я сейчас работаю; многие из наших имен переменных короткие и неописательные. Я единственный разработчик, оставшийся в проекте, и нет документации о том, что делает большинство из них, поэтому мне приходится тратить дополнительное время на отслеживание того, что они представляют.

Например, я читал какой-то код, который обновляет определение оптической поверхности. Переменные, установленные в начале, были следующими:

double dR, dCV, dK, dDin, dDout, dRin, dRout
dR = Convert.ToDouble(_tblAsphere.Rows[0].ItemArray.GetValue(1));
dCV = convert.ToDouble(_tblAsphere.Rows[1].ItemArray.GetValue(1));
... and so on

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

dR = radius
dCV = curvature
dK = conic constant
dDin = inner aperture
dDout = outer aperture
dRin = inner radius
dRout = outer radius

Я переименовал их в то, что у меня там наверху. Это удлиняет некоторые линии, но я чувствую, что это справедливый компромисс. Этот вид схемы именования используется во многих частях кода. Я не уверен, является ли это артефактом от разработчиков, которые учились, работая со старыми системами, или есть более глубокая причина этого. Есть ли веская причина для именования переменных таким образом, или я оправдан, обновляя их до более описательных имен, когда сталкиваюсь с ними?


98
Мне кажется, что в этом конкретном случае это имена переменных, скопированные непосредственно из математической формулы.
Дейв Най

1
единственное оправдание, которое я принял бы, было бы, "Мой пэр сказал, что все в порядке после просмотра кода"
комнат

35
Если вы оказались не в состоянии понять математический код из-за коротких имен переменных, имейте в виду, что это может быть потому, что вы не понимаете математику, а не потому, что имена слишком короткие. Изменение математических выражений, которые вы не понимаете, не является высоконадежным процессом. Когда вы понимаете математику, длина имен переменных не имеет значения. Сделайте другим одолжение и оставьте цитату (в комментарии) к некоторому соответствующему описанию математики, хотя, если бы вы должны были изучить это!
Рекс Керр

3
Любой идентификатор , который назван в честь Donkey Kong утвержден: dK = conic constant.
Томас Эдинг

8
Наоборот, можно было бы спросить, оправдывает ли незнание области домена игнорирование его соглашений. В конце концов, это зависит от контекста.
Даниэль С. Собрал

Ответы:


234

Похоже, что эти имена переменных основаны на аббревиатурах, которые вы ожидаете найти в учебнике физики, работающем с различными проблемами оптики. Это одна из ситуаций, когда короткие имена переменных часто предпочтительнее длинных имен переменных. Если у вас есть физики (или люди, которые привыкли разрабатывать уравнения вручную), которые привыкли использовать общие сокращения, такие как Rin, Rout и т. Д., Код будет намного понятнее с этими сокращениями, чем с более длинными именами переменных. Это также значительно упрощает сравнение формул из статей и учебников с кодом, чтобы убедиться, что код действительно выполняет вычисления правильно.

Любой, кто знаком с оптикой, сразу распознает что-то вроде Rin как внутренний радиус (в статье по физике inони будут отображаться как индекс), Rout как внешний радиус и т. Д. Хотя они почти наверняка смогут что-то мысленно перевести Как innerRadiusи в более знакомой номенклатуре, это сделает код менее понятным для этого человека. Это затруднило бы выявление случаев, когда знакомая формула была закодирована неправильно, и затруднило бы перевод уравнений в коде в и из уравнений, которые они найдут в статье или учебнике.

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


17
А если в штате нет физиков или математиков? Код был по существу оставлен мне. Это в основном без документов. Было бы более трудно читать описательные имена?
KChaloux

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

15
+1: То, что вы в основном говорите, так это то, что программист, который понимает область, в которой он работает, будет понимать имена переменных. Это будет то же самое во многих проектах, даже с более длинными именами переменных. например. переменная, названная columnв игре военной стратегии, скорее всего, означает нечто иное, чем в программном обеспечении для построения графиков.
Стивен Эверс

23
В медицинском программировании вы часто найдете термины, которые сохраняются в сфере программирования. Например, в офтальмологии вы увидите OU, OD и OS. Они обозначают, какой глаз, например, ouSphere, может ссылаться на компонент «сфера» рецепта для очков для правого глаза. Вы станете лучшим программистом, если поймете сферу деятельности, для которой программируете.
Билл

11
+1 за то, что отметили, что короткие имена совпадают с именами в уравнениях и формулах из статей и текстов. Когда я делаю это, я включаю комментарии о том, где найти исходный справочный материал.
Джей Элстон

89

Переменные с коротким временем жизни должны быть названы в ближайшее время. Например, вы не пишете for(int arrayCounter = 0; arrayCounter < 10; arrayCounter++) { .... Вместо этого вы используете for(int i ....

В целом, можно сказать, что чем короче область видимости переменной, тем короче должно быть имя. Счетчики циклов часто состоят только из одних букв, скажем i, jи k. Локальные переменные - это что-то вроде baseили fromи to. Например, глобальные переменные несколько сложнее EntityTablePointer.

Возможно, подобное правило не соблюдается в кодовой базе, с которой вы работаете. Это хорошая причина для некоторого рефакторинга, хотя!


14
i, j и k для индексов массива представляют традицию, восходящую по крайней мере к Фортрану. Любой уважающий себя программист будет знаком с этим соглашением.
Доминик Кронин

7
Я обычно не пишу i, j, k, я пишу что - то вроде , personPosпотому что тогда я не забуду , что я итерация, и то , что индекс представляет.
Малкольм

18
-1, я использую длинные имена для итераций индекса массива, но я даю им значимое имя вместо очевидного и бессмысленного arrayCounter . Делает код более легким для чтения и, по крайней мере, избавляет вас от растоптывания внешнего счетчика, когда вы копируете / вставляете в него другой цикл.
Волков Олег Владимирович

3
counter это существительное или прилагательное. Граф это существительное или глагол. Конечно, я до сих пор не назвали бы что - то arrayCounter, я бы использовать personIndexили rowили что - то описано , что я смотрел.
Уэйн Вернер

6
Когда я делаю один цикл, я использую i. Но как только я перехожу на вложенный цикл, я отбрасываю iноменклатуру. Причина этого в том, что я действительно хочу отследить, с какой переменной цикла работает, а ivs jможет быть довольно обманчивым в плотном коде. Мне необходимо сделать его более читабельным и добавить больше пробелов.
Jcolebrand

48

Проблема с кодом заключается не в коротких именах, а в отсутствии комментария, который объяснял бы сокращения или указывал на некоторые полезные материалы о формулах, из которых получены переменные.

Код просто предполагает знакомство с проблемной областью.

Это нормально, поскольку знакомство с проблемной областью, вероятно, требуется для понимания и поддержания кода, особенно в роли того, кто «владеет» им, поэтому вам следует приобрести знакомство, а не обходить удлинение имен.

Но было бы неплохо, если бы в коде были некоторые подсказки, служащие трамплинами. Даже специалист в области может забыть, что dKэто коническая константа. Добавление небольшого «шпаргалка» в блоке комментариев не повредит.


В конечном итоге все закончилось тем, что произошло.
KChaloux

5
Это не верно. Нет причин делать ваш код трудным для чтения, чтобы заставить людей тратить больше времени на его изучение. Вы не учите, вы просто замедляете людей. Кроме того, практически никогда не бывает одного владельца кода навсегда. Вы близоруки и эгоистичны.
xaxxon

7
Это ваша интерпретация, а не ответ. Код реализует некоторую математику, которая существует вне этого кода и независимо от него, и которая предшествовала коду. Сохранение одинаковых имен полезно. Тот, кто поддерживает код, вероятно, должен изучить это вне математики, и отсутствие необходимости сопоставлять две схемы именования поможет этому человеку.
Kaz

19

Для некоторых переменных, которые хорошо известны в проблемной области - как, например, в нашем случае - краткие имена переменных являются разумными. Если я работаю над игрой, я хочу, чтобы мои игровые сущности имели переменные положения, xа yне horizontalPositionи verticalPosition. Аналогичным образом счетчики петли , которые не имеют никакой семантики помимо индексации, я ожидаю увидеть i, j, k.


Я бы сказал, что cv, din и dout не сразу очевидны (хотя, очевидно, они установлены в определенных областях). Я бы не стал спорить о х и у, поскольку декартовы координаты применимы для любого числа полей и преподаются всем в средней и старшей школе.
KChaloux

1
И xи y, в то время как общие, не несут неявные важные аспекты , как , где начал в.
Росс Паттерсон

3
@ RossPatterson: однако, есть много контекстов, где это просто не важно. Например, рассмотрим такой цикл, как for (x,y) in list_of_coordinates: print x,y: Источник не имеет особого значения при попытке понять код.
Брайан Окли

16

Согласно «Чистому коду»:

Имена переменных должны:

  • Быть разоблачающим намерение
  • Избегайте дезинформации
  • Сделайте значимые различия
  • Быть произносимым
  • Быть доступным для поиска

Исключение составляют пресловутые выражения, i,j,k,m,nиспользуемые в циклах for.

Имена переменных, на которые вы, по праву, жалуетесь, ничего не делают из вышеперечисленного. Эти имена плохие имена.

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

Эти имена лучше:

radius
curvature
conicConstant
innerAperture
outerAperture
innerRadius
outerRadius

Комментатор говорит, что это было бы слишком сложно с длинными именами переменных:

введите описание изображения здесь

Короткие имена переменных тоже не упрощают:

fnZR = (r^2/fnR(1+Math.sqrt((1+k) * (r^2/R^2)))) + a[1]*r^2 + a[1]*r^4 + a[1]*r^6 ...;

Ответ - длинные имена и промежуточные результаты, пока вы не получите это в конце:

thisNiceThing =  ( thisOKThing / thisGreatThing ) + thisAwsomeThing;

26
Эти переменные, вероятно, используются в математических формулах в коде. Математические формулы намного легче читать с короткими именами переменных. Я использую длинные имена переменных в большей части моего кода, но математика лучше с короткими именами переменных. Случайный пример: подумайте, как долго это будет с длинными именами переменных.
MarkJ

@MarkJ Вы правы.
Тулаинс Кордова

1
Промежуточные результаты имеют дополнительное преимущество, заключающееся в уменьшении и изоляции ошибок программирования. Наш мозг может обрабатывать только очень много информации одновременно, и трудно обнаружить ошибку в чем-то вродеfnZR = (r^2/fnR(1+Math.sqrt((1+k)) * (r^2/R^2))) + a[1]*r^2 + a[1]*r^4 + a[1]*r^6 ...;
век

1
Это не так сложно, если это твой хлеб с маслом.
Раду

1
Дело не в том, чтобы написать однострочник. Но проблема в том, что если вам нужно что-то изменить и использовать другую формулу, то у вас есть проблема, когда требуется много времени, чтобы выяснить, long_nameна Rчто ссылается учебник. Используйте промежуточные результаты, но сохраняйте сложную математику как можно ближе к проблемной области, чтобы вы могли поддерживать ее, если вам нужно добавить функцию.
Slebetman

8

Есть две веские причины не переименовывать переменные в устаревшем коде.

(1) если вы не используете автоматизированный инструмент рефакторинга, вероятность появления ошибок высока. Следовательно, «если он не сломан, не чините его»

(2) вы сделаете сравнение текущих версий с предыдущими версиями, чтобы увидеть, что изменилось, невозможно. Это усложнит дальнейшее обслуживание кода.


7
Абсолютно правильно, но риск непонимания гораздо выше.
Росс Паттерсон

2
У вас гораздо большие проблемы, если ваши инструменты не могут справиться с простыми проблемами, подобными тем, которые вы упомянули.
AndSoYouCode

Ответы (1) Разумное автоматическое тестирование и разумная инкапсуляция, (2) Мастерство с контролем версий.
Адамантиш

5

Есть ли веская причина для именования переменных таким образом, или я оправдан, обновляя их до более описательных имен, когда сталкиваюсь с ними?

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

dDin better than dDinnerAperture
dDout better than dDouterAperture

... если бы я использовал их в длинных, сложных вычислениях. Чем меньше математическое выражение, тем легче увидеть все сразу. Хотя, если бы это было так, они могли бы быть лучше как dIn и dOut, так что не было бы повторяющихся D, которые могли бы привести к легкой опечатке.

С другой стороны, если вам сложнее работать, то вырубитесь и переименуйте их в более длинную форму. Особенно, если вы несете ответственность за этот код.


7
По крайней мере, я определенно избавляюсь от системной венгерской нотации ...
KChaloux

4
Ведущий dвенгерский? Я думал, что это исчисление, как в dx^2/dx = 2x.
Шеннон Северанс

7
Если бы я видел dDinnerApertureсам по себе, я бы прочитал это как «Ужин апертуры», и подумал бы, это просто забавный способ сказать «твой рот». Никогда не был поклонником стиля «заглавная буква, за которой следуют строчные буквы». Иногда очень запутанно.
Даррел Хоффман

2
+1 это ответ. Длинные математические формулы намного легче читать с короткими именами переменных. Эти переменные, вероятно, используются в математических формулах в коде. Математические формулы намного легче читать с короткими именами переменных. Я использую длинные имена переменных в большей части моего кода, но математика лучше с короткими именами переменных. Случайный пример: подумайте, как долго это будет с длинными именами переменных.
MarkJ

1
@ShannonSeverance Я согласен с вами. Исходя из инженерного опыта, d следует определенно зарезервировать для исчисления при использовании имен переменных в математическом смысле (как это часто упоминается здесь).
CodeMonkey

4

Как правило, я считаю, что правило для этого должно заключаться в том, что вы можете использовать предельно короткие имена переменных, если вы знаете, что люди, которые «разбираются» в вашем конкретном коде, сразу поймут ссылку на это имя переменной. (У вас всегда есть комментарии для исключения этого случая в любом случае), и что локализованное использование переменных может быть легко распознано на основе контекста их использования.

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

Чтобы использовать пример из реального мира, недавно я создавал класс Javascript, который будет принимать широту и сообщать вам количество солнечного света, которое вы ожидаете в определенный день.

Чтобы создать этот класс «Солнечные часы» , я сослался на полдюжины ресурсов, Астрономический альманах и фрагменты из других языков (PHP, Java, C и т. Д.).

Почти во всех из них они использовали одинаковые идентичные сокращения, которые на первый взгляд ничего не значат.

K, T, EPS, deltaPsi, eot, LM,RA

Однако, если у вас есть знания физики, вы можете понять, что они были. Я не ожидал бы, что кто-нибудь еще коснется этого кода, так зачем использовать подробные имена переменных?

julianTime, nutationOfEclipticalLongitudeExpressedInDegrees, equationOfTime, longitudeMean, rightAscension.

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


1

Там абсолютно есть; часто короткое имя переменной - это все, что необходимо.

В моем случае я занимаюсь навигацией по маршрутам в старших классах по робототехнике, и мы программируем наших роботов на KISS-C. Нам нужны переменные для текущих и конечных (x, y) координат, (x, y) расстояний, текущего и конечного направлений, а также углов поворота.

Особенно в случае координат x и y, длинное имя переменной совершенно не нужно, а имена, такие как xC (текущий x), yD (назначение y) и pD (назначение phi), являются достаточными и их легче понять в этом случае.

Вы можете утверждать, что это не «описательные имена переменных», как диктует протокол программиста, но поскольку имена основаны на простом коде (d = destination, c = current), очень простой комментарий с самого начала - это все описание они требуют.


0

Есть ли веская причина для именования переменных таким образом, или я оправдан, обновляя их до более описательных имен, когда сталкиваюсь с ними?

Обычно сложные алгоритмы реализуются в matlab (или аналогичном языке). То, что я видел, это то, что люди просто берут имя переменных. Таким образом, сравнить реализации просто.

Все остальные ответы почти верны. Эти сокращения можно найти в математике и физике, за исключением того, что они не начинаются с d(как в вашем примере). Переменные, начинающиеся с d, обычно называются для обозначения дифференцирования .

Все нормальные руководства по написанию кода запрещают называть переменные с первой буквой, представляющей тип (как в вашем случае), потому что так легко просматривать код во всех современных IDE.


Правильно, этот элемент исчезал независимо от того, что в итоге говорили люди. В кодовой базе, которую я обновляю, происходит что-то наполовину венгерское, а не шизофрения.
KChaloux

0

Я могу придумать причину, по которой имена переменных должны быть достаточно короткими.

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

Например, как только я привык к тому, что svdb означает «сохранить в базе данных», скорость сканирования исходного кода улучшается, поскольку мне нужно только быстро сканировать 4 символа вместо чтения SaveToDatabase (14 символов, все становится хуже для более сложных имен операций). Я говорю «сканирование», а не «чтение», потому что это занимает большую часть анализа исходного кода.

При сканировании большого количества исходного кода это может обеспечить хороший прирост производительности.

Кроме того, это просто помогает ленивому программисту печатать эти короткие имена при написании кода.

Разумеется, все эти «сокращения», как ожидается, будут перечислены в каком-то стандартном месте в исходном коде.


1
Мы не читаем слова как набор символов, мы читаем их как фигуры и определяем детали условно, когда не удается понять с первого взгляда. Длина слова, которое должно занять больше времени для чтения, намного больше, чем 4 символа, и мы можем мысленно обработать camelCase и другие средства разбиения слов переменных имен как границ слов. Я сомневаюсь, что тест на чтение подтвердил бы, что более короткие имена улучшают скорость чтения; вместо этого, удаляя узнаваемые слова, будет происходить снижение скорости, пока новые слова не будут ассимилированы (на что вы сами указываете).
век

0

Чтобы сформулировать то, что сказал @zxcdw, немного по-другому и уточнить это с точки зрения подхода:

Функции должны быть чистыми , краткими и идеально инкапсулировать некоторую функциональность: логика «черного ящика» , независимо от того, был ли он нетронутым в течение 40 лет, будет продолжать выполнять работу, для которой он был разработан, потому что его интерфейс (вход и выход) это звук, даже если вы ничего не знаете о его внутренностях.

Это тот код, который вы хотите написать: это код, который длится и прост в переносе.

Где необходимо, составьте функции из других (встроенных) вызовов функций , чтобы сохранить детальный код.

Теперь, с подходящим описательным именем функции (многословно, если необходимо!), Мы минимизируем любой шанс неправильной интерпретации этих сокращенных имен переменных, поскольку область действия очень мала.


-1

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

Нет веской причины не использовать описательное имя. Это поможет вам и всем, кто работает / будет работать над проектом. Ну, на самом деле есть единственное допустимое использование для коротких имен: счетчики циклов.


6
Обратите внимание, что int dummy_variable_for_for_loops;это как можно более наглядно.
Каз

4
-1 потому что этот ответ сбивает с толку. Сначала говорится, что нет веских причин, а затем заканчивается, говоря, что на самом деле, есть. Ответ был бы лучше, если бы он был перефразирован, чтобы не противоречить самому себе.
Брайан Оукли

Я бы изменил это, чтобы прочитать «как описательный, как необходимо ». Если короткое имя передает цель переменной, тогда можно использовать короткое имя .
Максимус Минимус

-1

Конечно, это то, что // комментарии для?

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


-1

Для интерфейсов (например, сигнатур методов, сигнатур функций) я стараюсь решить эту проблему путем аннотирования объявлений параметров. Для C / C ++ это украшает файл .h, а также код реализации.

Я делаю то же самое для объявлений переменных, где знание использования переменной не очевидно в контексте и в именовании. (Это относится к языкам, которые также не имеют строгой типизации.)

Есть много вещей, которые мы не хотим засорять имя переменной. Является ли угол в радианах или градусах, есть ли допуск на точность или дальность и т. Д. Информация может дать ценные утверждения о характеристиках, с которыми необходимо обращаться правильно.

Я не религиозен об этом. Я просто заинтересован в ясности и в том, чтобы удостовериться, что я теперь такой, какой я есть в следующий раз, когда моя забывчивая личность посетит код. И любой, кто смотрит через мое плечо, имеет то, что ему нужно знать, чтобы увидеть, где что-то не так, что важно (последнее важно для правильного обслуживания).


-1

Есть ли оправдание за слишком короткие имена переменных?

Во-первых: присвоение имени энергии e при вычислении формул, таких как E = MC2, НЕ является слишком коротким присвоением имени. Использование символов в качестве аргумента для коротких имен недопустимо

Этот вопрос был довольно интересным для меня, и я могу думать только об одном оправдании, и это деньги.

Скажем, например, вы подключаете JavaScript для клиента, который знает, что файл должен загружаться много раз в секунду. Это будет дешевле и сделает работу пользователей лучше, если файл (в байтах) будет как можно меньше.

(Просто чтобы сохранить пример «реалистичным», вам не разрешили использовать инструмент минификатора, почему? Проблемы с безопасностью, никакие внешние инструменты не могли коснуться основы кода.)


1
Ваш пример все еще не очень реалистичен.
Раду

-1

Я заметил, что в других ответах не упоминается использование венгерской нотации. Это ортогонально длине дискуссии, но в целом относится к схемам именования.

double dR, dCV, dK, dDin, dDout, dRin, dRout

Буква «d» в начале всех этих переменных означает, что они двойные; но язык навязывает это в любом случае. Несмотря на краткость этих имен, они до 50% избыточны !

Если мы собираемся использовать соглашение об именах для уменьшения количества ошибок, нам гораздо лучше кодировать информацию, которая не проверяется языком. Например, ни один язык не будет жаловаться dK + dRна приведенный выше код, даже если бессмысленно добавлять безразмерное число к длине.

Хороший способ предотвратить такие ошибки - использовать более сильные типы; однако, если мы собираемся использовать double, то более подходящей схемой именования может быть:

// Dimensions:
// l  = length
// rl = reciprocal length
double lR, rlCV, K, lDin, lDout, lRin, lRout

Язык все еще позволяет нам писать K + lR, но теперь имена подсказывают нам, что это может быть неправильно.

В этом разница между системами венгерского (обычно плохо) и приложений венгерского (возможно, хорошо)

http://en.wikipedia.org/wiki/Hungarian_notation


1
На самом деле, C ++ может пожаловаться, K + lR если вы правильно объявите свои модули. С единицами СИ это может сделать проверки размерности и преобразование единицы. Добавление 3_feet + 2_meterдолжно быть без проблем, в то 2_meter+1_secondвремя как ошибка компиляции.
MSalters

@MSalters Это довольно круто; шаблонный / макроподход не приходил мне в голову. Тем не менее, в таком «независимом от языка» вопросе я бы сгруппировал все проверки модулей времени компиляции под зонтиком «более сильных типов», независимо от того, называет ли язык их «типами» или нет;)
Warbo

Шаблон, обязательно. Вы не можете сделать необходимое исчисление типов в макросах.
MSalters

-2

Только случай , когда неразборчиво короткие имена переменных являются приемлемыми в современной программной инженерии, когда они существуют в скрипте , и пропускная способность этого сценария (по сети в целом) имеет важное значение. Даже в этом случае сохраните сценарий с длинными именами в системе управления версиями и сверните сценарий в рабочем состоянии.


9
Как быть при выполнении математических операций, когда термины считаются общеизвестными в области? Пример: использование M вместо «массы» в e = mc ^ 2
Энди Хант

2
@andyBursh - я буду там осторожен. Программисты не часто являются экспертами (или даже компетентными) в своей проблемной области. Тем не менее, такого рода вещи могут быть в порядке, особенно если есть соответствующая ссылка на комментарий к рассматриваемой формуле; Я забыл об этом сценарии.
Теластин

8
@Telastyn - если вы предполагаете, что программист не является экспертом, это часто приводит к тому, что аббревиатуры имеют очень четкое значение и превращаются в длинные имена, которые хотя бы несколько неоднозначны (то есть кто-то решает назвать локальную переменную radiusкогда он хранит внутренний радиус, не понимая, что гораздо более неоднозначно, чем Rin). И тогда разработчик, не являющийся экспертом, должен переводить между своей уникальной номенклатурой и номенклатурой, которую понимает бизнес каждый раз, когда идет обсуждение, касающееся уравнений.
Джастин Кейв

2
Как насчет «я» для счетчика цикла? Или "х" и "у" при работе с координатой? Или переменная, объем которой составляет всего две строки кода?
Брайан Оукли

4
Не согласен с этим ответом. Программист, работающий над программой, содержащей сложные математические выражения, должен иметь возможность хотя бы прочитать формулы в спецификации, иначе они не компетентны. Это не знание проблемной области, это необходимый навык - некоторая базовая математическая компетенция, прежде чем работать над математической программой. Если у программиста нет доступа к формулам спецификаций, это еще одна проблема - и она не может быть решена одними комментариями.
MarkJ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.