手册目录

变量

表达式

函数

对象和数据结构

类的SOLID原则 SOLID

别写重复代码 (DRY)

PHP代码整洁之道

浏览33981
更新时间2022-04-13

试着去遵循DRY 原则

尽你最大的努力去避免复制代码,它是一种非常糟糕的行为,复制代码 通常意味着当你需要变更一些逻辑时,你需要修改不止一处。

试想一下,如果你在经营一家餐厅并且你在记录你仓库的进销记录:所有 的土豆,洋葱,大蒜,辣椒等。如果你有多个列表来管理进销记录,当你 用其中一些土豆做菜时你需要更新所有的列表。如果你只有一个列表的话 只有一个地方需要更新。

通常情况下你复制代码是应该有两个或者多个略微不同的逻辑,它们大多数 都是一样的,但是由于它们的区别致使你必须有两个或者多个隔离的但大部 分相同的方法,移除重复的代码意味着用一个function/module/class创 建一个能处理差异的抽象。

用对抽象非常关键,这正是为什么你必须学习遵守在类章节写 的SOLID原则,不合理的抽象比复制代码更糟糕,所以务必谨慎!说了这么多, 如果你能设计一个合理的抽象,那就这么干!别写重复代码,否则你会发现 任何时候当你想修改一个逻辑时你必须修改多个地方。

坏:

function showDeveloperList(array $developers): void
{
    foreach ($developers as $developer) {
        $expectedSalary = $developer->calculateExpectedSalary();
        $experience = $developer->getExperience();
        $githubLink = $developer->getGithubLink();
        $data = [
            $expectedSalary,
            $experience,
            $githubLink
        ];
 
        render($data);
    }
}
 
function showManagerList(array $managers): void
{
    foreach ($managers as $manager) {
        $expectedSalary = $manager->calculateExpectedSalary();
        $experience = $manager->getExperience();
        $githubLink = $manager->getGithubLink();
        $data = [
            $expectedSalary,
            $experience,
            $githubLink
        ];
 
        render($data);
    }
}

好:

function showList(array $employees): void
{
    foreach ($employees as $employee) {
        $expectedSalary = $employee->calculateExpectedSalary();
        $experience = $employee->getExperience();
        $githubLink = $employee->getGithubLink();
        $data = [
            $expectedSalary,
            $experience,
            $githubLink
        ];
 
        render($data);
    }
}

极好:

最好让代码紧凑一点

function showList(array $employees): void
{
    foreach ($employees as $employee) {
        render([
            $employee->calculateExpectedSalary(),
            $employee->getExperience(),
            $employee->getGithubLink()
        ]);
    }
}

相关视频

更多

免费

php8,我来也
初级php8,我来也

321790次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382433次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282795次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13415次学习

收藏
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号