PHP リファクタリングは、単一責任、オープン/クローズ、リスコフ置換の原則に従い、メソッドの抽出、デザイン パターンの使用、ツールとテストの使用によってリファクタリングを実装します。たとえば、複雑な関数を分割し、依存関係注入を使用してテスト容易性を向上させ、コードのスケーラビリティと保守性を実現します。
原則
メソッド
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() { /* ... */ } }
2. デザイン パターンの使用
デザイン パターンは、シングルトン、ファクトリー、オブザーバー パターンなどの一般的な問題に対する事前に設計されたソリューションを提供します。
例:
特定のタイプを指定せずにさまざまなオブジェクトを作成するには、ファクトリ パターンを使用します:
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コードリファクタリングの原則と方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。