Php 以牺牲效率为代价的SRP?还是使用不当?
如果我们有2节课Php 以牺牲效率为代价的SRP?还是使用不当?,php,oop,dry,single-responsibility-principle,Php,Oop,Dry,Single Responsibility Principle,如果我们有2节课 class databaseGateway class format 假设我们通过databaseGateway进行查询,得到5行。 我们希望应用格式并更新数据库中的行 我们可以在一个循环内完成所有这一切 foreach($rows as $entry => $array) { $update['page'] = $format->html($array['page']; $update['id'] = $array['id']; $
class databaseGateway
class format
假设我们通过databaseGateway进行查询,得到5行。
我们希望应用格式并更新数据库中的行
我们可以在一个循环内完成所有这一切
foreach($rows as $entry => $array) {
$update['page'] = $format->html($array['page'];
$update['id'] = $array['id'];
$databaseGateway->update($update);
}
但这是否违背了单一责任原则?根据这个原则,我们是否需要一个循环来格式化行,另一个循环来更新数据库
foreach($rows as $entry => $array) {
$rows[$entry] = $format->html($array['page']);
}
foreach($rows as $entry => $array) {
$databaseGateway->update($array);
}
这似乎是对资源的浪费,也是对代码的重复?违背的原则,不要重复自己的原则
处理这个问题的正确专业方法是什么?似乎很普遍
谢谢我认为,这个问题属于SRP,它并不反对SRP,因为你的级别太低,不符合这个原则,更新需要格式化。这两个动作实际上是同一“服务”的一部分。顺便说一句,在设计类和方法时应用SRP,而不是“for”loopsRP并没有说你不能在一个循环中做多件事。@MikeSW如果forloop在一个方法中,那么这个方法将做两件事,为了更容易理解要点,我省略了过多的代码。然而,低水平似乎是合乎逻辑的,这一点不需要应用原则@Digital Chris关于不在一个循环中做多件事情,我们在一个循环中做的越多,这是否也会导致更紧密的耦合?我猜你可以夸大一切。为什么要格式化内存中的字符串,然后对其执行任何操作?MikeSW是正确的,这两件事是紧密耦合的,因为其他一切都没有任何意义。