그래서 프랑스어로 동사를 (공 법적으로, 데이터 세트를 통하지 않고) 켤 수있는 프로그램을 작성하려는 노력에서 약간의 문제가 발생했습니다.
동사를 켤 수있는 알고리즘은 실제로 17 개 또는 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"]
};
이것들은 프랑스어에서 가장 일반적인 동사 부류에 사용되는 접미사입니다.
동사의 다른 종류의 동사 (불규칙한 형태)가 있는데, 그 동사의 활용은 다음 세기 나 2 세기 동안 정적으로 유지 될 가능성이 매우 높다. 그것들은 불규칙적이기 때문에, 완전한 컨쥬 게이션은 정적으로 포함되어야한다. 그것들은 패턴으로부터 확실하게 결합 될 수 없기 때문이다 (또한 내 카운트에 의해 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 %가 변하지 않을 것이라고 보장 할 수 는 없지만 위험 대 비용은 거의 눈에 띄지 않습니다. 하드 코딩이 더 좋습니다.
편집 : 제안 된 복제본 은 많은 수의 정적 문자열을 저장하는 방법을 묻지 만 제 질문은 언제 정적 문자열을 하드 코딩 해야하는지 입니다.