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,...)を呼び出していたのです発生した.