Simplify the code [closed]
private const string CurrentPageCssClass = "important";
private void HidhLightCurrentPageIndex() {
switch (tpMain.ActiveTabIndex) {
case 0:
elblFirst.AddClass(CurrentPageCssClass);
elblSecond.RemoveClass(CurrentPageCssClass);
elblThird.RemoveClass(CurrentPageCssClass);
elblFouth.RemoveClass(CurrentPageCssClass);
elblFirth.RemoveClass(CurrentPageCssClass);
break;
case 1:
elblFirst.RemoveClass(CurrentPageCssClass);
elblSecond.AddClass(CurrentPageCssClass);
elblThird.RemoveClass(CurrentPageCssClass);
elblFouth.RemoveClass(CurrentPageCssClass);
elblFirth.RemoveClass(CurrentPageCssClass);
break;
case 2:
elblFirst.RemoveClass(CurrentPageCssClass);
elblSecond.RemoveClass(CurrentPageCssClass);
elblThird.AddClass(CurrentPageCssClass);
elblFouth.RemoveClass(CurrentPageCssClass);
elblFirth.RemoveClass(CurrentPageCssClass);
break;
case 3:
elblFirst.RemoveClass(CurrentPageCssClass);
elblSecond.RemoveClass(CurrentPageCssClass);
elblThird.RemoveClass(CurrentPageCssClass);
elblFouth.AddClass(CurrentPageCssClass);
elblFirth.RemoveClass(CurrentPageCssClass);
break;
case 4:
elblFirst.RemoveClass(CurrentPageCssClass);
elblSecond.RemoveClass(CurrentPageCssClass);
elblThird.RemoveClass(CurrentPageCssClass);
elblFouth.RemoveClass(CurrentPageCssClass);
elblFirth.AddClass(CurrentPageCssClass);
break开发者_如何学Python;
}
}
Does anybody have any suggestions for how to simplify this code?
private const string CurrentPageCssClass = "important";
private void HidhLightCurrentPageIndex() {
elblFirst.RemoveClass(CurrentPageCssClass);
elblSecond.RemoveClass(CurrentPageCssClass);
elblThird.RemoveClass(CurrentPageCssClass);
elblFouth.RemoveClass(CurrentPageCssClass);
elblFirth.RemoveClass(CurrentPageCssClass);
switch (tpMain.ActiveTabIndex) {
case 0:
elblFirst.AddClass(CurrentPageCssClass);
break;
case 1:
elblSecond.AddClass(CurrentPageCssClass);
break;
case 2:
elblThird.AddClass(CurrentPageCssClass);
break;
case 3:
elblFouth.AddClass(CurrentPageCssClass);
break;
case 4:
elblFirth.AddClass(CurrentPageCssClass);
break;
}
}
Put the controls in an array, then call RemoveClass on all the elements, and then AddClass on the active element.'
Edit: Code
var controls = new[] { elblFirst, elblSecond, elblThird, elblFourth, elblFifth };
foreach (var control in controls)
{
control.RemoveClass(CurrentPageCssClass);
}
controls[tpMain.ActiveTabIndex].AddClass(CurrentPageCssClass);
Of course this is assuming that an additional call to RemoveClass has a negligible cost, otherwise use a regular for loop and skip the active index.
Here's another option that reduces code repetition and adhere more to the DRY principle:
private const string CurrentPageCssClass = "important";
private void toggleClass(object elbl, bool addClass) {
if (addClass) {
elbl.AddClass(CurrentPageCssClass);
} else {
elbl.RemoveClass(CurrentPageCssClass);
}
}
private void HidhLightCurrentPageIndex() {
int index = tpMain.ActiveTabIndex;
toggleClass(elblFirst, index == 0);
toggleClass(elblSecond, index == 1);
toggleClass(elblThird, index == 2);
toggleClass(elblFouth, index == 3);
toggleClass(elblFirth, index == 4);
}
Other posts suggest calling "RemoveClass" on all items, then calling "AddClass" on the one you want. However, depending on what the "RemoveClass" method does there could be performance consequences of doing it that way. The solution I have posted will only call the appropriate method without requiring any additional, unnecessary method calls, and it's much shorter.
精彩评论