Случай 1: Когда следует жестко кодировать вещи: когда у вас нет оснований думать, что они когда-нибудь изменятся. Тем не менее, вы должны НИКОГДА не разбирать жесткий код в строке. Потратьте время на создание статических или глобальных переменных или всего того, что дает вам ваш язык. Сделайте их в рассматриваемом классе, и если вы заметите, что два класса или области вашего кода имеют одинаковое значение по той же причине (то есть это не просто совпадение), укажите их в одном месте.
Случай 2: Для случая 2 вы правы: законы «процента» не изменятся (здесь разумно), поэтому вы можете жестко встроить код.
Случай 3: В третьем случае вы думаете, что ситуация может измениться, но вы не хотите / не имеете времени загружать ResourceBundles или XML или что-то еще. В этом случае вы используете любой возможный механизм централизации - ненавистный класс Singleton - хороший - и продолжайте в том же духе, пока вам действительно не понадобится решать проблему.
Третий случай сложен, однако: чрезвычайно сложно интернационализировать приложение, не выполняя его на самом деле ... поэтому вы захотите жестко закодировать материал и просто надеяться, что, когда парни из i18n постучат, ваш код не худший вкус кода вокруг:)
Редактировать: Позвольте мне упомянуть, что я только что закончил проект рефакторинга, в котором предыдущий разработчик поместил строки подключения MySql в более 100 мест в коде (PHP). Иногда они были прописными, иногда строчными и т. Д., Поэтому их было трудно найти и заменить (хотя Netbeans и PDT очень помогли). Есть причины, по которым он / она сделал это (проект под названием POG в основном вызывает эту глупость), но нет ничего, что кажется * на 1020 * меньше, чем хороший код, чем повторять то же самое в миллионах мест.