SOLID design principles (programming)
Design Prinzipien zu robusterem und besser lesbarem Code.
https://www.youtube.com/watch?v=WQue1AN93YU
Dafür gibt es ein paar Benennungs Muster, Design Prinzipien aber auch ein paar nicht so kompliziert umzusetzende Programmier Patterns.
Stichworte
Open Closed Principle
Entität (z.B. Klasse) offen für Erweiterung aber geschlossen für Modifikation. Funktionalität wird durch Erweitern des Codes nicht durch Ändern erreicht. Dadurch weniger Fehleranfällig. Wie macht man das ? Separiere Verhaltensweisen.
Programming Patterns
Factory Pattern
Create different Class Instances on Runtime
Bsp.
interface PayableInterface
{
public function pay();
}
class CreditCardPayment implements PayableInterface{
public function pay()
{
// do credit card payment
}
}
class PaypalPayment implements PayableInterface{
public function pay()
{
// do paypal payment
}
}
//...
class PaymentFactory{
public function initializePayment($type)
{
if($type === 'credit'){
return new CreditCardPayment();
} elseif($type === 'paypal'){
return new PaypalPayment();
}
throw new Exception("Unsupported payment option");
}
}
Indem man die PaymentFactory dazwischen schaltet und jeder Zahlungsweise die pay Funktion implementiert muss man nur die Factory anpassen und eine neue Klasse hinzufügen. Hätte man die Zahlungsoptionen in einer Klasse zusammengefasst, müßte man mit jeder neuen Option die Klasse ändern. Dadurch wächst die Gefahr dass sich neue Fehler einschleichen können.