Quindi, nei miei sforzi di scrivere un programma per coniugare verbi (algoritmicamente, non attraverso un set di dati) per il francese, ho riscontrato un piccolo problema.
L'algoritmo per coniugare i verbi è in realtà abbastanza semplice per i casi di verbi 17-o-così, e gira su un modello particolare per ogni caso; quindi, i suffissi di coniugazione per queste 17 classi sono statici e (molto probabilmente) non cambieranno presto. Ad esempio:
// 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"]
};
Questi sono suffissi flessivi per la più comune classe di verbo in francese.
Ci sono altre classi di verbi (irregolari), le cui coniugazioni rimarranno molto probabilmente statiche per il prossimo secolo o due. Dal momento che sono irregolari, le loro coniugazioni complete devono essere incluse staticamente, perché non possono essere coniugate in modo affidabile da un modello (ci sono anche solo [dai miei conti] 32 irregolari). Ad esempio:
// "ê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"]
};
Potrei mettere tutto questo in XML o anche JSON e deserializzare quando deve essere usato, ma c'è un punto? Queste stringhe fanno parte del linguaggio naturale, che cambia, ma a un ritmo lento.
La mia preoccupazione è che facendo le cose nel modo "giusto" e deserializzando qualche fonte di dati, non ho solo complicato il problema che non bisogno di essere complicato, ma ho anche completamente rintracciato sull'intero obiettivo dell'approccio algoritmico: per non utilizzare un'origine dati! In C #, potrei semplicemente creare una classe sotto namespace Verb.Conjugation
(ad esempio class Irregular
) per ospitare queste stringhe in un tipo enumerato o qualcosa, invece di farle inglobare in XML e creare un class IrregularVerbDeserializer
.
Quindi la domanda: è appropriato che le stringhe di hard-code siano molto improbabili che cambino durante la vita di un'applicazione? Naturalmente non posso garanzia 100% che non cambieranno, ma il rischio vs costo è quasi banale da soppesare ai miei occhi: l'hardcoding è l'idea migliore qui.
Modifica : proposto duplicato chiede a come memorizzare un gran numero di stringhe statiche , mentre la mia domanda è quando dovrei difficile- codice queste stringhe statiche .