In welcher Sprache soll ich meine Businessklassen benennen?

29

Ich fordere Best Practice für diese Frage an. Dies ist nur dann ein Problem, wenn die Kundenfirma streng national ist und eine andere Muttersprache als Englisch hat, denke ich.

Wenn der Kunde viele hauptsächlich sehr domänenspezifische Ausdrücke hat, gemischt mit einigen weniger domänenspezifischen Bezeichnungen. Die Sprache unserer Codekommentare, Klassen- / Methoden- / Variablennamen ist Englisch. Würden Sie alle domänenspezifischen Namen übersetzen?

Zeemee
quelle
11
Englisch. Lingua Franca für die Programmierung.
Rig
6
Eines der ‚herausfordernden‘ PHP - Fehlermeldungen hat eine interessante Wendung Hebräisch: unexpected T_PAAMAYIM_NEKUDOTAYIM. Nachdem ich das einige Male in meinem Leben gesehen habe, habe ich keine Zweifel, dass man Englisch sprechen sollte.
K.Steff,
3
Enthält einer der domänenspezifischen deutschen Ausdrücke Sonderzeichen (z. B. Umulauten (sp?))? Wenn Sie Programmierer außerhalb Ihrer Region einstellen, können diese möglicherweise keine Tastatur mit den erforderlichen Zeichen finden (meine nicht). Ja, es gibt Möglichkeiten, die "getippte" Sprache zu wechseln, aber ich möchte diesen Aufwand nicht.
Clockwork-Muse
2
Griechisch - Nicht-lateinische Alphabete sind sicherer als klingonische.
Wyatt Barnett
3
@ X-Zero außerhalb von normalem ASCII öffnet die "Welche Zeichenkodierung verwenden wir" -Dose von Würmern. Normalerweise wird man gebissen und fährt nicht mehr dorthin.

Antworten:

16

Ich arbeite in Deutschland und ziehe es vor, Englisch zu lernen.

Manchmal verwende ich zB domänenspezifische Dinge wie das Erstellen eines Moduls zu "DATEV" (deutsche Rechnung / Abrechnungssoftware) deutsche Namen. Einige deutsche Wörter können nicht richtig übersetzt werden, z. B. "Referenzbuchungsnummer" oder "Sachkontenlaenge". Ich denke auch, dass domänenspezifische Dinge in Wartungshorror enden würden. Vielleicht würden Sie sich daran erinnern, dass sich ReferenceBookingNum auf die Referenzbuchungsnummer bezieht, aber was ist mit Ihren Mitarbeitern? Sie müssen die interne Dokumentation über die Benennung studieren, falls eine Dokumentation vorhanden ist. Sie werden mit dem Modul nicht sehr vertraut sein, wenn sie keine richtigen Namen haben. Es ist eine unnötige Komplexität, wenn alle anderen Entwickler auch Deutsche sind. Aber "CakeFactory" klingt viel besser als "KeksFabrik";)

Es kommt also alles darauf an.

lurkerbelow
quelle
2
Diese Antwort spiegelt meine persönliche Meinung am ehesten wider, nachdem ich die anderen Antworten gelesen habe. Besonders dieser Punkt: "Es ist eine unnötige Komplexität, wenn alle anderen Entwickler auch Deutsch sind", wenn alles übersetzt wird.
Zeemee
1
@Mulmoth: "Es ist unnötig kompliziert, wenn alle anderen Entwickler auch Deutsche sind" --- Wie können Sie sicher sein, dass das Projekt zu einem bestimmten Zeitpunkt, in einigen Jahren, nicht in ein anderes Land ausgelagert wird? Wie können Sie sicher sein, dass ein nicht deutschsprachiger Entwickler nicht irgendwann in das Projekt aufgenommen wird?
Coral Doe
5
@Coral Doe - Ich denke, dass neue / andere / Outsourcing-Entwickler bereits tief in den Geschäftsbereich und seine spezifischen Ausdrücke eintauchen müssen . So ist es imho einfacher abzubilden, was der Kunde (der dann noch deutsch sein wird) zu deutsch benannten Klassen sagt, anstatt zu schlecht / falsch übersetzten englischen Namen.
Zeemee
2
Deutsches Rechnungswesen / steuerbezogenes "Zeug" wird niemals in ein nicht deutschsprachiges Land ausgelagert. An der Universität erzählte mir jemand, dass 85 Prozent aller Rechnungs- / Steuerbücher auf deutsches Recht verweisen und in deutscher Sprache verfasst sind. weltweit.
Lurkerbelow
3
Ich bin damit einverstanden, aber ein Problem, das fast immer auftritt, ist, dass die von Entwicklern verwendete Sprache Benutzern und anderen Interessengruppen bekannt wird. Nicht als Teil der Benutzeroberfläche, sondern wie Sie über die Problemdomäne sprechen. Dies wird unweigerlich zu Verwirrung führen, da nicht jeder so fließend Englisch spricht wie die meisten Entwickler.
Mille Bessö
14

