本文中的这个指南有助于你为成员参数选择正确的类型和名称。下列文章同样呈现了参数的设计指南。

  • 枚举与 Boolean 参数之间的选择
  • 使用可变数量的参数的成员。
  • 指针参数
  • 传递参数
  • 验证参量
使用最少被获得的并通过成员来提供必需功能的变量类型。

下列代码范例说明了这个指导方针。BookInfo 类继承自 Publication 类。Manager 类实现了两个方法:BadGetAuthorBiography 和 GoodGetAuthorBiography。BadGetAuthorBiography 使用了一个 BookInfo 对象的引用,尽管它只使用了在 Publication 里被声明的成员。GoodGetAuthorBiography 方法示范了正确的设计。

// 拥有基本信息的类。
public class Publication
{string author;DateTime publicationDate;public Publication(string author, DateTime publishDate){this.author = author;this.publicationDate = publishDate;}public DateTime PublicationDate{get {return publicationDate;}}public string Author{get {return author;}}
}// 继承自 Publication 的类
public class BookInfo :Publication
{string isbn;public BookInfo(string author, DateTime publishDate, string isbn) :base(author, publishDate){this.isbn = isbn;}public string Isbn{get {return isbn;}}
}public class Manager
{// 这个方法没有使用 Isbn 成员,因此它不需要 Books 的一个专门引用static string BadGetAuthorBiography(BookInfo book){string biography = "";string author = book.Author;// 在这里操作。return biography;}// 这个方法说明了正确的设计。static string GoodGetAuthorBiography(Publication item){string biography = "";string author = item.Author;// 在这里操作。return biography;}
}
不要使用被保留的参数。

库的将来版本中能够添加能够获取附加属性的新重载。

下列代码范例首先示范了一个违反了这个指导方针的错误方法,然后说明了另外一个正确被设计的方法。

    public void BadStoreTimeDifference (DateTime localDate, TimeZone toWhere, Object reserved){// 在这里操作。}public void GoodCStoreTimeDifference (DateTime localDate, TimeZone toWhere)
{// 在这里操作。
}
public void GoodCStoreTimeDifference (DateTime localDate, TimeZone toWhere, bool useDayLightSavingsTime)
{// 在这里操作
}
不要公开暴露获取指针、指针的数组,或者多维数组来作为参数的方法。

在使用大部分库的时候,明白这些高级特征应该不是必须的。

把所有的输出参数放到经值传递的参数和 ref 参数(排除参数的数组)的后面,即使这样做导致了在重载之间的参数次序出现矛盾。

这个约定使方法的签名更加容易被理解。

在成员重载或实现接口成员的时候保持一致的参数命名。

重载应该使用相同的参数名称。重载应该使用与成员声明相同的参数名称。接口的实现应该使用在接口成员的签名中被定义的相同名称。

转载于:https://www.cnblogs.com/Laeb/archive/2007/02/01/637394.html

.NET 指南:参数的设计相关推荐

  1. XGBoost-Python完全调参指南-参数解释篇

    本文转自XGBoost-Python完全调参指南-参数解释篇.对XGBoost有需要小伙伴可以参看.并在此基础上,添加了一些内容. 在analytics vidhya上看到一篇<Complete ...

  2. 蜗杆参数法设计_齿轮几何尺寸设计,很实用的Excel表格(附自动计算表格)

    各类齿轮自动计算校核表格获取见文章最下方 我们生活中最常见的齿轮有渐开线圆柱直齿轮.圆锥齿轮.涡轮蜗杆以及链轮类的设计计算,在进行设计时,我们都是对于尺寸进行设计计算,一般都是先要了解齿轮的模数,压力 ...

  3. 支付渠道参数如何设计成路由化配置

    转载自  支付渠道参数如何设计成路由化配置 今天我们来探讨在搭建支付系统时一个比较关键的问题:渠道参数路由化配置如何设计? 在开发支付系统的时候,我们经常会涉及到对接多个支付渠道,除常见的支付宝.微信 ...

  4. [ISUX译]iOS 9人机界面指南(二):设计策略

    [ISUX译]iOS 9人机界面指南(二):设计策略 雪糕 2015.11.09 文章索引 2.1 设计原则(Design Principles) 2.1.1 美学完整性(Aesthetic Inte ...

  5. 视频教程-板绘生存指南-原画设计

    板绘生存指南 高校原画设计专业内训师.八年行业经验与线上线下教学经验.参与<无尽战区>.<无尽战区><天下3>.<神武2><枪魂>等项目 陈 ...

  6. Qt/C++音视频开发45-音视频类结构体参数的设计

    一.前言 视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结 ...

  7. neo4j图形算法综合指南_网页设计中色彩使用的综合指南

    neo4j图形算法综合指南 There is a lot of material about color to be found online. But none of us has the time ...

  8. py获取前端的参数_设计小巧、高效和高性能的多参数患者监护仪

    连续测量如心率.呼吸频率和血氧饱和度(SpO2)等患者生命指征对于提供有效护理来说至关重要,而同时测量这些体征的能力也使得多参数患者监护仪变得日益重要. 电子患者监护仪使用连到患者身上的非侵入式传感器 ...

  9. 蜗杆参数法设计_技术贴 | 减速器结构及设计的注意事项

    减速机器用于低转速大扭矩的传动设备,原理是把电动机.内燃机.马达或其它高速运转的动力,通过减速机的输入轴上齿数少的齿轮啮合输出轴上的大齿轮,从而达到减速的目的:大小齿轮的齿数之比,就是传动比.减速器是 ...

最新文章

  1. [算法]最小生成树-普利姆算法
  2. 2021年春季学期-信号与系统-第八次作业参考答案-第十一小题
  3. 河北师范大学C语言试题,2017年河北师范大学信息技术学院838C语言程序设计考研题库...
  4. Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
  5. JAVA解析各种编码密钥对(DER、PEM、openssh公钥)
  6. ORA-01720: grant option does not exist for 'xxx.xxxx'
  7. jsp学习(1)jsp请求过程和生命周期
  8. Markdown-基础语法
  9. 理解A*寻路算法具体过程
  10. CSS导入使用及引用的两种方法
  11. aptitude 命令_C-命令行参数Aptitude问题与解答
  12. 游戏角色坐标的保存间隔_游戏岗位看这里鸭——
  13. js add方法_Vue.js列表过渡
  14. 特殊人物请遵循公司工作的基本准则
  15. 最近对焦距离与最大放大倍率
  16. LeetCode 654. Maximum Binary Tree最大二叉树 (C++)
  17. Spring Boot + thymeleaf 后台与页面(二)
  18. Vigenère密码(Day 1)详解
  19. 基于Springboot实现销售团队管理系统
  20. win10系统下SQL2012下载及安装

热门文章

  1. matlab向量的角标,【MATLAB】利用冒号表达式获得子矩阵
  2. php5.4 session配置,Session
  3. java 二维数组倒置_Java数组反转及二维数组
  4. 印度程序员为什么牛掰之ISAS.激发人的兴趣.探索精神.
  5. ugui unity 取消选择_关于Unity中的UGUI优化,你可能遇到这些问题
  6. excel打印预览在哪里_Excel如何打印表格,每页纸都有标题?
  7. linux下利用C或C++语言调用需要root权限的函数
  8. Requests 2.18.1文档
  9. React学习:事件绑定、组件定义、for、map循环-学习笔记
  10. centos6.5下如何把python2.6.6升级到2.7