Отже, в моїх спробах написати програму для сполучення дієслів (алгоритмічно, а не через набір даних) для французької мови, я зіткнувся з невеликою проблемою.
Алгоритм сполучення дієслів насправді досить простий для 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%, що вони не зміняться, але ризик проти вартості майже тривіальний, щоб зважити в моїх очах - жорстке кодування є кращою ідеєю тут.
Редагувати : Запропонований дублікат запитує, як зберігати велику кількість статичних рядків , тоді як у мене питання, коли слід жорстко кодувати ці статичні рядки .