Als Norweger, der in einer norwegischen Firma arbeitet, benenne ich meine Objekte auf Englisch. Natürlich haben einige Wörter oder Konzepte möglicherweise kein Gegenstück zum Englischen, und in diesem Fall kann man argumentieren, dass ein Muttersprachler anstelle eines schlechten Ersatzes oder einer wörtlichen Übersetzung verwendet wird, die keine Bedeutung hat. Natürlich könnten viele dieser Probleme die Tatsache sein, dass einige von uns einen besseren Wortschatz haben sollten, deshalb frage ich normalerweise einen Kollegen, ob mir kein guter englischer Name einfällt :)

Einige unserer Mitarbeiter sind nicht norwegisch und können daher auch auf Englisch schreiben. Die Möglichkeit, Programmierer aus den meisten Teilen Europas einzustellen, ist für die Wirtschaft von Vorteil, sodass auch mein Unternehmen davon profitiert.

Übrigens: Ich erinnere mich, dass ich die Quelle von Hermes einmal gelesen habe (ebXML b2b-Implementierung) und es mir schwer gefallen wäre, wenn sie in Mandarin geschrieben und kommentiert hätten.

Sylwester
quelle
5
Fast bearbeitet "College", was ich vermute, soll "Kollege" sein, aber ich war nicht sicher, ob es beabsichtigt war.
Jacob Schoen
Natürlich meinte ich Kollegen :)
Sylwester
Of course some words or concepts might not have a English counterpart- Ich bin immer neugierig, wenn das in der Programmierung auftaucht, fast so, als ob Sie ein Designmuster kennen, das nur Englisch sprechende nicht finden würden. Hast du ein kurzes Beispiel?
Izkata
5
@ Izkata: Die Frage war über Business- Klassen. Sie sind häufiger an länderspezifische Vorschriften gebunden. Wenn Sie nach dem Gesetz beispielsweise gezwungen sind, den Standort aller Lastwagen mit gefährlichen Chemikalien zu ermitteln, können Sie diese Klasse nach diesem Gesetz benennen.
MSalters
9

Ich glaube, da Englisch die Verkehrssprache der IT-Domäne ist, führt die Beschränkung Ihres Quellcodes auf eine andere Sprache zu künstlichen Hindernissen für dessen Entwicklung. Zunächst begrenzen Sie den Pool der Personen, die zu Personen beitragen können, die eine bestimmte Sprache sprechen. Der gleiche Grund, den Sie im Stapelaustausch und nicht auf einer lokalen Site gefragt haben.

Sie wissen auch nicht, woher die Beiträge kommen und wohin sie gehen. Was ist, wenn Sie ein Beispiel von einer Website verwenden, werden Sie das übersetzen? Was ist, wenn das Produkt erweitert wird, um von Kunden in einem anderen Land verwendet zu werden? Müssen Sie einen Auftragnehmer beauftragen / ein wenig auslagern? Warum auf einen Pool beschränken und nicht aus der ganzen Welt das Beste herausholen?

Kann davon ausgehen, dass es für einige domänenspezifische Strukturen in Ordnung ist, die sich nicht leicht auf andere Sprachen abbilden lassen, oder wenn eine vorhandene Codebasis beibehalten wird.

Dimitrios Mistriotis
quelle
9

Mein letztes Projektziel war es, den Geschäftsbereich von Sicherheiten und Hypotheken zu modellieren. Alle Entwickler und die Firma, für die wir gearbeitet haben, kommen aus Polen. Wir haben die Software nach Domain Driven Design-Prinzipien entwickelt. Wir haben polnische Namen für alle Unternehmenseinheiten verwendet und ich denke, es war eine sehr gute Wahl. Ich denke, dass wir durch diesen Ansatz Kommunikationsprobleme vermeiden konnten. Der Geschäftsbereich bestand aus vielen Begriffen, die ich nicht einmal auf Polnisch kannte, ganz zu schweigen von englischen Übersetzungen. Wir verwendeten nur lateinische Buchstaben und alle technischen Klassen wurden auf Englisch benannt.

empi
quelle
4
Das ist ein guter Punkt: Wenn alle Domain-Kenntnisse in der Landessprache vorliegen und keine vereinbarten englischen Namen für die Domain-Konzepte vorhanden sind, kann die Verwendung der Landessprache eine gute Idee sein.
Joachim Sauer
7

Es ist im Allgemeinen einfacher, in einer einzigen Sprache geschriebenen Quellcode zu lesen. Dies bedeutet für die meisten Programmiersprachen, dass Sie es auf Englisch schreiben sollten.

Das heißt, es gibt ein großes Problem mit Domain-Konzepten, die sich nicht leicht ins Englische übersetzen lassen. Ein typisches Beispiel ist eine eindeutige Kennung, die die Gesellschaft dem Einzelnen gibt. In den USA ist das nächstliegende Konzept die Sozialversicherungsnummer, es handelt sich jedoch nicht um eine genaue Zuordnung. Namen und Telefonnummern lassen sich normalerweise recht gut zuordnen.

