Jadi, dalam upaya saya untuk menulis sebuah program untuk mengkonjugasikan kata kerja (secara algoritmik, bukan melalui dataset) untuk bahasa Prancis, saya menemukan sedikit masalah.
Algoritma untuk mengkonjugasikan kata kerja sebenarnya cukup sederhana untuk 17 atau lebih kasus kata kerja, dan berjalan pada pola tertentu untuk setiap kasus; dengan demikian, sufiks konjugasi untuk 17 kelas ini bersifat statis dan akan (sangat mungkin) tidak berubah dalam waktu dekat. Sebagai contoh:
// 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"]
};
Ini adalah sufiks infleksi untuk kelas kata kerja yang paling umum dalam bahasa Prancis.
Ada kelas-kelas lain dari kata kerja (irreguler), yang konjugasinya juga sangat mungkin tetap statis untuk satu atau dua abad berikutnya. Karena tidak teratur, konjugasi lengkapnya harus dimasukkan secara statis, karena konjugasi tidak dapat diandalkan dari suatu pola (hanya ada juga [menurut hitungan saya] 32 irreguler). Sebagai contoh:
// "ê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"]
};
Saya bisa memasukkan semua ini ke XML atau bahkan JSON dan membatalkan deserialize ketika itu perlu digunakan, tetapi apakah ada benarnya? String ini adalah bagian dari bahasa alami, yang memang berubah, tetapi pada tingkat yang lambat.
Kekhawatiran saya adalah bahwa dengan melakukan hal-hal dengan cara yang "benar" dan deserialisasi beberapa sumber data, saya tidak hanya rumit masalah yang tidak perlu rumit, tetapi saya juga benar-benar kembali melacak seluruh tujuan dari pendekatan algoritmik: untuk tidak menggunakan sumber data! Dalam C #, saya hanya bisa membuat kelas di bawah namespace Verb.Conjugation
(misalnya class Irregular
) untuk menempatkan string ini dalam tipe enumerated atau sesuatu, daripada memasukkannya ke dalam XML dan membuat a class IrregularVerbDeserializer
.
Jadi pertanyaannya: apakah itu sesuai untuk string hard-code yang sangat tidak mungkin berubah selama masa aplikasi? Tentu saja saya tidak dapat menjamin 100% bahwa mereka tidak akan berubah, tetapi risiko vs biaya hampir sepele untuk ditimbang di mata saya - hardcoding adalah ide yang lebih baik di sini.
Sunting : Duplikat yang diajukan menanyakan bagaimana cara menyimpan sejumlah besar string statis , sementara pertanyaan saya adalah kapan saya harus membuat hard- string string statis ini .