C#命名规则和设计规则
Pascal
将每个单词的第一个字符大写、遇到两个字母的首字母缩略词时,两个字母都要大写
命名空间:使用公司名作为前缀、在第二级名称中使用稳定的与版本无关的产品名称
类型:名词或名词短语命名
结构:名词或名词短语命名
接口:形容词短语或偶尔用名词或名词短语命名接口,在接口名称前加上字母I作为前缀
方法:谓词或谓词短语
属性:名词短语或形容词
事件:谓词或谓词短语来命名事件,现在时态和过去时态让事件有先后的概念
字段:名词、名词短语、形容词来命名字段
枚举:使用单数形式的类型名称,除非枚举值是位域
Camel:约定仅用于参数名称,将除第一个单词之外的每个单词的第一个字符大写
参数:描述性参数名称
类和结构设计
考虑类型的实例比较小并且通常生存期较短或者通常嵌入在其他对象中,则定义结构
避免定义一个结构,除非具有所有一下特征:
1.它逻辑上表示单个值,类似于基元类型(int double等等)
2.它的实例大小小于16字节
3.它是不可变的
4.它不会频繁装箱
在所有其他情况下,应将类型定义为类
抽象类设计
请勿在抽象类型中定义公共或受保护的内部构造函数
请在抽象类中定义受保护的或内部构造函数
请至少提供一种继承自你交付的每个抽象类的具体类型
接口设计
需要某些通用API受到包含值类型的一组类型的支持
需要在已继承自其他类型的类型上支持其功能
至少提供一种作为接口的实现的类型
结构设计
确保所有实例数据设置为0、false、null的状态是有效的
c#不允许结构具有默认构造函数
枚举设计
务必将枚举用于强类型参数、属性和表示一组值集的返回值
务必首选使用枚举而不是静态常量
务必为简单枚举提供0值
C#命名规则和设计规则的更多相关文章
- MySQL数据库一般设计规则
一.数据库设计 规则一之存储规则: 一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所 ...
- MySQL 优化、设计规则浅谈
当数据量大,数据库相应慢时都会针对数据库进行优化.这时都是要针对具体情况,具体业务需求进行优化的. 但是有些步骤和规则应该适合各种情况的.这里综合网上找的资料简单分析一下. 第一优化你的sql和索引: ...
- PCB设计规则考量之初识
PCB的设计规则可以分布局与走线.布局里最简单的原则就是避免信号之间的干扰,有把模拟部分与数字部分分开,把开关电源与数字部分分开,把端去耦电容靠近端点,而且从端点出来的电容容值按从小到大摆放效果会好些 ...
- Android UI设计规则
Android UI技巧 1.1 不该做什么 l 不要照搬你在其他平台的UI设计,应该让用户使用感觉是在真正使用一个Android软件,在你的LOGO显示和平台总体观感之间做好平衡 l 不要过度使 ...
- Tcl与Design Compiler (七)——环境、设计规则和面积约束
本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 本文的主要内容是讲解( ...
- 5 个关于 API 中日期和时间设计规则
规则 #1 使用ISO-8601格式作为你的日期格式 ISO 8601 解决了很多问题,包括: 自然排序 - 简单和优雅,免去多余的工作即可实现排序 时区偏移 - 代表用户的地点和时区在日益增长的全球 ...
- [转] 你应该知道的应用UI动态设计规则
转自 CocoaChina http://www.cocoachina.com/macdev/uiue/2014/0505/8315.html 你应该知道的应用UI动态设计规则 这篇文章中,我主要阐述 ...
- Java-面向对象三大特征、设计规则
1)封装: 1.1)类:封装的是对象的属性和行为 1.2)方法:封装的是具体的业务逻辑实现 1.3)访问控制修饰符:封装的是访问的权限 2)继承: 2.1)作用:代码的复用 2.2)父类/基类:共有的 ...
- 快速制作规则及获取规则提取器API
1. 引言 前面文章的测试案例都用到了集搜客Gooseeker提供的规则提取器,在网页抓取工作中,调试正则表达式或者XPath都是特别繁琐的,耗时耗力,工作枯燥,如果有一个工具可以快速生成规则,而且可 ...
随机推荐
- 批量修改含空格的文件名「Linux」
1.问题:文件批量重命名和处理文件名中的空格 如果文件名中有空格,在执行以下shell脚本的时候会出错. shell 脚本 for filename in `ls` do echo $filename ...
- 【c&c++】变量初始化
/* 全局变量会默认初始化为0 空 和 false,局部变量要手动初始化,或者直接scanf输入值进去.如果不初始化,n可能是0也有可能是其他数,大多数情况下会是0,但不初始化是不安全的,所以Dev直 ...
- rpm软件包安装与管理
一.软件包分类 1.软件包分类 源码包 二进制包 2.源码包 2.1 源码包什么样 直接由编程语言写成,没经过编译.类似于java的 .calss 文件,c的 .c文件. [root@love2 ~] ...
- PAT 1010 Radix 进制转换+二分法
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...
- [问题排查]通过调度系统远程执行脚本,报mysql command not found异常
今天在公司使用LS调度系统(百度内部的工具),执行远程脚本的时候,每次都失败. 脚本内容比较简单,其实就是将HDFS(AFS)中的数据插入到Palo(Doris)数据库中,脚本如下: mysql -h ...
- Python中编写类的各种技巧和方法
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
- Vue.js2.0快速入门笔记
vue.js 解耦视图与数据,可复用的组件,前端路由,状态管理,虚拟DOM. MVVM模式:当View(视图层)变化时,会自动更新ViewModel(视图模型),View与ViewModel之间双向绑 ...
- 利用Dynamics 365 Customer Engagement的标准导入功能导入附件。
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Android 多选列表对话框 setMultiChoiceItems
private Button button; private final CharSequence items[] = { "北京", "上海", " ...
- datatable与实体类之间相互转化的几种方法
#region DataTable转换成实体类 /// <summary> /// 填充对象列表:用DataSet的第一个表填充实体类 /// </summary> /// & ...