Ich glaube, dass es normalerweise notwendig ist , die Domainbegriffe beizubehalten, wenn eine genaue Zuordnung nicht ohne weiteres auf Englisch verfügbar ist, sondern nur diese - den Rest auf Englisch. Dies führt zu ungewöhnlichen Bezeichnern wie KommuneImpl, sollte jedoch für diejenigen, die die Domäne kennen, sofort Sinn machen.


quelle
2

Open-Source / internationale Gemeinschaftsprojekte

Die gemeinsame Sprache von Open Source- und internationalen Community-Projekten ist Englisch. Beispiel: Die Sprache der Stack Exchange-Sites ist Englisch. Um die größtmögliche Zugänglichkeit zu gewährleisten, sollte für alle Code- und Objektnamen Englisch verwendet werden.

Kommerzielle Projekte

Die meisten internationalen Softwarefirmen schreiben den Code in Englisch vor. Es ist der größte gemeinsame Nenner, daher ist es sinnvoll, Englisch als Mittel zur Schaffung von Konsistenz zu verwenden.

Viele regionale Softwarefirmen schreiben in ihrer Muttersprache. Nicht alle folgen diesem Ansatz, aber es ist aus ihrer Sicht sinnvoll - sie verwenden die gemeinsame Sprache für alle ihre Entwickler.

Geschäftsobjekte benennen

Die Codierungssprache des Teams sollte verwendet werden, um Objekte zu benennen.
Die Entwickler müssen in erster Linie in der Lage sein, über die Objekte und die Projektanforderungen miteinander zu kommunizieren. Wenn das Team in Französisch schreibt, sollten die Geschäftsobjekte in Französisch benannt werden. Wenn sie in Englisch codieren, benennen Sie die Objekte in Englisch.

Ihre Frage fügt eine Falte hinzu, weil der Kunde eine andere Muttersprache spricht als die Programmiersprache Ihres Teams. Sie sollten weiterhin die Programmiersprache Ihres Teams verwenden, um die Objekte zu benennen.
Wenn die Geschäftsanalysten oder Entwickler mit dem Kunden über die spezifischen Geschäftsobjekte kommunizieren müssen, kann eine bedarfsgerechte Übersetzung des Objektnamens von der Codierungssprache in die Kundensprache erforderlich sein. Aus meiner Erfahrung ist es ziemlich selten, dass ich mit dem Client über bestimmte Codeobjekte gesprochen habe, sodass die Übersetzung zurück in die Client-Sprache nicht wirklich erforderlich war.

Die einzige Ausnahme von der Benennungsregel besteht darin, dass ein Objekt keinen anderen ausreichend präzisen Begriff hat, um die Absicht des Objekts zu erfassen. IMO, das ist wirklich selten, aber es kann vorkommen. In Wirklichkeit ist es jedoch dasselbe, was gesprochene Sprachen tun, um bestimmte Konzepte auszudrücken. " Facade " ist ursprünglich ein französischer Begriff, wurde jedoch vom Englischen angepasst, um das Konzept auszudrücken, und ist ein gängiges Entwurfsmuster. " Schadenfreude " ist ein weiteres gutes Beispiel für einen geliehenen Begriff, obwohl ich glaube, dass er kein entsprechendes Muster hat.


quelle
1
Wie es scheint, widerspricht Ihr letzter Absatz Ihrem ersten vollkommen
James
@ James - danke! Ich habe diesen Abschnitt entfernt, da ich im Moment nicht die Zeit habe zu klären, was ich meinte. Es sollte unterstützen, aber egal.
1
Entschieden widersprechen. Da die Kernkonzepte praktisch aller Sprachen, denen Sie begegnen, in englischer Sprache verfasst sind, führt die Verwendung einer nicht englischen Terminologie zu einem weniger lesbaren Quellcode. Der Geist muss ständig zwischen Englisch und der anderen Sprache wechseln. Code sollte fließend und lesbar sein.
Mike Adler
@MikeAdler - Es ist nicht klar, ob Sie mit der von mir vorgeschlagenen allgemeinen Regel (Benennen von Dingen in der Teamsprache) oder dem Ausnahmefall, der sehr selten sein sollte, nicht einverstanden sind.
Gewährt. Ich werde klarstellen: Ich bin nicht einverstanden, dass ein Objekt jemals in einer anderen Sprache als Englisch benannt werden sollte. Ihre erste Überschrift "Open Source / International Community Type Projects" spiegelt meine Sichtweise sehr gut wider. Alles danach kaufe ich nicht. Wie bereits erwähnt, liegt der Grund in der Wartbarkeit, die meiner Meinung nach für praktisch jede Designentscheidung (einschließlich des Namensschemas), die Sie treffen, von entscheidender Bedeutung sein sollte.
Mike Adler