|
|
1
10
当然,在大多数情况下,糟糕的配置数据可能会像糟糕的代码一样彻底破坏发布,所以整件事在很大程度上是一种幻觉——实际上,无论是代码还是“配置数据”发生了变化,重要的是主系统和发生变化的部分之间的接口是狭窄的,并且定义明确,足以给你一个很好的机会,让做出改变的人理解他所做事情的所有后果。 当它实际上只是配置了几个字符串和数字时,这已经比大多数人想象的要难了(我亲眼目睹了一个生产大型机系统崩溃,因为它的一个布尔值设置与它正在与之通信的另一个系统不同)。当你的“配置数据”包含复杂的逻辑时,几乎不可能实现。但情况不会因为你使用了设计糟糕的特设“规则配置”语言而不是“真实”代码而有所改善。 |
|
|
2
9
数据是系统中可以更改的部分。代码定义行为;数据转换为新数据的方式。 描述 数据应该表示什么(例如,一个有名称和类型的变量)和 . 变量的值可以根据代码中定义的规则进行更改。当然,描述不会改变,因为如果改变了,我们就会得到一条全新的信息。
|
|
|
3
2
这一切都取决于要求。如果数据像查找数据一样经常变化,你真的不想在代码中这样做,但像一周中的某一天这样的事情在未来200年左右不应该发生变化,所以就这样编码吧。 你可能会考虑改变你的话题,因为当我看到它时,我首先想到的是LISP关于代码与数据的古老讨论。幸运的是,Scheme中的代码和数据看起来是一样的,但就是这样,你永远不会意外地将代码与数据混合在一起,就像LISP中使用不卫生的宏一样。 |
|
|
4
2
在选择的问题上,你想让你的代码变得多么灵活。在不重新处理源代码的情况下,包含常量值(如上所述使用if语句所做的事情)是不灵活的,而使用动态源数据则更灵活。这两种方法都错了吗?我想说,这真的取决于具体情况。正如Leppie所说,有些“数据”点是不变的,比如一周中的几天可以硬编码,但即使在那里,在某些情况下动态编码也可能是有利的。 |
|
|
5
1
|
|
|
6
1
重要的是,您希望将每次执行相同代码的部分(即应用折扣)与可能更改的代码部分(即要折扣的产品或折扣百分比等)分开 这只是为了安全。如果折扣发生变化,您不必重写折扣代码,只需进入折扣存储库(DB、应用程序文件、xml文件,或您选择实现的任何文件),对数字进行小幅更改。
leppie 说,你需要提取不断变化的部分,并将它们放在一个单独的地方。 |
|
|
7
1
巨大的差异。数据是给系统的,而代码是系统的一部分。 错误的数据是毫无意义的:我们的代码===处理程序是好的,你放的东西不是系统的问题,而是你的意思。但若代码不好,系统也不好。 举个例子,让我们考虑一些JSON,一些我写的糟糕的代码parser.js,以及一些好的V8。对于我的系统来说,糟糕的parser.js是一段代码,我的系统工作不正常。但对于谷歌系统来说,我糟糕的解析器是无法说明V8质量的数据。 |
|
|
8
0
数据就是信息。这与你决定把它放在哪里无关,无论是db、配置文件、通过代码配置还是在类中。
|
|
|
9
0
术语 -例如,你可以说数据就是一切非代码的东西。但是,正如你所写的,他们 能 愉快地混合在一起(尽管通常最好把它们分开)。 |
|
|
10
0
代码是任何可以执行的数据。现在,由于所有数据在某个时间点都被用作某个程序的输入,可以说这些数据是由程序执行的!因此,您的程序充当数据的虚拟机。因此,从理论上讲,数据和代码之间没有区别! 最后,重要的是软件工程/开发考虑因素,如性能、效率等。例如,数据驱动程序可能不如具有硬编码(因此是脆弱的)条件语句的程序高效。因此,我选择将代码定义为任何可以高效执行的数据,而其他所有数据都是纯数据。
如果我错了,请纠正我。 |
|
|
11
0
代码和数据之间的关系如下: 编译成程序后的代码在执行时处理数据
此外 程序可以提取代码、转换代码、加载代码、生成代码。.. 因此,没有编译或解释器的代码是无用的,数据总是有价值的。..,但编译后的代码可以完成上述所有活动。...
源代码控制系统进程源代码 这里的源代码本身就是一个代码 备份脚本处理文件
|
|
|
12
0
例如,对于编译器来说,它使用的源代码和创建的目标代码都是数据,应该与编译器自己的代码分开。 在你的例子中,你似乎在描述一个特别强大的配置文件的选项,其中可以包含代码。例如,GIMP允许您使用Scheme“配置”插件。作为读取此配置的组件的开发人员,您会将其视为数据。当在另一个级别工作时——编写配置——你会把它看作代码。 这是一种非常强大的设计方式。 将此应用于基本问题(“您将如何编写上述示例?”),一种选择可能是采用或设计一种高级领域特定语言(DSL)来指定规则。在启动时或首次需要时,服务器读取规则并执行它。 提供管理员界面,允许管理员 …所有这些都会在运行时发生。 DSL可能像表解析器或XML解析器一样简单,也可能像脚本语言一样复杂。从C开始,很容易嵌入Python或Lua。从Java很容易嵌入Groovy或Clojure。 您可以在运行时通过巧妙的链接或类加载器技巧切换编译后的代码。在我看来,这似乎比嵌入式DSL选项更困难,价值更低。 |
|
|
13
0
这就是为什么,例如,Java的HashMap是数据——尽管它有很多代码、API方法和特定的实现(即 |