Vì vậy, trong nỗ lực viết chương trình chia động từ (theo thuật toán, không thông qua bộ dữ liệu) cho tiếng Pháp, tôi đã gặp một vấn đề nhỏ.
Thuật toán chia động từ thực sự khá đơn giản đối với các trường hợp động từ 17 hoặc hơn, và chạy trên một mẫu cụ thể cho từng trường hợp; do đó, hậu tố liên hợp cho 17 lớp này là tĩnh và sẽ (rất có thể) sẽ không thay đổi bất kỳ lúc nào. Ví dụ:
// 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"]
};
Đây là các hậu tố thay thế cho lớp động từ phổ biến nhất trong tiếng Pháp.
Có các lớp động từ khác (irregenses), mà sự chia động từ của nó cũng rất có thể sẽ tĩnh trong thế kỷ tới hoặc hai. Vì chúng không đều, nên các liên hợp hoàn chỉnh của chúng phải được bao gồm tĩnh, bởi vì chúng không thể được liên hợp một cách đáng tin cậy từ một mẫu (cũng chỉ có [theo số lượng của tôi] 32 quy định). Ví dụ:
// "ê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"]
};
Tôi có thể đặt tất cả những thứ này vào XML hoặc thậm chí JSON và giải tuần tự hóa nó khi nó cần được sử dụng, nhưng liệu có một điểm? Các chuỗi này là một phần của ngôn ngữ tự nhiên, không thay đổi, nhưng với tốc độ chậm.
Mối quan tâm của tôi là bằng cách thực hiện mọi thứ theo cách "đúng" và giải trừ một số nguồn dữ liệu, tôi không chỉ phức tạp hóa vấn đề không cần phức tạp, mà tôi còn hoàn toàn theo dõi được toàn bộ mục tiêu của cách tiếp cận thuật toán: không sử dụng nguồn dữ liệu! Trong C #, tôi chỉ có thể tạo một lớp bên dưới namespace Verb.Conjugation
(ví dụ class Irregular
) để chứa các chuỗi này theo kiểu liệt kê hoặc một cái gì đó, thay vì nhồi chúng vào XML và tạo một class IrregularVerbDeserializer
.
Vì vậy, câu hỏi: nó có phù hợp với các chuỗi mã cứng rất khó thay đổi trong suốt vòng đời của một ứng dụng không? Tất nhiên tôi không thể đảm bảo 100% rằng họ sẽ không thay đổi, nhưng rủi ro so với chi phí gần như không đáng kể trong mắt tôi - mã hóa cứng là ý tưởng tốt hơn ở đây.
Chỉnh sửa : Bản sao được đề xuất hỏi cách lưu trữ một số lượng lớn các chuỗi tĩnh , trong khi câu hỏi của tôi là khi nào tôi nên mã hóa các chuỗi tĩnh này .