Quindi, nei miei sforzi di scrivere un programma per coniugare i verbi (algoritmicamente, non attraverso un set di dati) per il francese, ho riscontrato un leggero problema.
L'algoritmo per coniugare i verbi è in realtà abbastanza semplice per i circa 17 casi di verbi e gira su un modello particolare per ciascun caso; quindi, i suffissi di coniugazione per queste 17 classi sono statici e (molto probabilmente) non cambieranno presto. Per 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 classe di verbi più comune in francese.
Esistono altre classi di verbi (irregolari), le cui coniugazioni rimarranno anche molto probabilmente statiche per il prossimo secolo o due. Poiché 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 [dal mio conteggio] 32 irregolari). Per 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 persino JSON e deserializzarlo 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 alcune fonti di dati, non solo ho complicato il problema che non deve essere complicato, ma ho anche completamente rintracciato l'intero obiettivo del approccio algoritmico: non usare una fonte di dati! In C #, potrei semplicemente creare una classe sotto namespace Verb.Conjugation
(ad esempio class Irregular
) per ospitare queste stringhe in un tipo elencato o qualcosa del genere, invece di inserirle in XML e creare un class IrregularVerbDeserializer
.
Quindi la domanda: è appropriato per le stringhe di hard-code che è molto improbabile che cambino durante la vita di un'applicazione? Ovviamente non posso garantire al 100% che non cambieranno, ma il rischio rispetto al costo è quasi banale da pesare ai miei occhi: l'hardcoding è l'idea migliore qui.
Modifica : il duplicato proposto chiede come archiviare un gran numero di stringhe statiche , mentre la mia domanda è quando devo codificare queste stringhe statiche .