Содержимое
#плохойкод Магические строки Продолжаем разбираться с тем, какой код писать НЕ стоит. В предыдущем посте я рассказывала про магические числа в коде, которых в идеале быть не должно. Сегодня поговорим о магических строках или строковых литералах в коде. Пример: if (name == "alligator") Вот эта строка "alligator" - и есть магическая. Что с ней не так, спросите вы? Если это единственное место в коде программы, где она встречается, то, в принципе ничего особо страшного в ней нет. Но представьте, что вот таких if (name == "alligator") в коде много, и эта строка повторяется в разных местах, скажем, раз 10. Что тогда может пойти не так? Например, в одном месте вы напишете по ошибке aligator,в другом aligater,в третьем alligator - и синтаксически код будет верным, но он будет давать неправильные результаты в ряде случаев, где вы опечатались. И придется проверять в 10 местах, правильно ли там написана строка. Или, к примеру, вы используете ctrl + C, ctrl + V - копируете и вставляете этого аллигатора в разные места в коде. В итоге если вы ошибетесь в начале, то 10 раз вставите в код неправильные значения, и потом придется 10 же раз заменять на верные (да, современные текстовые редакторы позволяют это сделать достаточно легко, но зачем, если этого вообще можно избежать?). Как сделать по-другому? Как и с магическими числами - заведите константы для таких строк. 1 раз в коде программы объявите константу: ALLIGATOR = "alligator" Используйте везде в коде эту константу: if (name == ALLIGATOR) Если вы ошиблись в строке «alligator», и её надо на что-то исправить - её придётся исправлять ровно 1 раз, в 1 месте - там, где вы объявляли константу, и всё. В других местах кода незамеченных ошибок не возникнет. Если по ошибке написать, например, if (name == LIAGITATOR) - код не запустится, и интерпретатор (или компилятор) выведет ошибку о том, что переменная LIAGITATORне существует. И так баг будет исправлен на самой ранней стадии, и не проскользнёт незаметно в продакшен.