asp.Netmvc 3:自分で書いたゴミコード、削除前に共有(2013-11-13)
7053 ワード
1.cshtm最適化 var style = (status.ID == planViewModel.StatusFirstPositive.ID || status.ID == planViewModel.StatusFirstOnboard.ID ? "margin-left: 17px; " : "")
+ (status.ID == planViewModel.StatusLastOnboard.ID ? "margin-right: 17px; " : "");
<td>
@if (status.IsDisplayedOnKanban)
{
<div class="@(status.IsDisplayedOnKanban ? "mini-status-indicator-status-onboard" : "mini-status-indicator-status") @(status.ID == planViewModel.StatusHighlightedID ? "bold twinkle" : "")"
style="@style; border-color: @(status.Color); ">
@status.Title
@if (status.ID == planViewModel.StatusHighlightedID)
{
<div class="withnotices" style="margin-left: -2px; ">
<span class="notice"> </span>
</div>
}
</div>
}
else
{
<div class ="@(status.ID == planViewModel.StatusHighlightedID ? "bold twinkle" : "")"
style ="color: @status.Color; @style; border-left: 1px solid #AAA; width: 18px; float: left; ">
@status.Title
@if (status.ID == planViewModel.StatusHighlightedID)
{
<div class="withnotices" style="margin-left: -2px; ">
<span class="notice"> </span>
</div>
}
</div>
}
</td>
最適化後: var style = (status.ID == planViewModel.StatusFirstPositive.ID || status.ID == planViewModel.StatusFirstOnboard.ID ? "margin-left: 16px; " : "")
+ (status.ID == planViewModel.StatusLastOnboard.ID ? "margin-right: 19px; " : "");
style += status.IsDisplayedOnKanban ? "border-color: " + status.Color + ";" : "border-left: 1px solid #AAA; width: 18px; float: left; ";
var Class = status.IsDisplayedOnKanban ? "mini-status-indicator-status-onboard " : "";
Class += status.ID == planViewModel.StatusHighlightedID ? "bold twinkle" : "";
<td>
<div class="@Class" style="@style">
@status.Title
@if (status.ID == planViewModel.StatusHighlightedID)
{
<div class="withnotices" style="margin-left: -2px;">
<span class="notice"> </span>
</div>
}
</div>
</td>
判断の考え方は簡単で、いずれの2つの場所が顔が同じであれば、必ず統合して最適化できる場所があるということです.
解決方法:
A.相違点を見つけ続け、前に変数を設定して比較的に定義する(すなわち、使用?:はい)
htmlではなくCSコードであれば、変数や関数を生成し続けるパラメータです.
B.場所を変更した後、検証が成功したかどうかを更新する
コード最適化は実際には「再構築」であり、コードは短くなったが、機能は変わらない.だから、機能が変わったかどうかを検証し続けなければなりません.最後に検証しないでください.複雑な場合はリスクがあります.
2.切替パラメータが全く同じ2つの異なる関数 container.InnerHtml += showImage
? MFCUI.ImageLink(text,
link,
displayAsLink: displayAsLink,
grayTextTitle: grayTextTitle,
displayAsBoldTextOnPage: page,
title: title,
imgUrl: imgUrl,
cssClass: MFCUI.HoverTwinkleTriggerBodyClass(link.ACT().Substring(1).Replace("/", "-")) + " " + cssClass, //cssClass: this link will tinkle when MFCUI.HoverTwinkleTrigger(link.ACT().Substring(1).Replace("/", "-")) is hovered.
showText: showText,
returnTo: page)
: MFCUI.Link(text,
link,
displayAsLink: displayAsLink,
grayTextTitle: grayTextTitle,
displayAsBoldTextOnPage: page,
title: title,
cssClass: MFCUI.HoverTwinkleTriggerBodyClass(link.ACT().Substring(1).Replace("/", "-")) + " " + cssClass, //See comments above.
showText: showText,
returnTo: page);
コードの中にはずっと上の関数があります.上下と同じように、ImageLinkとLinkを切り替えます.
殺コードの1つの原則は、いずれの2つの顔が同じコードでも、最適化の潜在力と必要がある(上から下へ何回か変更すると、上下のパラメータが異なる可能性が高い).
修正後の結果は簡単です. container.InnerHtml += MFCUI.ImageLink(text,
link,
displayAsLink: displayAsLink,
grayTextTitle: grayTextTitle,
displayAsBoldTextOnPage: page,
title: title,
imgUrl: imgUrl,
showImage: showImage,
cssClass: MFCUI.HoverTwinkleTriggerBodyClass(link.ACT().Substring(1).Replace("/", "-")) + " " + cssClass, //cssClass: this link will tinkle when MFCUI.HoverTwinkleTrigger(link.ACT().Substring(1).Replace("/", "-")) is hovered.
showText: showText,
returnTo: page);
が変更されたのは簡単に見えるかもしれませんが、その時は何日もためらっていました.どうやって変更したのか思い出しました.
しかも実際に修正した時に思い出したのですが、実はリンクの中にはもともとImageLink(....showImage:false,...)を呼び出していたのです発生した.
var style = (status.ID == planViewModel.StatusFirstPositive.ID || status.ID == planViewModel.StatusFirstOnboard.ID ? "margin-left: 17px; " : "")
+ (status.ID == planViewModel.StatusLastOnboard.ID ? "margin-right: 17px; " : "");
<td>
@if (status.IsDisplayedOnKanban)
{
<div class="@(status.IsDisplayedOnKanban ? "mini-status-indicator-status-onboard" : "mini-status-indicator-status") @(status.ID == planViewModel.StatusHighlightedID ? "bold twinkle" : "")"
style="@style; border-color: @(status.Color); ">
@status.Title
@if (status.ID == planViewModel.StatusHighlightedID)
{
<div class="withnotices" style="margin-left: -2px; ">
<span class="notice"> </span>
</div>
}
</div>
}
else
{
<div class ="@(status.ID == planViewModel.StatusHighlightedID ? "bold twinkle" : "")"
style ="color: @status.Color; @style; border-left: 1px solid #AAA; width: 18px; float: left; ">
@status.Title
@if (status.ID == planViewModel.StatusHighlightedID)
{
<div class="withnotices" style="margin-left: -2px; ">
<span class="notice"> </span>
</div>
}
</div>
}
</td>
var style = (status.ID == planViewModel.StatusFirstPositive.ID || status.ID == planViewModel.StatusFirstOnboard.ID ? "margin-left: 16px; " : "")
+ (status.ID == planViewModel.StatusLastOnboard.ID ? "margin-right: 19px; " : "");
style += status.IsDisplayedOnKanban ? "border-color: " + status.Color + ";" : "border-left: 1px solid #AAA; width: 18px; float: left; ";
var Class = status.IsDisplayedOnKanban ? "mini-status-indicator-status-onboard " : "";
Class += status.ID == planViewModel.StatusHighlightedID ? "bold twinkle" : "";
<td>
<div class="@Class" style="@style">
@status.Title
@if (status.ID == planViewModel.StatusHighlightedID)
{
<div class="withnotices" style="margin-left: -2px;">
<span class="notice"> </span>
</div>
}
</div>
</td>
container.InnerHtml += showImage
? MFCUI.ImageLink(text,
link,
displayAsLink: displayAsLink,
grayTextTitle: grayTextTitle,
displayAsBoldTextOnPage: page,
title: title,
imgUrl: imgUrl,
cssClass: MFCUI.HoverTwinkleTriggerBodyClass(link.ACT().Substring(1).Replace("/", "-")) + " " + cssClass, //cssClass: this link will tinkle when MFCUI.HoverTwinkleTrigger(link.ACT().Substring(1).Replace("/", "-")) is hovered.
showText: showText,
returnTo: page)
: MFCUI.Link(text,
link,
displayAsLink: displayAsLink,
grayTextTitle: grayTextTitle,
displayAsBoldTextOnPage: page,
title: title,
cssClass: MFCUI.HoverTwinkleTriggerBodyClass(link.ACT().Substring(1).Replace("/", "-")) + " " + cssClass, //See comments above.
showText: showText,
returnTo: page);
コードの中にはずっと上の関数があります.上下と同じように、ImageLinkとLinkを切り替えます.殺コードの1つの原則は、いずれの2つの顔が同じコードでも、最適化の潜在力と必要がある(上から下へ何回か変更すると、上下のパラメータが異なる可能性が高い).
修正後の結果は簡単です.
container.InnerHtml += MFCUI.ImageLink(text,
link,
displayAsLink: displayAsLink,
grayTextTitle: grayTextTitle,
displayAsBoldTextOnPage: page,
title: title,
imgUrl: imgUrl,
showImage: showImage,
cssClass: MFCUI.HoverTwinkleTriggerBodyClass(link.ACT().Substring(1).Replace("/", "-")) + " " + cssClass, //cssClass: this link will tinkle when MFCUI.HoverTwinkleTrigger(link.ACT().Substring(1).Replace("/", "-")) is hovered.
showText: showText,
returnTo: page);
が変更されたのは簡単に見えるかもしれませんが、その時は何日もためらっていました.どうやって変更したのか思い出しました.しかも実際に修正した時に思い出したのですが、実はリンクの中にはもともとImageLink(....showImage:false,...)を呼び出していたのです発生した.