我找到了关于软编码反模式简洁和混乱的维基百科条目。什么是软编码?在什么环境下这是一种不好的做法(反模式)?此外,什么时候可以被认为是有益的,如果是的话,应该如何实施呢?

有帮助吗?

解决方案

简短回答:走向极端以避免硬编码并最终得到一些怪物复杂的抽象层来维持比从一开始就存在硬编码值的情况更糟糕的情况。即过度工程。

像:

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

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

其他提示

关于软编码的每日WTF文章的要点是因为过早的优化和害怕一个定义得很好的系统,没有重复的知识被改变,变得更加复杂,没有任何需要。

您应该记住的主要事项是,如果您的更改实际上改善了您的系统,并避免轻微地将某些内容标记为反模式并且无论如何都要避免它。配置系统并避免硬编码是解决系统中重复知识的一种简单方法(请参阅实用的程序员快速参考指南)这是避免硬编码建议背后的驱动需求。即理想情况下,如果你必须改变像错误信息一样简单的东西,你的系统中应该只有一个地方(即代码或配置)应该被改变。

Ola,一个真实项目的一个很好的例子,内置了软编码的概念是 Django 项目。他们的settings.py文件抽象出某些数据设置,以便您可以在那里进行更改,而不是将它们嵌入代码中。如有必要,您还可以向该文件添加值,并在必要时使用它们。

http://docs.djangoproject.com/en/dev/topics/设置/

示例

这可能是settings.py文件中的一个片段:

num_rows = 20

然后在您的一个文件中,您可以访问该值:

from django.conf import settings
...

for x in xrange(settings.num_rows):
   ...

最终的软编码:

const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top