硬编码数组和对象还是从数据库中填充? [关闭]

Posted

技术标签:

【中文标题】硬编码数组和对象还是从数据库中填充? [关闭]【英文标题】:Hardcoding Arrays and Objects or populate from Database? [closed] 【发布时间】:2013-05-17 21:24:25 【问题描述】:

目前,我正在为我的公司建立一个产品网站,其中包含大约 80 或 90 种具有各种特性的独特产品。

最初,我硬编码了一个多维数组来存储产品及其各种特征。除了需要大量打字来设置它还觉得更新/维护很有挑战性。

我还觉得我在网站的其他地方有很多意大利面条式代码,所以我了解了 OOP 并利用类结构和接口重构了网站。非常漂亮和干净。除了,现在我面临着硬编码对象,其中有很多。

我读了很多资料,知道我可能可以将数组数据转换为对象,但由于某些产品特性可能会经常变化,因此维护问题不断出现。我对此的解决方案是使用 mysql 数据库(似乎更易于维护)并将产品和特征数据从那里提取到对象中。

我的问题是: 这通常是最佳实践吗?数组/对象是否通常以这种方式填充,并且一开始就对其进行硬编码很疯狂? 提前为新手问题道歉。我已经阅读了大量内容,但没有遇到任何可以提供我正在寻找的直接建议的内容。我的大脑可能短路了,但我也无法从我所读到的内容中清楚地综合起来。

【问题讨论】:

无法想象您以前从未听说过数据库! @hek2mgl - 我有,但我认为我很早就收到了不好的建议,认为将数据存储在数组中是一条更好的路线。要么那个,要么我误解了这个建议。 我不知道你听说了什么,但这通常是由数据库完成的。 感谢@hek2mgl,它只是证明了你不应该相信你在互联网上读到的所有东西,至少如果你不确定你的解释是否正确,哈哈。 是的.. 当然可以。并且可能是教程中的一个步骤,但最终的解决方案将使用数据库。您自己说过:将代码和数据放在一起时管理会变得混乱。请注意,数据库甚至可以是 xml 文件。 【参考方案1】:

在您的情况下,我肯定会重构现有代码并将其放在数据库轨道上。

出于重构目的,我建议您使用模型对象,这些对象可以从数据库或使用不同适配器的硬编码数组中填充。

通过添加模型对象重写您的代码,以便使用现有数据源(硬编码数组)处理您的业务逻辑实体;然后将数据源更改为数据库。

【讨论】:

非常感谢您的回复。你不仅给出了一个可靠的建议,还提供了一个清晰的路线图来说明如何实现它,从而强化了重构的原则。对编程新手的好建议。 @mjs 欢迎您!阅读有关设计模式的更多信息,它们将帮助您对现有代码进行有效的重构。【参考方案2】:

如果您要运行的唯一查询是SELECT * FROM `table`;,那么您可以使用硬编码数组。如果您将使用任何其他查询来访问数据,那么它应该在数据库中。

【讨论】:

谢谢,这是一个非常好的指南。如此多的信息是关于如何遍历数组、进行数组到数据库的转换,反之亦然,或者与性能/内存相关,有时很难找到基线设计/结构原则,即在 y 情况下最好利用 x。

以上是关于硬编码数组和对象还是从数据库中填充? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从硬编码数组而不是 DB 创建游标

initialValues仅在硬编码时预填充数据,但不在动态数据中预填充数据

为啥在组件中导入 VS 硬编码时,对象数组的行为会有所不同?

是否可以将数组元素与没有循环的硬编码初始化列表进行比较? [关闭]

用数据库数据填充数组并在pickerView上调用它

从 Firebase 填充数组传递 UITableViewCell 数据