【发布时间】:2010-10-23 20:13:39
【问题描述】:
我发现软编码反模式上的Wikipedia entry 简洁而令人困惑。那么什么是软编码?在什么设置下是不好的做法(反模式)?另外,什么时候可以认为是有益的,如果有,应该如何实施?
【问题讨论】:
-
这不适用于维基百科关于软编码的文章,但有时一个有用的小技巧是在维基百科上将您的语言从“英语”切换为“简单英语”。
标签: anti-patterns
我发现软编码反模式上的Wikipedia entry 简洁而令人困惑。那么什么是软编码?在什么设置下是不好的做法(反模式)?另外,什么时候可以认为是有益的,如果有,应该如何实施?
【问题讨论】:
标签: anti-patterns
简短的回答:为了避免硬编码而走极端,并最终使用一些令人费解的抽象层来维护,这比硬编码值从一开始就存在的情况更糟糕。即过度工程。
喜欢:
SpecialFileClass file = new SpecialFileClass( 200 ); // hard coded
SpecialFileClass file = new SpecialFileClass( DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());
【讨论】:
Daily WTF article on soft coding 的主要观点是,由于过早的优化和恐惧,一个定义非常明确且没有重复知识的系统被更改并变得更加复杂而无需任何需要。
您应该牢记的主要事情是,如果您的更改确实改进了您的系统,并且避免轻易地将某些东西标记为反模式并通过各种方式避免它。配置系统并避免硬编码是解决系统中重复知识的简单方法(请参阅The Pragmatic Programmer Quick Reference Guide 中的第 11 点:“DRY Don't Repeat Yourself”)这是避免硬编码建议背后的驱动需求。 IE。理想情况下,如果您必须更改诸如错误消息之类的简单内容,则系统中应该只有一个位置(即代码或配置)应该更改。
【讨论】:
Ola,具有内置软编码概念的真实项目的一个很好的例子是Django 项目。他们的 settings.py 文件抽象了某些数据设置,以便您可以在那里进行更改,而不是将它们嵌入到您的代码中。如有必要,您还可以向该文件添加值并在必要时使用它们。
http://docs.djangoproject.com/en/dev/topics/settings/
示例:
这可能是来自 settings.py 文件的 sn-p:
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.
【讨论】: