Donc, dans mes efforts pour écrire un programme de conjugaison de verbes (en utilisant un jeu de données) pour le français, j'ai rencontré un léger problème.
L'algorithme permettant de conjuguer les verbes est en fait assez simple pour les cas de verbes d'environ 17 ans, et utilise un modèle particulier pour chaque cas; ainsi, les suffixes de conjugaison pour ces 17 classes sont statiques et ne changeront (très probablement) pas de sitôt. Par exemple:
// 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"]
};
Ce sont des suffixes flexionnels pour la classe de verbe la plus courante en français.
Il existe d'autres classes de verbes (irréguliers), dont les conjugaisons resteront très probablement statiques pendant un ou deux siècles. Étant donné qu’elles sont irrégulières, leurs conjugaisons complètes doivent être incluses statiquement, car elles ne peuvent pas être conjuguées de manière fiable à partir d’un motif (il n’ya également que 32 personnes irrégulières). Par exemple:
// "ê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"]
};
Je pourrais mettre tout cela en XML ou même en JSON et le désérialiser au besoin, mais y a-t-il un objectif? Ces chaînes font partie du langage naturel, qui change, mais à un rythme lent.
Ce qui me préoccupe, c’est qu’en agissant de la manière «correcte» et en désérialisant certaines sources de données, j’ai non seulement compliqué le problème, qui n’a pas besoin d’être compliqué, mais aussi complètement relégué au second plan. approche algorithmique: ne pas utiliser une source de données! En C #, je pourrais simplement créer une classe sous namespace Verb.Conjugation
(par exemple class Irregular
) pour héberger ces chaînes dans un type énuméré ou quelque chose du genre, au lieu de les insérer dans XML et de créer un fichier class IrregularVerbDeserializer
.
Donc, la question: est-il approprié de coder en dur des chaînes qui sont très peu susceptibles de changer pendant la durée de vie d'une application? Bien sûr, je ne peux pas garantir à 100% qu'ils ne changeront pas, mais le rapport coût / risque est presque trivial à peser à mes yeux - le codage en dur est la meilleure idée ici.
Edit : le doublon proposé demande comment stocker un grand nombre de chaînes statiques , alors que ma question est de savoir quand devrais-je coder en dur ces chaînes statiques .