PHP-Refactoring folgt den Prinzipien der Einzelverantwortung, der Open-Closed- und der Liskov-Substitution und implementiert das Refactoring durch Extrahieren von Methoden, Verwenden von Entwurfsmustern sowie Verwenden von Tools und Tests. Teilen Sie beispielsweise komplexe Funktionen auf, verwenden Sie die Abhängigkeitsinjektion, um die Testbarkeit zu verbessern, und erreichen Sie Code-Skalierbarkeit und Wartbarkeit.
Prinzip
Methode
1. Extraktionsmethode
Extrahieren Sie einen Teil des Codes in einer komplexen Methode in eine separate Methode, um die Lesbarkeit und Wartbarkeit zu verbessern.
Beispiel:
class User { public function save($data) { // 验证数据 // 存储数据 // 发送确认邮件 } }
Nach dem Refactoring:
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. Verwendung von Designmustern
Designmuster bieten vorgefertigte Lösungen für häufige Probleme wie Singleton-, Factory- und Beobachtermuster.
Beispiel:
Verwenden Sie Factory-Muster, um verschiedene Objekte zu erstellen, ohne bestimmte Typen angeben zu müssen:
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. Verwenden Sie Tools
Verwenden Sie Code-Analysetools (wie PHPStan, PHP CS Fixer), um automatisch zu erkennen und mögliche Probleme beheben.
4. Führen Sie Tests durch.
Schreiben Sie Tests, bevor Sie den Code umgestalten, um sicherzustellen, dass der neue Code die vorhandene Funktionalität nicht beeinträchtigt.
Praktischer Fall:
Refaktorisieren Sie eine komplexe Funktion, teilen Sie sie in mehrere kleinere Funktionen auf und verwenden Sie die Abhängigkeitsinjektion, um die Testbarkeit zu verbessern:
Vor dem Refactoring:
function sendNotification($userId, $message, $type) { // ...发送通知逻辑... }
Nach dem Refactoring:
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); }
Durch die Verwendung von Abhängigkeit Durch die Injektion können Sie problemlos zu verschiedenen Benachrichtigungsabsendern wechseln und so die Testbarkeit und Flexibilität Ihres Codes verbessern.
Das obige ist der detaillierte Inhalt vonPrinzipien und Methoden des PHP-Code-Refactorings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!