Entonces, en mis esfuerzos por escribir un programa para conjugar verbos (algorítmicamente, no a través de un conjunto de datos) para el francés, me encontré con un pequeño problema.
El algoritmo para conjugar los verbos es en realidad bastante simple para los más o menos 17 casos de verbos, y se ejecuta en un patrón particular para cada caso; por lo tanto, los sufijos de conjugación para estas 17 clases son estáticos y (muy probablemente) no cambiarán en el corto plazo. Por ejemplo:
// 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"]
};
Estos son sufijos de inflexión para la clase de verbo más común en francés.
Hay otras clases de verbos (irregulares), cuyas conjugaciones probablemente también permanecerán estáticas durante el próximo siglo o dos. Como son irregulares, sus conjugaciones completas deben incluirse estáticamente, porque no pueden conjugarse de manera confiable a partir de un patrón (también hay solo [según mi recuento] 32 irregulares). Por ejemplo:
// "ê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"]
};
Podría poner todo esto en XML o incluso JSON y deserializarlo cuando sea necesario, pero ¿hay algún punto? Estas cadenas son parte del lenguaje natural, que cambia, pero a un ritmo lento.
Mi preocupación es que al hacer las cosas de la manera "correcta" y deserializar alguna fuente de datos, no solo he complicado el problema que no tiene por qué ser complicado, sino que también he retrocedido por completo en todo el objetivo del enfoque algorítmico: ¡ no usar una fuente de datos! En C #, podría crear una clase bajo namespace Verb.Conjugation
(por ejemplo class Irregular
) para alojar estas cadenas en un tipo enumerado o algo así, en lugar de rellenarlas en XML y crear un class IrregularVerbDeserializer
.
Entonces la pregunta: ¿ es apropiado codificar cadenas que es muy poco probable que cambien durante la vida útil de una aplicación? Por supuesto, no puedo garantizar al 100% que no cambien, pero el riesgo frente al costo es casi trivial para mí: la mejor idea aquí es la codificación dura.
Editar : El duplicado propuesto pregunta cómo almacenar una gran cantidad de cadenas estáticas , mientras que mi pregunta es cuándo debo codificar estas cadenas estáticas .