Я нашел Wikipedia entry на мягком кодировании, обрамлении и смущении. Итак, что такое мягкое кодирование? В каких настройках это плохая практика (анти-шаблон)? Кроме того, когда это можно считать полезным, и если да, то как его реализовать?Что такое мягкое кодирование? (Anti-pattern)
ответ
Короткий ответ: переход в крайности, чтобы избежать жесткого кодирования, и в конечном итоге с помощью некоторого сложного слоя абстракции, чтобы поддерживать это хуже, чем если бы с самого начала были жестко закодированные значения. т. е. над разработкой.
Как:
SpecialFileClass file = new SpecialFileClass(200); // hard coded
SpecialFileClass file = new SpecialFileClass(DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());
Хотя у вас все еще есть строка. Вероятно, это должно быть где-то в постоянной или какой-либо собственности. – Kobi
Но если это camelCase, он получает его из реестра вместо DB, duh! –
Ола, хороший пример реального проекта, который имеет концепцию softcoding встроено в это Django проект. Их файл settings.py позволяет абстрагировать определенные параметры данных, чтобы вы могли вносить туда изменения, а не встраивать их в свой код. Вы также можете добавить значения в этот файл и при необходимости использовать их.
http://docs.djangoproject.com/en/dev/topics/settings/
Пример:
Это может быть фрагментом из settings.py файла:
num_rows = 20
Затем в одном из файлов вы можете получить доступ к этому значению:
from django.conf import settings
...
for x in xrange(settings.num_rows):
...
«num_rows» здесь может быть немного вводить в заблуждение и плохой пример, поскольку файл настроек (должен быть) использован для глобальных и/или конкретных приложений, таких как «default_comment_count», «template_directory». 'num_rows' выглядит несколько обобщенным. –
Принимая во внимание, что это пример, и фактическая переменная действительно не имеет значения, «num_rows» действительно вписывается в файл настроек. Допустим, у вас есть пара страниц с таблицами данных. Простой способ управления количеством строк, отображаемых в этих таблицах, - это переменная в файле настроек. – johannix
май n точка Daily WTF article on soft coding заключается в том, что из-за преждевременной оптимизации и страха система, которая очень хорошо определена и нет дублированных знаний, изменяется и становится более сложной без какой-либо необходимости.
Главное, что вы должны иметь в виду, - если ваши изменения действительно улучшают вашу систему и избегают легко маркировать что-то как анти-шаблон и избегать его всеми средствами. Конфигурирование вашей системы и предотвращение жесткого кодирования - это простое средство для дублирования знаний в вашей системе (см. Пункт 11: «DRY Do not Repeat Yourself» в The Pragmatic Programmer Quick Reference Guide). Это основная потребность в предотвращении жесткого кодирования. То есть в идеале должно быть только одно место в вашей системе (это будет код или конфигурация), которые должны быть изменены, если вам нужно изменить что-то столь же простое, как сообщение об ошибке.
Конечной в softcoding:
const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.
Это кажется мне прекрасным - это позволяет избежать загромождения вашего кода магическими числами, даже если эти числа являются постоянными и неизменными. – PaulJWilliams
+1 для Индианы. –
Я думаю, что конечная в softcoding больше похожа: const int ONE = 1; const int TWO = 2; и т. Д. – tfinniga
Это не относится к статье Википедии о softcoding но полезная маленькая хитрость иногда перевести свой язык от «английского» на «Простой английский» в Википедии. – Travis