27 Stimmen

Was ist "Codierung nach Konvention"?

Ich habe mir Groovy auf Grails angesehen und eine Zeile am unteren Rand bemerkt, die sagt:

Grails zielt darauf ab, das Paradigma des "Codierens nach Konvention" in Groovy einzubringen.

Was genau ist Kodierung nach Konvention?

29voto

Ivan Prodanov Punkte 33160

Convention over Configuration (auch bekannt als Coding by convention) ist ein Paradigma für den Softwareentwurf, das darauf abzielt, die Anzahl der Entscheidungen, die Entwickler treffen müssen, zu verringern, wodurch sie an Einfachheit gewinnen, aber nicht unbedingt an Flexibilität verlieren.

Der Ausdruck bedeutet im Wesentlichen, dass ein Entwickler nur unkonventionelle Aspekte der Anwendung angeben muss. Wenn es zum Beispiel eine Klasse Sale im Modell gibt, heißt die entsprechende Tabelle in der Datenbank standardmäßig Sales. Nur wenn man von dieser Konvention abweicht, z. B. wenn man die Tabelle "products_sold" nennt, muss man Code für diese Namen schreiben.

Wenn die von dem von Ihnen verwendeten Tool implementierte Konvention mit dem von Ihnen gewünschten Verhalten übereinstimmt, genießen Sie die Vorteile, ohne Konfigurationsdateien schreiben zu müssen. Wenn Ihr gewünschtes Verhalten von der implementierten Konvention abweicht, dann konfigurieren Sie Ihr gewünschtes Verhalten.

De Artikel "Übereinkommen über die Gestaltung" auf Wikipedia .

16voto

Michael Borgwardt Punkte 334642

Im Kontext von Grails bedeutet "Kodierung durch Konvention", dass eine Menge (mühsamer und sich wiederholender) expliziter Code und/oder Konfiguration durch einfache Namens- und Verzeichnisstrukturkonventionen ersetzt wird. Zum Beispiel:

  • Jede Klasse, deren Name im Verzeichnis grails-app/controllers mit Controller endet, ist automatisch ein Spring-Controller und die darin definierten Closures werden an URLs gebunden - Sie müssen dies nicht in einer XML-Datei konfigurieren, wie Sie es bei der Verwendung von reinem Spring tun müssten.
  • Das gleiche gilt für Taglibs (grails-app/taglib Verzeichnis) - keine mühsamen TLD-Dateien mehr!
  • Domänenklassen in grails-app/domain haben wahrscheinlich die meiste "Konventionsmagie", da sie automatisch auf ein automatisch generiertes DB-Schema abgebildet werden - mit DB-Tabellen- und Spaltennamen, die per Konvention identisch mit den Domäneneigenschaftsnamen sind.

9voto

flytzen Punkte 7046

Kodierung nach Konvention versus Kodierung nach Konfiguration: Die Idee, dass man bestimmte Platzierungs- oder Namenskonventionen für Dinge hat, damit man dem Programm nicht explizit sagen muss, wo etwas ist oder wie es heißt.
In ASP.Net MVC gibt es zum Beispiel eine Konvention dafür, wo die Ansichten gespeichert werden und wie sie heißen. Das heißt, wenn Ihr Code den Server anweist, eine Ansicht zurückzugeben, sucht die Laufzeitumgebung in bestimmten Ordnern nach einer Ansicht mit einer bestimmten Namensstruktur. Siehe Seite 20 in dieses pdf für mehr Klarheit.

Ein weiteres Beispiel sind die Namenskonventionen für Methoden. In einer ereignisgesteuerten Sprache könnten Sie zum Beispiel explizit angeben, welche Methode welche Ereignisse behandelt, oder Sie können sich auf eine Namenskonvention verlassen - wie ..._OnOpen oder ...OnClick - und sich dann darauf verlassen, dass die Laufzeit die richtige Methode für ein bestimmtes Ereignis herausfindet.

4voto

duffymo Punkte 298898

Hier gibt es viele Konventionen:

  1. Wie man HTML-Elemente so benennt, dass sie als Parameter der HTTP-Anfrage leicht zugänglich sind;
  2. Wie man Objektattribute mit Tabellen- und Spaltennamen in der Datenbank verbindet;
  3. Wie man ein Projekt in Verzeichnissen/Paketen anordnet;

Das ist es, was man tut, wenn man ein gemeinsames Problem in einem bestimmten Stil löst. Man stellt Ähnlichkeiten fest und kodifiziert sie in einem Automatisierungsschema.

4voto

James Gregory Punkte 14055

Siehe Konvention vor Konfiguration . Es handelt sich um das Konzept, ein Werkzeug oder Framework so zu gestalten, dass die gängigsten Konfigurationsoptionen als Standardeinstellungen vorhanden sind, so dass für die große Mehrheit der Benutzer keine Konfiguration erforderlich ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X