Bei meinen Bemühungen, ein Programm zur Konjugation von Verben (algorithmisch, nicht über einen Datensatz) für Französisch zu schreiben, bin ich auf ein kleines Problem gestoßen.
Der Algorithmus zur Konjugation der Verben ist für die etwa 17 Fälle von Verben eigentlich recht einfach und wird für jeden Fall nach einem bestimmten Muster ausgeführt. Daher sind die Konjugationssuffixe für diese 17 Klassen statisch und werden sich (sehr wahrscheinlich) in Kürze nicht mehr ändern. Zum Beispiel:
// Verbs #1 : (model: "chanter")
terminations = {
ind_imp: ["ais", "ais", "ait", "ions", "iez", "aient"],
ind_pre: ["e", "es", "e", "ons", "ez", "ent"],
ind_fut: ["erai", "eras", "era", "erons", "erez", "eront"],
participle: ["é", "ant"]
};
Dies sind Beugungssuffixe für die häufigste Verbklasse in Französisch.
Es gibt andere Klassen von Verben (Unregelmäßigkeiten), deren Konjugationen höchstwahrscheinlich auch für die nächsten ein oder zwei Jahrhunderte statisch bleiben werden. Da sie unregelmäßig sind, müssen ihre vollständigen Konjugationen statisch eingeschlossen werden, da sie nicht zuverlässig aus einem Muster konjugiert werden können (es gibt auch nur [nach meiner Zählung] 32 Unregelmäßigkeiten). Zum Beispiel:
// "être":
forms = {
ind_imp: ["étais", "étais", "était", "étions", "étiez", "étaient"],
ind_pre: ["suis", "es", "est", "sommes", "êtes", "sont"],
ind_fut: ["serai", "seras", "sera", "serons", "serez", "seront"],
participle: ["été", "étant"]
};
Ich könnte das alles in XML oder sogar JSON einfügen und es deserialisieren, wenn es verwendet werden muss, aber gibt es einen Punkt? Diese Saiten sind Teil der natürlichen Sprache, die sich zwar ändert, jedoch nur langsam.
Meine Sorge ist , dass durch die Dinge , die „richtige“ Art und Weise und Deserialisieren einige Datenquelle zu machen, ich habe nicht nur das Problem kompliziert , die nicht brauchen kompliziert zu sein, aber ich habe auch ganz zurück Abwege auf das gesamte Ziel der algorithmischer Ansatz: nicht eine Datenquelle verwenden! In C # könnte ich einfach eine Klasse unter namespace Verb.Conjugation
(z. B. class Irregular
) erstellen , um diese Zeichenfolgen in einem Aufzählungstyp oder etwas anderem unterzubringen, anstatt sie in XML einzufügen und eine zu erstellen class IrregularVerbDeserializer
.
Also die Frage: ist es zu hart Codefolgen angemessen , dass es sehr unwahrscheinlich , dass Änderung während der Lebensdauer einer Anwendung? Natürlich kann ich nicht 100% ig garantieren, dass sie sich nicht ändern, aber das Risiko gegenüber den Kosten ist in meinen Augen fast trivial - Hardcoding ist hier die bessere Idee.
Bearbeiten : In dem vorgeschlagenen Duplikat wird gefragt, wie eine große Anzahl statischer Zeichenfolgen gespeichert werden soll. Meine Frage lautet jedoch, wann ich diese statischen Zeichenfolgen fest codieren soll .