Sollte eine abstrakte Klasse immer mit Abstract
vorangestellt werden und Interface
suffixed (wenn es eine Schnittstelle ist)? Gibt es eine Standardbenennungskonvention, ähnlich wie PSR-0 für Ordnerstruktur/Namespaces, aber für Klassen?PHP Benennungskonventionen über abstrakte Klassen und Schnittstellen
Antwort
Es gibt keine Konvention dafür; besonders in PHP. Dies kann alles organisiert werden, wie Sie möchten.
Mit den Zusätzen von namespaces in PHP 5.3, sehe ich nicht die Notwendigkeit Abstract
oder Interface
Präfixe/Suffixe zu den tatsächlichen Klassennamen hinzuzufügen.
Einfach die Dinge so nennen, wie sie sind!
Obwohl es keine Konvention gibt, denke ich, es ist eine gute Praxis mit Abstract
Präfix und Interface
Suffix für entsprechende Komponenten. Es hilft, den Code auf einen Blick besser zu verstehen, IMO.
Konventionen sind, wie Sie sie sehen: Die Sprache selbst erzwingt keine Konventionen außer denen, die den Parser in die Lage versetzen, Ihren Code zu lesen. Grundsätzlich sollten Sie Konventionen für ein bestimmtes Projekt oder besser für alle Ihre Projekte einrichten. Allerdings kann das Arbeiten in Teams von verschiedenen Leuten dazu führen, dass Konventionen nicht eingehalten werden, es hängt wirklich von den Programmierern ab.
Aus meiner Erfahrung würde ich vorschlagen, etwas wie "Design-by-Contract" zu folgen. Benennen Sie Ihre Verträge (Schnittstellen) so, wie Sie Ihre Implementierungsklasse nennen würden, und geben Sie Ihrer Implementierung dann einen spezifischeren Namen (oder Fallback für MyContractNameImpl, das ich meistens von Java her kenne). Außerdem wissen viele moderne IDEs, ob Ihre Klasse eine Schnittstelle oder eine Zusammenfassung ist, also ist es wirklich nicht nötig, das in ihren Namen zu schreiben. Ich finde auch Verträge, die wie "IMyContract" genannt werden, aus den gleichen Gründen nicht wirklich gut.
Benennen von abstrakten Klassen und Schnittstellen unter Verwendung von:
- Zusammenfassung *
- * Schnittstelle
Wird Ihre Code-Basis sauber, schön und klar, um Ihr Team zu halten, was sind die Prototypen, was sind die Verträge und was sind die konkreten Implementierungen.
Namenskonventionen sind hier, um unsere Produktivität unter allen Umständen zu erhöhen, daher ist "Name, wie Sie möchten" bei weitem keine gute Idee.
Obwohl FIG-Gruppe keine Namenskonvention für abstrakte Klassen und Schnittstellen vorschlägt - wenn Sie größere Open-Source-PHP-Projekte untersuchen, werden Sie sehen, dass fast alle diese Konvention verwenden.
- 1. php abstrakte Klassen und Schnittstellen
- 2. OOP-Schnittstellen und abstrakte Klassen
- 3. Welche Vorteile bieten Schnittstellen und abstrakte Klassen?
- 4. Qt-Schnittstellen oder abstrakte Klassen und qobject_cast()
- 5. Xposed Abstrakte Methoden und Schnittstellen
- 6. Abstrakte Klassen vs. Schnittstellen zur Darstellung einer Familie
- 7. Was sind abstrakte Klassen und abstrakte Methoden?
- 8. Abstrakte Methoden ohne abstrakte Klassen
- 9. Klassen und Schnittstellen in Typescript
- 10. Einstellungen von abstrakten Klassen über Schnittstellen in Java 8
- 11. PHP Namespaces und Schnittstellen
- 12. funktioniert AutoMoqCustomization für abstrakte Klassen?
- 13. Naming von Schnittstellen/abstrakte Klassen in PHP 5.3 (unter Verwendung von Namespaces)
- 14. Schnittstellen und Abstraktion
- 15. Warum abstrakte Klassen und Interfaces erstellen?
- 16. statischer Import nur von Klassen und Schnittstellen
- 17. AS3 - Abstrakte Klassen
- 18. newInstance() auf abstrakte Klassen?
- 19. Java Generics, erweitert Generics und abstrakte Klassen
- 20. Interfaces und abstrakte Klassen in F #
- 21. Partielle Klassen, LINQ, Schnittstellen und VB.NET
- 22. Beziehung zwischen zwei Schnittstellen und zwei Klassen.
- 23. PHP-Klasse mit dem Interface und Fehlern über abstrakte Methode
- 24. Abstrakte Klassen - Super-Konstruktor (Java)
- 25. Assembly Benennungskonventionen
- 26. Hinzufügen von Funktionalität zu Schnittstellen/Klassen über C# -Attribute?
- 27. Abstrakte Klassen in GORM-Beziehungen
- 28. Abstrakte Klasse und Schnittstelle zusammen?
- 29. Schnittstelle gegen abstrakte Klassen C++
- 30. Lambda-Ausdrücke für abstrakte Klassen
Es lohnt sich darauf hinzuweisen, dass, wenn Sie das PSR durch Gesetze einhalten wollten, es besagt, dass Sie "Interface" als ausreichend für Schnittstellen einschließen müssen. http://www.php-fig.org/bylaws/psr-naming-conventions/ – wired00