我有一个在请求开始时计算的$c变量。在计算完这个之后,有几个嵌套方法使用它作为其工作的一部分。我把$c变量传递给每个方法还是根据请求存储它(可能缓存它),这样做更好吗?并使用每个方法中存储的值来获得$c的值。
$c = 'time consuming calculated value`
a($c);
b($c);
e($c);
function a($c){
// some work using $c
}
function b($c){
// some work using $c
}
function c($c){
// some work using $c
}
function d($c){
// some work using $c
}
function e($c) {
// some work
d($c)
// some other work
}$c = 'time consuming calculated value`;
cache::set('unique-key', $c);
function a(){
// some work using cache::get('unique-key');
}
function b(){
// some work using cache::get('unique-key');
}
function c(){
// some work using cache::get('unique-key');
}
function d(){
// some work using cache::get('unique-key');
}
function e() {
// some work
d();
// some other work
}我正在使用第一种方法--正确地知道--来更多地分离方法(与数据收集),但不确定哪种方法更好,或者还有其他方法吗?
发布于 2021-09-19 14:41:36
这里有两个相反的目标
通常,有一种折衷的可能性:如果这些函数a到f(或其中的几个)可以成为公共类的成员函数,那么$c可以传递到该类的构造函数中,并存储在一个成员变量中。因此,$c不再是纯全局状态或纯本地状态,而是类级状态(理想情况下,在对象构造之后不再发生任何更改)。
但是,如果用函数a到f作为成员函数创建类是有意义的,则不能由这些荒谬的名称a到f来决定。
因此,让我再次揭穿我们在这个站点上一遍又一遍地在数百个问题中看到的一个非常常见的误解:one不会仅仅通过查看语法结构来做出这样的决定--什么是“最好的”取决于预期的语义和上下文,而不提及问题中的任何一个,就很难说出在您的情况下什么是最有意义的。
https://softwareengineering.stackexchange.com/questions/432030
复制相似问题