在原型的黑客一小會兒後,我結束了更新對象的布爾標誌,然後更新接口和根據新的價值做一些處理。這是幾乎所有相同的 - 但價值,他們的更新是不同的重構c#:如何刪除重複的代碼,當在每種情況下更新的屬性不同
例如 - 想象一下,我們有一堆彩色框更新 - 我可能有一些方法是這樣的:
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();
}
現在,顯然 - 大部分東西都會重複 - 當我改變任何東西時,這是一種痛苦。特別是如果我以二十種不同的盒子顏色而不是兩種!
我一直在想,必須有一種方法去除更改的代碼並收集在更通用的方法中相同的代碼 - 但我很難完成如何做到這一點。
我聽說過關閉 - 但我還沒有得到我的頭,足以知道他們是否會在這裏幫助。
我想可能下面可能是在正確的路線 - 但我不知道怎麼跟操作上財產的一般方法 - [項目變量要更新]
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);
}
關於如何處理這種事情的任何指針將是有用的:)
您應該基本原則OO讀了。 –
@傑克 - 也許你應該提供一些指導或至少指出你認爲問題可能在哪裏 –