Что такое мягкое кодирование? (Анти-паттерн) - PullRequest
15 голосов
/ 05 мая 2009

Я нашел запись в Википедии на анти-паттерне мягкого кодирования, кратком и запутанном. Так что же такое мягкое кодирование? В каких настройках это плохая практика (анти-паттерн)? Кроме того, когда это может считаться полезным, и если да, то как это должно быть реализовано?

Ответы [ 4 ]

23 голосов
/ 05 мая 2009

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

Как:

SpecialFileClass file = new SpecialFileClass( 200 ); // hard coded

SpecialFileClass file = new SpecialFileClass( DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());
6 голосов
/ 05 мая 2009

Суть статьи Daily WTF о мягком кодировании заключается в том, что из-за преждевременной оптимизации и страха система, которая очень хорошо определена и не имеет дублирующихся знаний, изменяется и становится более сложной без какой-либо необходимости. .

Главное, что вы должны иметь в виду, это то, что ваши изменения действительно улучшают вашу систему и избегают легкой маркировки чего-либо как анти-паттерна и избегайте этого всеми средствами. Конфигурирование вашей системы и избежание жесткого кодирования - это простое лекарство от дублирования знаний в вашей системе (см. Пункт 11: «СУХОЙ, НЕ повторяйте себя» в Краткое справочное руководство программиста Pragmatic ). предложение избежать жесткого кодирования. То есть в идеале должно быть только одно место в вашей системе (это был бы код или конфигурация), которое следует изменить, если вам нужно изменить что-то столь же простое, как сообщение об ошибке.

3 голосов
/ 05 мая 2009

Ола, хорошим примером реального проекта, в который встроена концепция программного кодирования, является проект 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):
   ...
0 голосов
/ 05 мая 2009

Максимальное программирование:

const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...