什么是软编码? (反模式)

时间:2009-05-05 06:34:48

标签: anti-patterns

我在软编码反​​模式上发现Wikipedia entry简洁而且令人困惑。什么是软编码?在什么环境下这是一种不好的做法(反模式)?此外,什么时候可以被认为是有益的,如果是的话,应该如何实施呢?

5 个答案:

答案 0 :(得分:23)

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

像:

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

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

答案 1 :(得分:5)

Daily WTF article on soft coding的要点是,由于过早优化并担心一个定义得非常好且没有重复知识的系统会被改变,并且在没有任何需要的情况下变得更加复杂。

您应该记住的主要事项是,如果您的更改实际上改善了您的系统,并避免轻微地将某些内容标记为反模式,并通过各种方式避免它。配置系统并避免硬编码是解决系统中重复知识的一种简单方法(参见The Pragmatic Programmer Quick Reference Guide中的第11点:“干不要重复自己”)这是避免硬编码建议背后的驱动需求。即理想情况下,如果你必须改变像错误信息一样简单的东西,你的系统中应该只有一个地方(即代码或配置)应该被改变。

答案 2 :(得分: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):
   ...

答案 3 :(得分:1)

软编码:这是将来自外部源的值插入计算机程序的过程。例如通过键盘,命令行界面插入值。软编码被认为是良好的编程习惯,因为开发人员可以轻松地修改程序。 硬编码。在编写源代码的过程中为程序分配值并创建程序的可执行文件。现在,更改或修改程序源代码的值非常困难。就像区块链技术一样,创世块是无法更改或修改的硬代码。

答案 4 :(得分:0)

最终的软编码:

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