gpt4 book ai didi

php - 什么时候在源代码中硬编码数据,什么时候使用数据库,什么时候使用网络服务?

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:51 25 4
gpt4 key购买 nike

考虑下面的类,其中一些与产品及其组件相关的数据被硬编码到源代码中。

class ProductCharacteristics
{
private $model;

function __construct($model)
{
$this->model = $model;

//Since there are several product models,
//we hardcode each model separately.
//models are 50, 100, 200

//length
$this->length[ 50] = array(5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5);
$this->length[100] = array(5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5);
$this->length[200] = array(5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5);

//weights
$this->weight[ 50] = array(20, 114, 50);
$this->weight[100] = array(68, 192, 68);
$this->weight[200] = array(68, 192, 68);

//descriptions
$this->description[ 50] = array('3"', '3"', 6.50);
$this->description[100] = array('6"', '6"', 6.50);
$this->description[200] = array('6"', '6"', 6.50);

}

public function getLengths()
{
return $this->length[$this->modelNumber];
}

public function getWeights()
{
return $this->weight[$this->modelNumber];
}

public function getDescriptions()
{
return $this->description[$this->modelNumber];
}
}

//instantiate:
$pc = new ProductCharacteristics(50);
$weight = $pc->getWeight();
print 'weight of component 1 is ' . $weight[0];
print 'weight of component 2 is ' . $weight[1];

问题一:

是否应该将这种类型的数据(小的、很少更改的)编码(放置)到数据库中。为什么或者为什么不?我要寻找的不仅仅是一个是/否。寻找一点解释/历史/基本原理。

问题 2:

我选择硬编码而不是将其放入数据库的原因是因为我的印象是“为这么小的数据集调用数据库是昂贵的,而且令人望而却步”。如果我有 2MiB 的此类数据,我当然不会将其放入源代码中。但由于该集合很小,我将其放入源代码中还有一个额外的好处,即如果任何数据发生变化,我的源代码控制存储库中会跟踪该变化。如果它发生在数据库级别,我将无法知道更改

因此,我认为将其硬编码到代码中“没什么大不了的”。我已经运行了代码,因此可以轻松访问一个仅包含数据的额外文件。

问题:如果改为在数据库中对该数据进行编码,这是“大事”还是相对“没什么大事”?也就是说,如果源代码中的硬编码数据是 O(1),那么将它放入数据库中有什么大不了的呢?

它在{访问时间、开销}方面是否与源代码中的硬编码数据相似?我至少将使用数据库视为 O(2),因为我们必须使用外部程序,即数据库系统来获取数据。

我可以证明我也可以使用 Web 服务获取数据,但将它放在 O(3) 中,因为它是一个外部系统,我们必须调用外部系统并且还需要网络权重延迟。

最佳答案

答案 1

显然,可以对永不更改的数据进行硬编码。

偶尔/很少更改的数据是在某些时候仍需要可配置的数据。因此,不应对其进行硬编码,因为重新配置软件比更新源代码/编译/重新部署要容易得多。

答案 2

对于 99% 的情况,将数据存储在数据库中并不是什么大问题。否则,它们为什么会存在?对于数据库访问,它是关于延迟/开销的。如果您的数据库服务器与您的程序驻留在同一操作系统实例上,则没有网络延迟,并且开销将取决于您的数据库设计和底层存储架构(RAM/HDD/SSD)的组合。对于大多数不涉及数百万/数十亿规模的项目,使用任何通用数据库部署都可以。

关于php - 什么时候在源代码中硬编码数据,什么时候使用数据库,什么时候使用网络服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com