新手C#代码简洁性—函数篇

1.从Html代码抽取MVC HtmlHelper

<td class = "noborder nopaddingv">
<div class = "aligncenter">
<a href="/Home/Index">
<img

src="../../Resouces/Images/Agile/Menu/Campass48.png" alt = "站点地图"

title = "站点地图" class = "imagelink"/></a><br />
站点地图
</div>
</td>
<td class = "noborder nopaddingv">
<div class = "aligncenter">
<a href="/Home/Index" target = "_blank">
<img

src="../../Resouces/Images/Agile/Help/Help48.png" alt = "帮助" title = "

帮助" class = "imagelink"/></a><br />
帮助
</div>
</td>

改后:

@Html.MenuImageButtonV("站点地图", false, "/Home/Index",

"../../Resouces/Images/Agile/Menu/Campass48.png")
@Html.MenuImageButtonV("帮助", true, "/Home/Index",

"../../Resouces/Images/Agile/Help/Help48.png")
这种技法:当两段代码相同时,可以变成一个函数和两次调用,相同的部分就是函

数,不同的部分就是调用参数。

2.函数接口的简洁性:

不是编写了函数就万事大吉了,不好的函数接口依然不简洁。下面是一个刚改好的

例子:

@Html.ImageLink("燃烧图", true,

"../../Resouces/Images/Agile/CurrentSprint/BurndownData16.png", "icons",

false, "/Agile/CurrentSprint/BurndownData", null, null)

@Html.ImageLink("迭代计划", true,

"../../Resouces/Images/Agile/Sprints/Index16.png", "icons", false,

"/Agile/Sprints/Index", null, null)

...
修改后的结果(另外一段代码):

@Html.ImageLink("迭代计划", "/Agile/Sprints/Index", true) //这个true有些

地方不太一样所以留下了。
@Html.ImageLink("迭代故事", "/Agile/Sprints/SprintStories", true)
这种技法:如果函数在重复调用时有些参数变化,有些参数基本不变("icons",

true, false, null....),后者应该变成一些可选参数并设置缺省值。

时间: 2024-10-25 11:08:42

新手C#代码简洁性—函数篇的相关文章

新手C#代码简洁性—语义篇

心法"就是:只要屏幕上有需要思量一下的代码,则一定有办法简化.例子:求三个整数中的最大值 public int Max(int a, int b, int c) { if (a > b) { if (a > c) return a; else return c; } else { if (b > c) //有人还能把这里写成 c < b,也对,但更乱 return b; else return c; } } 正解是: public int Max(int a, int b

新手C#代码简洁性—代码篇

1.合并相似代码:牢记心法:只要屏幕上有任何两部分代码看上去相似,则一定有合并办法例子:if (!result.Contains("true")) { _repSFC.GrantAuthorityToRole(authority, role, false); } if (result.Contains("true")) { _repSFC.GrantAuthorityToRole(authority, role, true); }改后: _repSFC.GrantA

为了提高性能牺牲代码简洁性是否值得?

本文作者Arne Mertz是一位C++狂热份子,有着丰富的开发经验.文中Arne Mertz针对简洁和性能的关系进行阐述,他认为,开发者不到万不得已时千万不要为了性能而牺牲简洁性,要学会使用工具来解决性能问题. 译文如下: C++的强项之一是能写出非常高性能的代码.那么在实际中,我们该如何把握好性能处理的尺度呢? 性能≠效率 首先要明确的一点是我们必须把性能和效率区分清楚.这两者分别代表什么? 我们能做得多快(性能); 它需要多长时间去完成(效率). 这看上去好像差不多,但其实不是.举个例子,

30s源码刨析系列之函数篇

前言 由浅入深.逐个击破 30SecondsOfCode 中函数系列所有源码片段,带你领略源码之美. 本系列是对名库 30SecondsOfCode 的深入刨析. 本篇是其中的函数篇,可以在极短的时间内培养你的函数式思维. 内容根据源码的难易等级进行排版,目录如下: 新手级 普通级 专家级 正文 新手级 checkProp const checkProp = (predicate, prop) => obj => !!predicate(obj[prop]); const lengthIs4

JavaScript系列:高级函数篇

前言: 本篇主要是介绍 JavaScript使用函数的高级方法,函数是JavaSCript中最有趣的部分,利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:函数回调,高阶函数以及函数柯里化. 1.   函数回调 对于异步编程JavaScript API如SetTimeout或者JQuery的$.ajax又或者越来越火的Node.js编程,在事件循环上都是非阻塞的,意思就是,当你使用异步非阻塞API的使用,调用在回调函数执行之前立即返回,而这些回调在不久之后执行. 1 setT

函数篇之——函数也是数据

1.  对于JavaScript 来说,有一个概念十分重要——既函数是一种数据类型. 也就是说,下面两种函数定义在本质上是相同的: ① . function f () { return 1; } ② . var f = function () { return 1; } 其中,第二种定义方式通常被叫做函数标识记法(function literal notation). 如果我们对函数变量调用typeof,操作符返回的字符串将会是“function”. >>> var f = functi

函数篇之2——匿名函数

1.  匿名函数实例: >>> function ( a ){ return a; } 匿名函数也就是说没有方法名. 2.  匿名函数的主要用法: 2.1 我们可以将匿名函数作为参数传递给其它函数,这样,接收方函数就能利用我们所传递的函数来完成某些事情. 2.2 我们可以定义某个匿名函数来执行某些一次性任务. 3.  接下来,我们来看具体的应用示例,通过其中的细节来进一步了解匿名函数. 3.1 回调函数 ①.  解释: 当我们将函数A 传递给函数B ,并由B 来执行A 时,A 就成了一个

PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明,主要掌握各进制转换的方法,以应用于实际开发 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo decbin(26); //输出 11010 decbin (PHP 3, PHP

《前端之路》- TypeScript(二) 函数篇

目录 一.定义函数方法 二.定义函数传参 三.可选传参 四.默认传参 五.传递剩余参数 六.函数重载 七.箭头函数 八.总结 一.定义函数方法 在 es5 中定时函数的方法有 命名函数和函数表达式(匿名函数)这门两种.那么同样的,在 TypeScript 中,函数的定义是什么样子的呢? 1-1 命名函数 这里需要注意的一点是: viod 类型,是函数不返回任何类型数据 TypeScript 语法 function func1(): string { return '213'; } functio