Строковые литералы используются в качестве ключей в словарях, в качестве параметров для веб-сервисов. Читателю предлагается отвлечься на минутку и обнаружить ошибку в коде:
Второй пример посложнее:
Ну и третий пример:
В первом примере допущена орфографическая ошибка в ключе “password”. Во втором примере ключ сформирован явно не по правилам английского языка, поэтому знание орфографии здесь не помогат. Такой ключ можно проверить только по документации (ну или по памяти, у кого она хорошая). В третьем случае проверить правильность ключа можно только сверив с источником, откуда этот ключ был получен.
Ошибки в строковых литералах нельзя обнаружить ни на этапе ввода кода, ни на этапе компиляции. Самый ранний этап обнаружения таких ошибок — модульное тестирование.
Надежно!
Пиши код таким образом, чтобы обнаруживать ошибки на стадии ввода инструкций или компиляции.
Как обнаружить эту ошибку на более ранних этапах, например, на этапе компиляции? Решение: избавиться от строковых литералов, заменив их на ссылки на объекты строкового типа. Таким образом, строковый литерал будет записан в программе единожды, а последующие опечатки будут исключены: компилятор не скомпилирует идентификатор с опечаткой. Например:
Можно следовать простому правилу: каждый строковый литерал должен встречаться в программе только один раз. Если один и тот же строковый литерал нужно использовать несколько раз, то вместо него объявляется константная ссылка на объект строки, затем используется только эта ссылка.