Redundant Variables Are Pure Evil

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Лишняя переменная - это та, которая существует исключительно для объяснения своего значения. Я твердо уверен, что такая переменная является не только чистым шумом, но и злом, с очень негативным влиянием на читабельность кода. Когда мы вводим лишнюю переменную, мы намерены сделать наш код более чистым и понятным. Однако на деле мы делаем его более громоздким и сложным для понимания. Без исключения, любая переменная, используемая только один раз, является лишней и должна быть заменена значением.

Здесь переменная fileName является лишней.

Этот код должен выглядеть иначе:

Этот пример очень примитивный, но я уверен, что вы видели такие избыточные переменные много раз. Мы используем их для “объяснения” кода - это уже не просто строковый литерал "test.txt", а fileName. Код выглядит более понятным, верно? Не совсем.

Давайте разберемся, что такое “читаемость” кода в первую очередь. Я считаю, что эту характеристику можно измерить по количеству секунд, которое мне требуется, чтобы понять код, который я смотрю. Чем дольше это время, тем ниже читаемость. В идеале, я хочу понимать любой кусок кода за несколько секунд. Если не могу, это ошибка его автора.

Помните, если я вас не понимаю, это ваша вина.

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

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

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

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

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-28 at 15:43

sixnines availability badge   GitHub stars