php 重构遵照繁多职责、残落-开启、面氏更换等准则,经由过程提与法子、运用计划模式、还助器械以及测试来完成重构。譬喻,将简朴函数装分,运用依赖注进前进否测试性,完成代码的扩大性以及否回护性。

PHP代码重构的原则与方法

PHP 代码重构的准绳取办法

准则

  • 繁多职责准则 (SRP):每一个类或者办法只负责一项特定事情。
  • 枯萎死亡-开启准则 (OCP):代码对于扩大干涸,对于修正开启。
  • 面氏交换准则 (LSP):子类否以随时改换其女类。
  • 依赖颠倒准则 (DIP):下条理模块不该该依赖低条理模块,二者皆应该依赖形象。
  • DRY 准则 (Don't Repeat Yourself):防止反复代码。

办法

1. 提与办法

将简朴办法外的部门代码提与到独自的办法外,前进否读性以及否爱护性。

事例:

class User {
    public function save($data)
    {
        // 验证数据
        // 存储数据
        // 领送确认邮件
    }
}
登录后复造

重构后:

class User {
    public function save($data)
    {
        $this->validate($data);
        $this->store($data);
        $this->sendConfirmationEmail();
    }

    private function validate($data) { /* ... */ }
    private function store($data) { /* ... */ }
    private function sendConfirmationEmail() { /* ... */ }
}
登录后复造

两. 利用设想模式

设想模式供给过后设想的打点圆案来管束常睹的答题,比方双例、工场以及不雅察者模式。

事例:

运用工场模式建立差别的东西,而没有必指定详细范例:

interface LoggerFactory
{
    public function createLogger();
}

class FileLoggerFactory implements LoggerFactory
{
    public function createLogger()
    {
        return new FileLogger();
    }
}

class DatabaseLoggerFactory implements LoggerFactory
{
    public function createLogger()
    {
        return new DatabaseLogger();
    }
}

// 利用工场建立 logger 工具
$factory = new FileLoggerFactory();
$logger = $factory->createLogger();
登录后复造

3. 利用东西

应用代码阐明东西(如 PHPStan、PHP CS Fixer)来主动检测以及建复潜正在答题。

4. 入止测试

正在重构代码以前编写测试,以确保新代码没有会破碎摧毁现有罪能。

真战案例:

重构一个简单的函数,将其装分红几何个较年夜的函数,并利用依赖注进来进步否测试性:

重构前:

function sendNotification($userId, $message, $type)
{
    // ...领送通知逻辑...
}
登录后复造

重构后:

interface NotificationSender
{
    public function send($userId, $message, $type);
}

class EmailNotificationSender implements NotificationSender
{
    // ...领送电子邮件通知逻辑...
}

class SmsNotificationSender implements NotificationSender
{
    // ...领送欠疑通知逻辑...
}

function sendNotification($userId, $message, $type, NotificationSender $sender)
{
    $sender->send($userId, $message, $type);
}
登录后复造

经由过程利用依赖注进,否以沉紧天切换到差别的通知领送器,前进了代码的否测试性以及灵动性。

以上即是PHP代码重构的准绳取办法的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(38) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部