Поэтому, пытаясь написать программу для спряжения глаголов (алгоритмически, а не через набор данных) для французского языка, я столкнулся с небольшой проблемой.
Алгоритм спряжения глаголов на самом деле довольно прост для 17-ти или около того случаев глаголов и работает по определенному шаблону для каждого случая; таким образом, суффиксы сопряжения для этих 17 классов являются статическими и (очень вероятно) не изменятся в ближайшее время. Например:
// 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"]
};
Это интонационные суффиксы для наиболее распространенного класса глаголов во французском языке.
Существуют и другие классы глаголов (неправильных), чьи спряжения также, скорее всего, останутся неизменными в течение следующего столетия или двух. Так как они нерегулярны, их полные спряжения должны быть включены статически, потому что они не могут быть надежно сопряжены с шаблоном (есть также [по моим подсчетам] 32 неправильных числа). Например:
// "ê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"]
};
Я мог бы поместить все это в XML или даже JSON и десериализовать это, когда это необходимо использовать, но есть ли смысл? Эти строки являются частью естественного языка, который меняется, но медленными темпами.
Я обеспокоен тем, что, выполнив «правильный» путь и десериализовав некоторый источник данных, я не только усложнил проблему, которая не должна быть сложной, но я также полностью откатился назад по всей цели алгоритмический подход: не использовать источник данных! В C # я мог бы просто создать класс в namespace Verb.Conjugation
(например class Irregular
) для размещения этих строк в перечисляемом типе или что-то в этом роде, вместо того, чтобы вставлять их в XML и создавать class IrregularVerbDeserializer
.
Поэтому вопрос: уместно ли жестко строк кода, которые очень маловероятно , чтобы изменения в течение жизни приложения? Конечно, я не могу гарантировать 100%, что они не изменятся, но риск против стоимости почти тривиален в моих глазах - жесткое кодирование - лучшая идея здесь.
Изменить : предложенный дубликат спрашивает, как хранить большое количество статических строк , в то время как мой вопрос, когда я должен жестко кодировать эти статические строки .