Как вы думаете, x, y, z - хорошие имена переменных? Как вы объясните новому программисту, как писать читаемый код?

Конечно, по этому поводу существует несколько школ, но я бы использовал их только для счетчиков и посоветовал бы гораздо более описательные имена для любых других переменных.
x, y и z могут быть отличными именами переменных. Например, вы можете писать код, который ссылается на них в декартовой трехмерной системе координат. Эти имена часто используются для трех осей в такой системе, и как таковые они хорошо подходят.
Я бы дал им некоторую работу по обслуживанию некоторого кода с переменными, называемыми x, y, z, и позволил бы им понять для себя, что удобочитаемость жизненно важна ...
95% кода просматривает не автор, а заказчик, о котором все забывают - следующий программист. Вы должны сделать ей жизнь проще.
Хорошие имена переменных точно описывают, что они собой представляют, не будучи слишком сложными. Я всегда использую описательные имена, даже в циклах (например, index вместо i). Это помогает отслеживать, что происходит, особенно когда я работаю над переписыванием особенно сложного фрагмента кода.
Давайте дадим им кусок плохого кода и попросим отладить его. Возьмите следующий код (простой пример)
<?php $a = fopen('/path/to/file.ext', 'w');$b = "NEW LINE\n";fwrite($a, $b);fclose($a);?>
Ошибка: файл всегда содержит только 1 строку, когда это должен быть журнал. Проблема: 'w' в fopen должно быть 'a'
Это, очевидно, очень простой пример. Если вы хотите дать им более крупный, более сложный пример, дайте им Источник ОМУ и попросите их предоставить вам читаемый код через 2 часа, он передаст вашу точку зрения.
x, y и z являются допустимыми именами переменных, если они представляют трехмерные координаты или если они используются для итерации по двумерным или трехмерным массивам.
Насколько я понимаю, этот код прекрасен:
for(int x = 0; x < xsize ; x++)
{
for(int y = 0; y < ysize ; y++)
{
for(int z = 0; z < zsize ; z++)
{
DoSomething(data[x][y][z]);
...
умный пример - найдите область, в которой x, y и z больше не просто случайные буквы!
Я бы с большей вероятностью использовал i, j и k для итерации по трехмерной таблице. Чувствуется больше «симпатии»
Пока x, y и z являются (трехмерными) декартовыми координатами, тогда они великие имена.
Аналогичным образом, i, j и k подойдут для переменных цикла.
Во всех случаях имена переменных должны относиться к данным.
Как уже говорилось, x, y и z - хорошие переменные для трехмерных координат, но, вероятно, плохие для всего остального ...
Если кто-то не считает, что имена важны, просто используйте обфускатор кода для некоторого кода, а затем попросите его отладить его :-).
(Кстати, это единственная ситуация, когда обфускатор кода может быть полезен ИМХО)
Это короткий ответ, но он мне очень подходит:
Если это было бы нуждается в комментарии кода, чтобы описать это, переосмыслите имя переменной.
Итак, если очевидно, почему был выбран «x», то это хорошие имена. Например. «i» как имя переменной в цикле (часто) довольно очевидно.
Идеальное имя переменной должно быть как коротким (чтобы сделать код более компактным), так и описательным (чтобы помочь понять код).
Мнения расходятся относительно того, что из двух важнее. Лично я бы сказал, что это зависит от объема переменной. Переменная, используемая только в трехстрочном цикле, может быть однобуквенной. Поле класса в классе из 500 строк лучше быть чертовски наглядным. Философия Спартанское программирование гласит, что, насколько это возможно, все блоки кода должны быть достаточно маленькими, чтобы имена переменных могли быть очень короткими.
Читаемый код и хорошие соглашения об именах - это не одно и то же!
Хорошее имя для переменной - это такое, которое позволяет вам понять (или разумно угадать) назначение и тип переменной, БЕЗ видения контекста, в котором она используется. Таким образом, «x», «y» и «z» обозначают координаты, потому что это разумное предположение. И наоборот, плохая репутация - это то, что приводит вас к неверному предположению. Например, если «x», «y» и «z» представляют людей.
Хорошее имя для функции - это имя, которое передает все, что вам нужно знать о ней, без необходимости обращаться к ее документации. Это не всегда возможно.
Читаемый код - это прежде всего код, структурированный код которого можно понять, даже если вы запутаете все имена переменных и функций. Если вы делаете это и не можете легко понять структуру управления, вы облажались.
Если у вас есть читаемый код и хорошее именование, возможно, у вас будет действительно читаемый код.
Кажется, что существуют несколько разные соглашения для разных языков программирования; однако в наши дни консенсус заключается в том, чтобы ...
Вот достойное резюме того, что Microsoft публикует как стандартные соглашения об именах для .NET.
Изобретатель python опубликовал гид по стилю, который включает соглашения об именах.
Было время, когда разработчики Microsoft VC++ (включая меня) фактически сплотились вокруг того, что было известно как Венгерская нотация.
Читаемый код означает некоторую комбинацию комментариев и имен переменных и функций, которая позволяет мне один раз прочитать код и понять его. Если мне придется прочитать его более одного раза или потратить время на проработку сложных циклов или функций, есть возможности для улучшения.
Хорошие сводные описания в верхней части файлов и классов полезны, чтобы дать читателю контекстную и справочную информацию.
Четкие имена важны. Подробные имена значительно упрощают написание читабельного кода с гораздо меньшим количеством комментариев.
Написание читаемого кода - это навык, на освоение которого нужно время. Мне лично нравятся излишне подробные имена, потому что они создают самодокументированный код.
На эту тему есть множество тем: stackoverflow.com/questions/…