Что такое мягкое кодирование? (Анти-паттерн)

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

Ответы

Ответ 1

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

Как

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

SpecialFileClass file = new SpecialFileClass( DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());

Ответ 2

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

Главное, что вы должны иметь в виду, - это то, что ваши изменения действительно улучшают вашу систему и избегают легко маркировать что-то как анти-шаблон и избегать его во что бы то ни стало. Конфигурирование вашей системы и предотвращение жесткого кодирования - это простое средство для дублирования знаний в вашей системе (см. Пункт 11: "DRY Do not Repeat Yourself" в Краткий справочник по программированию Pragmatic Руководство). Это заставляет задуматься о том, чтобы избежать жесткого кодирования. То есть в идеале должно быть только одно место в вашей системе (это будет код или конфигурация), которые должны быть изменены, если вам нужно изменить что-то так же просто, как сообщение об ошибке.

Ответ 3

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

Ответ 4

Конечная точка в мягком кодировании:

const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.