Assim, em meus esforços para escrever um programa para conjugar verbos (algoritmicamente, não através de um conjunto de dados) para o francês, deparei-me com um pequeno problema.
O algoritmo para conjugar os verbos é realmente bastante simples para os mais ou menos 17 casos de verbos e é executado em um padrão específico para cada caso; portanto, os sufixos de conjugação para essas 17 classes são estáticos e (muito provavelmente) não serão alterados tão cedo. Por exemplo:
// 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"]
};
Estes são sufixos flexionados para a classe de verbo mais comum em francês.
Existem outras classes de verbos (irregulares), cujas conjugações provavelmente também permanecerão estáticas nos próximos dois séculos. Como são irregulares, suas conjugações completas devem ser incluídas estaticamente, porque não podem ser conjugadas de maneira confiável a partir de um padrão (também existem apenas [pela minha conta] 32 irregulares). Por exemplo:
// "ê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"]
};
Eu poderia colocar tudo isso em XML ou JSON e desserializá-lo quando precisar ser usado, mas há algum ponto? Essas cadeias fazem parte da linguagem natural, que muda, mas em um ritmo lento.
Minha preocupação é que, ao fazer as coisas da maneira "correta" e desserializar alguma fonte de dados, eu não apenas tenha complicado o problema que não precisa ser complicado, mas também tenha retrocedido completamente todo o objetivo do abordagem algorítmica: para não usar uma fonte de dados! Em C #, eu poderia apenas criar uma classe em namespace Verb.Conjugation
(por exemplo class Irregular
) para abrigar essas seqüências de caracteres em um tipo enumerado ou algo assim, em vez de colocá-las em XML e criar a class IrregularVerbDeserializer
.
Portanto, a pergunta: é apropriado para cadeias de código rígido que são muito pouco provável que a mudança durante o tempo de vida de uma aplicação? É claro que não posso garantir 100% de que eles não vão mudar, mas o risco versus o custo é quase trivial para pesar nos meus olhos - codificar é a melhor ideia aqui.
Edit : O duplicado proposto pergunta como armazenar um grande número de strings estáticas , enquanto minha pergunta é quando devo codificar essas strings estáticas .