Когда полезно использовать время для рефакторинга строковых литералов?

StackOverflow https://stackoverflow.com/questions/562462

Вопрос

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

Стоит ли тратить время на рефакторинг литералов в константы, поскольку приложение достаточно хорошо зарекомендовало себя и хорошо работает?Каковы будут долгосрочные выгоды от этого?

Это было полезно?

Решение

Только если этот проект нуждается в поддержке в будущем, это хорошее использование времени.Если вы будете регулярно поддерживать/расширять эту систему;однако это отличная идея.

1) Существует большая степень риска, связанного со строковыми литералами, поскольку единственную орфографическую ошибку обычно можно обнаружить только во время выполнения.Снижение риска ошибок во время выполнения является серьезным преимуществом, поскольку они могут смущать/разочаровывать.

2) Кроме того, если их когда-либо потребуется изменить, например, когда они используются для ссылки на другую систему (например, имена таблиц, имена серверов и т. д.), их может быть очень сложно обновить, когда имена других систем изменяются.Централизуйте их, и это тривиальная проблема.

Другие советы

Одной общей вещью, которую следует учитывать, было бы i18n.Если вы (или ваши придурки) когда-нибудь захотите продавать свой продукт в Мексике или Франции (и т. д.), вы оцените наличие этих строковых литералов. нет разбросаны по всей кодовой базе.

РЕДАКТИРОВАТЬ:Я понимаю, что это не дает прямого ответа на ваш вопрос, поэтому я голосую за некоторые другие ответы:правило трех и тому подобное.Я понимаю, что вы говорите о существующей базе кода, поэтому уже немного поздно говорить о включении i18n с самого начала.Это так легко сделать, если у вас с самого начала есть привычка.

Мне нравится применять правило трех при рефакторинге.Если это произойдет три и более раз, то код необходимо обновить.

Если строка используется более чем в одном месте, выполните ее рефакторинг.Если он используется только в одном месте, оставьте его в покое.

Если вы провели рефакторинг всех ваших общих строк, их будет проще интернационализировать/перевести.Еще проще, если все они находятся в файлах свойств или в другом их языковом эквиваленте.

Стоит ли тратить время на рефакторинг литералов в константы, поскольку приложение достаточно хорошо зарекомендовало себя и хорошо работает?

Нет, лучше оставь все как есть.

Каковы будут долгосрочные выгоды от этого?

Если никто никогда не прикоснется к этому коду, выгоды не будет.

Однако вы можете избегать добавления новых литералов.Но я бы в значительной степени оставил существование таким, какое оно есть.

Вероятно, вы могли бы реорганизовать их, чтобы лучше спать.

Вероятно, уже есть какие-то другие ошибки, требующие вашего внимания.Вместо этого исправьте их.

Наконец, если вам удастся добавить «рефакторинг» в свой список задач, вперед!!!

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

Даже если вы не хотите переделывать свое приложение, было бы полезно провести рефакторинг ваших строк, поскольку та строка, которая используется сегодня только один раз, возможно, будет повторно использована завтра несколько раз, и если она жестко запрограммирована, вы можете не знать об этом и звезда, повторяющая струну повсюду.

Лучше всего пусть спящие собаки лежат.Если вам нужно изменить строку, которая использовалась восемнадцать раз, да, сделайте это где-нибудь константой.Если вы обнаружите, что работаете в модуле, в котором есть строка, которая может быть константной, сделайте это, если вам так хочется.Но пройдя через все приложение, изменив все строки на константы...это должно быть в самом низу списка дел.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top