把boolean 参数放到最后面
来源:互联网 发布:怀旧剧场源码 编辑:程序博客网 时间:2024/06/06 02:15
每当我看到一个方法调用如下:
Enum.TryParse(stringRepresentationOfEnum, true, out enumValue);
我就会想这个’true’ 参数代表的是什么意思呢。在这个例子中,基于我过去的经验我知道在这个方法中它代表的是ignoreCase 参数。
但是,如果这是一个你从未见过的完全不同的方法呢:
service.DoOperation(DateTime.Now, true, false, false, true, currentValue, userName);
这是一个特别XXX的方法。但是假设一下这就是这个方法必须要的签名,可悲的是,在这个方法想要明白boolean 参数的值的含义很难,
假设我们不能改变接口,我们还能做什么来让代码更清楚呢?
首先,我们可以为每个boolean值传递命名好的变量:
bool includeHeader = true;
bool checkSecurity = false;
bool validateDate = false;
bool fireCompletionEvent = true;
service.DoOperation(DateTime.Now, includeHeader, checkSecurity, validateDate, fireCompletionEvent, currentValue, userName);
//www.software8.co
除了代码有点不简洁外,这的确好了很多。
当然在C# 4.0 中,我们不需要这样做,相反我们可以使用命名参数:
service.DoOperation(DateTime.Now, includeHeader: true, checkSecurity: false, validateDate: false, fireCompletionEvent: false, currentValue, userName);
不幸的是,它并不能如期的转印机正常运行 - 最后面的两个参数无法出现在命名参数的后面。
这意味着我们必须添加一些额外的代码:
service.DoOperation(DateTime.Now, includeHeader: true, checkSecurity: false, validateDate: false, fireCompletionEvent: false, currentValue: currentValue, userName: userName);
这就是为什么我建议把布尔参数放到参数列表的最后的原因:
service.DoOperation(DateTime.Now, currentValue, userName, includeHeader: true, checkSecurity: false, validateDate: false, fireCompletionEvent: false);
这的确清楚多了,但它确实需要你在设计你的方法签名时牢记这一点。
- 把boolean 参数放到最后面
- 把最小数放到最后
- 将子控件放到最前面或最后面
- android 光标放到最后
- 去掉第一个数再把第二个放到最后的算法
- C语言输入下标数,把下标值改成0并放到最后,再依次打印。
- 移除0元素,把0元素按相对位置放到数组最后
- 把音量放到最大
- 把本地文件放到服务器端
- js 设置焦点放到最后
- 字符串面试题(三)— 把一个字符串的大写字母放到字符串的后面
- 递增数组相同的存入一个数组里面,把最后的结果放到一个大数组里面
- 11.1 python之webpy获取请求参数,把数据库结果放到List,Retrofit Post
- 如何打开新界面并传递参数,最后返回结果。
- 把任意类型转成Boolean
- 把自己放到最低层
- 把winform放到panel中
- 把pscp放到右键中
- Android媒体播放---Media playback(五)
- LINUX 动态链接库高级应用
- 4pm BackUP -- Sharing Room List
- postfix milter简介
- 太理智的人
- 把boolean 参数放到最后面
- [转]C标准库中的setjmp与longjmp
- 为什么读博
- 以标记清除的方式垃圾回收
- Ubuntu下安装python科学计算库
- 重装windows7后修复ubuntu启动项
- zoj 3635 线段树 区间求位置 单点更新
- 房子申请贴息
- php 插入排序