asp.net mvc3:自己编写的一些垃圾代码,删前分享(2013-11-13)
2013-11-13 17:57
489 查看
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>判断思路很简单,就是:任何两个地方长相相同,则一定有可以合并优化的地方。
解决思路:
A.不断找到不同处,在前面设置变量进行比较性定义(即使用?:对)
如果不是html而是CS代码,那么就是不断生成变量,或者函数的参数。
B.修改一个地方后,就刷新验证是否成功
代码优化实际上是“重构”,尽管代码变短了,但功能不变。所以要不断验证功能是不是变化了。不要最后才验证,复杂情况下有风险。
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。杀代码的一个原则是:任何两个长相相同的代码,一定有优化的潜力和必要(上上下下改动几次,很可能上下的参数就不一样了)。修改后的结果很简单:
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);改完了可能看上去很简单,当时可是断断续续犹豫了几天才想起来怎么改的。而且实际上修改的时候才想起来,其实Link里边本来就是调用ImageLink(....showImage: false, ....)产生的。
相关文章推荐
- asp.net mvc3:自己编写的一些垃圾代码,删前分享(2013-01-18)
- 自己总结的一些编写代码的常识
- 把自己搜集到的一些silverlight网站、第三方控件及开源代码与大家们分享(微软转载)
- Silverlight-把自己搜集到的一些silverlight网站、第三方控件及开源代码与大家们分享
- 转:把自己搜集到的一些silverlight网站、第三方控件及开源代码与大家们分享(微软转载)
- 把自己搜集到的一些silverlight网站、第三方控件及开源代码与大家们分享
- enote笔记法使用范例(1)——自己总结的一些编写代码的常识 (a)
- [Sliverlight]把自己搜集到的一些silverlight网站、第三方控件及开源代码与大家们分享(微软转载)
- 信息熵计算(自己编写的python代码,垃圾,高手绕道)
- 编写Java代码一些注意点
- 自己写过的一些shell代码
- 内存管理---编写安全的代码的一些技巧 C++
- 编写高质量代码改善C#程序的157个建议——建议119:不要使用自己的加密算法
- 一些自己整理实用代码
- ajaxfileupload.js 在别人代码的基础上,自己处理了一些问题,留着备用
- 在成长的路上,将自己毕业后的一些经验分享
- AS3 FPS 需要自己也会,但这外国佬的代码简明,值得分享给大家。
- 30条Java代码编写经验分享
- C语言,自己当年编写的苹果(黑白)棋源程序代码
- 编程精粹--编写高质量C语言代码(3):自己设计并使用断言(二)