プロトタイプをしばらくハッキングした後、オブジェクトのブールフラグを更新してからインターフェイスを更新し、新しい値に基づいて処理を行うメソッドがいくつかありました。これらはほとんど同じですが、更新する値は異なります
たとえば、更新する色付きのボックスがたくさんあると想像してください。次のようなメソッドがあるかもしれません。
protected void SetBlueBoxVisibility(bool blueBoxVisibility)
{
Project project = LoadProject();
project.ShowBlueBox = blueBoxVisibility
ReDrawSomeThings();
CalcualteSomeStuff();
Project.UpdateBoxStatus();
SaveProject(project);
ShowBlueBoxPanel(blueBoxVisibility);
RaiseStatusUpdated();
}
protected void SetRedBoxVisibility(bool redBoxVisibility)
{
Project project = LoadProject();
project.ShowRedBox = redBoxVisibility
ReDrawSomeThings();
CalcualteSomeStuff();
Project.UpdateBoxStatus();
SaveProject(project);
ShowRedBoxPanel(redBoxVisibility);
RaiseStatusUpdated();
}
さて、明らかに-そのほとんどが繰り返されます-これは私が何かを変えるようになると苦痛です。特に、2つではなく、20の異なるボックスの色になってしまった場合は!
変更されたコードを取り除き、より一般的な方法で同じものを収集する方法があるはずだと思っていましたが、それを行う方法を理解するのに苦労しています。
私は閉鎖について聞いたことがありますが、彼らがここで役立つかどうかを知るのに十分なほど頭を抱えていません。
次のことが正しい行にある可能性があると考えていましたが、ジェネリックメソッドにどのプロパティを操作するかを指示する方法がわかりません- [更新するプロジェクト変数]
protected void SetRedBoxVisibility(bool redBoxVisibility)
{
SetGenericBoxVisibility([Project Variable To Update],redBoxVisibility)
ShowRedBoxPanel(redBoxVisibility);
RaiseStatusUpdated();
}
protected void SetBlueBoxVisibility(bool blueBoxVisibility)
{
SetGenericBoxVisibility([Project Variable To Update],blueBoxVisibility)
ShowBlueBoxPanel(blueBoxVisibility);
RaiseStatusUpdated();
}
protected void SetGenericBoxVisibility([Project Variable To Update], boxVisibility)
{
Project project = LoadProject();
project.**[Project Variable To Update]** = boxVisibility
ReDrawSomeThings();
CalcualteSomeStuff();
Project.UpdateBoxStatus();
SaveProject(project);
}
この種のものをどのように処理するかについてのポインタは役に立ちます:)