东软公司有限公司c,优异Java程序员的编制程序风格

目录

图灵程序设计丛书:掌握C#(第6版)是C#天地久负闻名的经文文章,深远周到地讲学了C#编制程序语言和。NET平台的焦点内容,并结成大气示范剖析相关概念。全书分为八部分:C#和。NET平台、C#着力编程结构、C#面向对象编制程序、高级C#编制程序结构、用。NET程序集编制程序、。NET基础类库、WPF和ASP。NETWebForms。第五版是对第6版的进一步立异和健全,内容涵盖了初阶进的。NET编制程序技术和技术,并精确显示出C#编制程序语言的新颖变化和。NET4。5Framework的新特征。

来源《The Elements of Java
Style》-《Java编制程序风格》一书,值得一读的书本,会让你在细节上节省如拾草芥时光,同盟之间越是喜欢!

  • 着力条件
  • 类设计指南
  • 品质成员安排指南
  • 别的设计指南
  • 可维护性指南
  • 命名指南
  • 质量指南
  • 框架指南
  • 文书档案指南
  • 布局指南
  • 相关链接

《图灵程序设计丛书:通晓C#(第6版)》由微软C#MVPAndrewTroelsen编写,第⑤版尤其针对C#5。0和。NET4。5展开了细密入微的修订,是各层次。NET开发人士的必读之作。

便宜不多说了,不过有多少个规格如下:

C#编制程序规范


    图灵程序设计丛书:精晓C#
目录:

1.保证原有风格

  Version 2.0
目录

C# 编制程序指南

首先有个别 C#与.NET平台
第1章
.NET之道
1.1
初识.NET平台
1.2
.NET平台构造块(CLGL450、CTS和CLS)简介
1.2.1
基础类库的效果
11.2.3
托管代码与非托管代码
1.3
任何帮忙.NET的编制程序语言
1.4
.NET程序集大概浏览
1.4.1
CIL的作用
1.4.2
.NET类型元数据的成效
1.4.3
次第集清单的作用
1.5
CTS
1.5.1
CTS类类型
1.5.2
CTS接口类型
1.5.3
CTS结构类型
1.5.4
CTS枚举类型
1.5.5
CTS委托项目
1.5.6
CTS类型成员
1.5.7
内建的CTS数据类型
1.6
CLS
1.7
CLR
1.8
先后集/命名空间/类型的区分
1.8.1
Microsoft根命名空间的法力
1.8.2
以编制程序情势访问命名空间
1.8.3
引用外部程序集
1.9
采取ildasm.exe探索程序集
1.9.1
查看CIL代码
1.9.2
查看类型元数据
1.9.3
翻看程序集元数据(即清单)
1.10
.NET的平台非亲非故性
1.11
Windows 8应用程序简介
1.11.1
构建Windows
8应用程序
1.11.2
.NET在Windows
第88中学的成效
1.12
小结

2.咬牙最小惊奇原则

第一章 概述

近年在 Github
上看见了1人民代表大会咖创造3个库房:CSharpCodingGuidelines,打开之后看了刹那间
readme.md 相关描述,感觉应该很正确,于是就 clone
到本地拜读一下,那里列一些友好的笔记,方便日后回看。

第2章 构建C#应用程序
2.1
.NET Framework 4.5 SDK的作用
2.2
用csc.exe构建C#应用程序
2.2.1
点名输入输出指标
2.2.2
引用外部程序集
2.2.3
引用四个外表程序集
2.2.4
编写翻译几个源文件
2.2.5
使用C#一呼百应文件
2.3
使用Notepad++营造.NET应用程序
2.4
利用SharpDevelop构建.NET应用程序
2.5
使用Visual C#
Express创设.NET应用程序
2.6
使用Visual
Studio营造.NET应用程序
2.6.1
Visual Studio的至极成效
2.6.2
使用New
Project对话框指向.NET
Framework
2.6.3
消除方案能源管理器
2.6.4
东软公司有限公司c,优异Java程序员的编制程序风格。Class View工具
2.6.5
Object Browser工具
2.6.6
合并对代码重构的帮助
2.6.7
代码扩张和环绕技术
2.6.8
可视化Class
Designer
2.6.9
集成的.NET Framework 4.5
SDK文档系统
2.7
小结

3.率先次就做对

行业内部制定规范

骨干规则

  • Astonishment
    原则:你的代码应该尽量做到让每一人都能领略。任何人都有写出让机器认识的代码,但是并不是各类人都能写出令人认识的代码;
  • Kiss 原则:类似 Python 之禅 里面说的那么,简单胜于复杂;
  • YAGNI
    原则:代码尽量能成就可扩展,但请不要过分重构,因为您不能够预言以往;
  • D奇骏Y 原则:不要再度造轮子,除非您有时光照旧您造的车轱辘会比别人的地道;
  • 面向对象编程原则:继承、封装、多态、抽象;

其次片段 C#主干编程结构
第3章
C#骨干编制程序结构
3.1
2个简易的C#程序
3.1.1
Main方法的别的花样
3.1.2
钦定应用程序错误代码
3.1.3
拍卖命令行参数
3.1.4
使用Visual
Studio钦命命令行参数
3.2
幽默的题外话:System.Environment类的其他成员
3.3
System.Console类
3.3.1
运用Console类进行着力的输入和出口
3.3.2
格式化控制台出口
3.3.3
格式化数值数据
3.3.4
在控制台应用程序外格式化数值数据
3.4
系统数据类型和呼应的C#关键字
3.4.1
变量注解和伊始化
3.4.2
内建数据类型与new操作符
3.4.3
数码类型类的层次结构
3.4.4
数值数据类型的分子
3.4.5
System.Boolean的成员
3.4.6
System.Char的成员
3.4.7
从字符串数据中剖析数值
3.4.8
System.DateTime和System.TimeSpan
3.4.9
System.Numerics.dll程序集
3.5
动用字符串数据
3.5.1
主导的字符串操作
3.5.2
字符串拼接
3.5.3
转义字符
3.5.4
概念逐字字符串
3.5.5
字符串和相等性
3.5.6
字符串是不可变的
3.5.7
System.Text.StringBuilder类型
3.6
窄化和宽化数据类型转换
3.6.1
checked关键字
3.6.2
设定项目级别的溢出检查和测试
3.6.3
unchecked关键字
3.7
隐式类型本地变量
3.7.1
隐式类型变量的范围
3.7.2
隐式类型数据是强类型数据
3.7.3
隐式类型本地变量的用处
3.8
C#迭代结构
3.8.1
for循环
3.8.2
foreach循环
3.8.3
while和do/while循环结构
3.9
标准化结构和关系/相等操作符
3.9.1
if/else语句
3.9.2
涉及/相等操作符
3.9.3
逻辑操作符
3.9.4
switch语句
3.10
小结

4.笔录全部非规范作为

术语定义

类设计指南

  • 二个类/接口应该唯有三个用处,要符 合单一职分 原则;
  • 只开创重回有用对象的构造函数,当构造函数的参数超越 3
    的话,你就活该考虑你的类设计是不是过分臃肿;
  • 接口应该短小精悍,其定义要强烈清晰地传达出其具备的表现;
  • 要是一种表现有各种完结,请考虑使用接口而不是基类;
  • 尽量接纳接口将类实行相互解耦;
  • 防止选拔静态类;
  • 毫无采纳 new 关键字来禁止编写翻译器显示相关警告;

public class Book
{
    public virtual void Print()
    {
        Console.WriteLine("Printing Book");
    }
}

public class PocketBook : Book
{
    public new void Print()
    {
        Console.WriteLine("Printing PocketBook");
    }
}

class Program
{
    static void Main(string[] args)
    {
        PocketBook pocketBook = new PocketBook();
        pocketBook.Print();

        ((Book)pocketBook).Print();

        Console.ReadKey();
    }
}

在上述代码段中,大家创造1个基类 book,并定义了1个 Print()
方法,接着大家创制2个子类 PocketBook,并通过 new
关键字来重写基类方法。在类型复杂的状态下,使用那种艺术将招致我们无法规范预测是子类调用依旧父类调用,使代码复杂度进步。

  • 应当能够将派生类当作基类对象来处理;
  • 绝不引用基类的派生类;
  • 制止揭破3个对象重视的别的对象;
  • 防止双向依赖;
  • 类应该有动静和行事;
  • 类应该保护当中间景况的一致性;

第4章 C#宗旨编程结构
4.1
艺术和参数修饰符
4.1.1
暗许的参数字传送递行为
4.1.2
out修饰符
4.1.3
ref修饰符
4.1.4
params修饰符
4.1.5
概念可选参数
4.1.6
运用命名参数调用方法
4.1.7
成员重载
4.2
C#数组
4.2.1
C#数组起先化语法
4.2.2
隐式类型本地数组
4.2.3
定义object数组
4.2.4
采纳多维数组
4.2.5
数组作为参数(和再次来到值)
4.2.6
System.Array基类
4.3
枚举类型
4.3.1
操纵枚举的平底存款和储蓄
4.3.2
申明枚举变量
4.3.3
System.Enum类型
4.3.4
动态获取枚举的称谓/值对
4.4
结构类型
4.5
值类型和引用类型
4.5.1
值类型、引用类型和赋值操作符
4.5.2
带有引用类型的值类型
4.5.3
按值传递引用类型
4.5.4
按引用传递引用类型
4.5.5
值类型和引用类型:最终的底细
4.6
C#可空类型
4.6.1
利用可空类型
4.6.2
??操作符
4.7
小结

格式规范:

Pascal 大小写

性能成员安插指南

  • 允许按私自顺序设置属性;
  • 应用方法而不是性质;
  • 不要采纳相互排斥的性质;
  • 属性、方法也许地面方法只应该做一件工作;
  • 决不通过静态成员公开有气象的靶子;
  • 用 IEnumerable 或然 ICollection 来取代具体的聚合对象作为再次来到值;
  • 假使属性、参数和重返值是字符串大概聚众类型的话,则永远不应当为空;
  • 尽心尽力地定义具体的参数;
  • 考虑选择特定域的值类型而不是基元;

其三有个别 C#面向对象编制程序
第5章封装
5.1
C#类类型
5.2
构造函数
5.2.1
暗中认可构造函数的作用
5.2.2
概念自定义的构造函数
5.2.3
再谈默许构造函数
5.3
this关键字的效果
5.3.1
利用this进行串联构造函数调用
5.3.2
观望构造函数流程
5.3.3
再谈可选参数
5.4
static关键字
5.4.1
概念静态数据
5.4.2
概念静态方法
5.4.3
概念静态构造函数
5.4.4
概念静态类
5.5
定义OOP的支柱
5.5.1
包装的职能
5.5.2
持续的作用
5.5.3
多态的功力
5.6
C#做客修饰符
5.6.1
默许的拜会修饰符
5.6.2
做客修饰符和嵌套类型
5.7
率先个支柱:C#的包裹服务
5.7.1
使用古板的走访方法和改动章程执行封装
5.7.2
使用.NET属性举行打包
5.7.3
行使类的属性
5.7.4
只读和只写属性
5.7.5
静态属性
5.8
机动属性
5.8.1
与机动属性交互
5.8.2
有关机关属性和私下认可值
5.9
对象开头化语法
5.9.1
使用初步化语法调用自定义构造函数
5.9.2
起初化内部类型
5.10
常量数据
5.10.1
只读字段
5.10.2
静态只读字段
5.11
分部类型
5.12
小结

1.缩进嵌套的代码:在每一种代码块和嵌套中投入缩进,缩进代码,抓牢可读性。这么些地点包括【类定义,内部类定义,方法定义,静态块,for循环语句,if-else语句,try、catch和finally块,匿名内部类,while语句,do-while语句】

Camel 大小写

此外设计指南

  • 抛出10分而不是重返某类别型的事态值;
  • 提供完整而有意义的丰盛音信;
  • 抛出卓绝的最现实的那么些;
  • 决不通过 try – catch 格局隐藏非凡;
  • 正确处理异步代码中的很是;
  • 调用事件委托前先判断是不是为空;

event EventHandler<string> Notify;
protected virtual void OnNotify(string args)
{
    Notify?.Invoke(this, args);
}
  • 利用受保证的虚方法来触发各样事件;
  • 设想添加属性变化事件;
  • 当接触事件时要力保 sender != nulll;
  • 只要合适的话,请考虑采用泛型约束;

class SomeClass
{
}

/// <summary>
/// 不推荐
/// </summary>
class MyClass1
{
    void SomeMethod<T>(T t)
    {
        object temp = t;
        SomeClass obj = (SomeClass)temp;
    }
}

/// <summary>
/// 推荐
/// </summary>
class MyClass2
{
    void SomeMethod<T>(T t) where T :SomeClass
    {
        SomeClass obj = t;
    }
}
  • 在回到 LINQ 表达式在此以前计算它的结果;
  • 即使不是必须,不要选用 thisbase 关键字;

第⑤章继承和多态
6.1
接二连三的主导机制
6.1.1
点名既有类的父类
6.1.2
多个基类
6.1.3
sealed关键字
6.2
回顾Visual
Studio类关系图
6.3
OOP的第二个支柱:继承
6.3.1
采取base关键字控制基类的开创
6.3.2
家门的心腹:protected关键字
6.3.3
日增密封类
6.4
包罗/委托编制程序
6.5
OOP的第⑨个支柱:C#的多态协助
6.5.1
virtual和override关键字
6.5.2
使用Visual Studio
IDE重写虚方法
6.5.3
密封虚成员
6.5.4
抽象类
6.5.5
营造多态接口
6.5.6
分子投影
6.6
基类/派生类的转换规则
6.6.1
C#的as关键字
6.6.2
C#的is关键字
6.7
极品父类:System.Object
6.7.1
重写System.Object.ToString
6.7.2
重写System.Object.Equals
6.7.3
重写System.Object.GetHashCode
6.7.4
测试修改后的Person类
6.7.5
System.Object的静态成员
6.8
小结

2.断开非常长的句子:第二,若是带有了逗号,那么在每一种逗号后边都另起一行,把逗号后边的每3个表达式都和逗号前面包车型客车表明式的第二个假名对齐。第三,应该在优先级最低的运算符此前断行。

文本命名协会

可维护性指南

  • 方法内部的代码段尽量不要当先 7 行;
  • 保障全体成员个人,类的类型暗中认可为为 internal sealed
  • 防止再度标准;
  • 在其包蕴的命名空间内命名程序集;
  • 将源文件命名为它所富含的品类;
  • 将源文件的剧情限制为一类别型;
  • 将分化的逻辑函数放到同三个部分类中;
  • 在应用多少个连串时,使用 using
    关键字导入供给的命名空间,而不是项指标全部空间标识;
  • 永不选取魔法数;
  • 除非当类型可想而知时才使用 var 关键字;
  • 概念变量时尽量地开首化;
  • 在交互独立的代码段中定义一时半刻变量;
  • 若对象有成团要求开始化的话在展开对象起先化的同时展开联谊初阶化;
  • 并非显式举行 bool 值的相比;
  • 制止嵌套循环;
  • 在使用
    亚洲必赢官网,ifelsedowhileforforeachcase
    的还要利用 {}
  • switch case 代码段中添加 default 逻辑;
  • 在全部的 ifelse if 后再添加 else;
  • 防止采取多少个返回值;
  • 考虑接纳简单的标准语句代替 if else
  • 封装属性、方法或部分函数中的复杂表明式;
  • 再体面的情景下品尝重载方法;
  • 使用可选参数来替代重载;
  • 制止采用命名参数;
  • 幸免定义当先一个参数的签名;
  • 幸免函数签名为布尔类型;
  • 毫无将参数作为一时半刻变量使用;
  • 将情势作为操作;
  • 不要诠释代码;

第拾章结构化非常处理
7.1
错误、bug与异常
7.2
.NET十分处理的效果
7.2.1
.NET格外处理的四要素
7.2.2
System.Exception基类
7.3
最简易的事例
7.3.1
掀起普通的十分
7.3.2
抓获十分
7.4
安插不行的意况
7.4.1
TargetSite属性
7.4.2
StackTrace属性
7.4.3
HelpLink属性
7.4.4
Data属性
7.5
系统级十分
7.6
运用程序级格外
7.6.1
营造自定义分外,第三有个别
7.6.2
创设自定义相当,第壹局地
7.6.3
创设自定义非凡,第3有个别
7.7
拍卖五个10分
7.7.1
通用的catch语句
7.7.2
再一次挑动那么些
7.7.3
个中国和欧洲常
7.7.4
finally块
7.8
何人在诱惑什么很是
7.9
未处理至极的结局
7.10
使用Visual
Studio调节和测试未处理的不得了
7.11
小结

3.用到空白:关键字和左括号之间,右括号和紧随其后的重庆大学字,除了”.”之外的运算符与其前后的表明式之间用空格隔开。每个逻辑上单独的法子和代码段之间,定义类可能接口的成员之内,每一种类和接口之间应该进入空白行。

1.3.1文书命名

命名指南

  • 无须在变量、参数和体系成员中隐含数字;
  • 毫无在字段添加前缀;
  • 绝不使用缩写;
  • 分子、参数和变量定义要依据它们代表的意义;
  • 动用名词、名词短语或然形容词来定义类型;
  • 使用描述性名称命名泛型参数;
  • 在类成员中并非再度定义和类相同的名号;
  • 成员定义可参照 .Net Framework 的概念方式;
  • 幸免采用大概被误解的段名称或字段;
  • 正鲜明义属性;
  • 在命名方式或一些函数时选取谓词或谓词对象;
  • 使用名称、层、谓词和机能证明命名空间;
  • 选用动词或动词前缀来定义事件;
  • 使用 ingend 后缀来表达事件预处理和发送事件;
  • 使用 on 前缀来定义事件处理程序;
  • 使用 Async 或者 TaskAsync 来标识异步方法;

第8章接口
8.1
接口类型
8.2
概念自定义接口
8.3
贯彻接口
8.4
在目的级别调用接口成员
8.4.1
获得接口引用:as关键字
8.4.2
赢得接口引用:is关键字
8.5
接口作为参数
8.6
接口作为重临值
8.7
接口类型数组
8.8
使用Visual
Studio实现接口
8.9
显式接口完毕
8.10
陈设接口层次结构
8.11
塑造可枚举类型(IEnumerable和IEnumerator)
8.11.1
用yield关键字营造迭代器方法
8.11.2
创设命名迭代器
8.12
创设可克隆的靶子(ICloneable)
8.13
营造可正如的指标(IComparable)
8.13.1
点名多少个排序依次
8.13.2
自定义属性、自定义排序类型
8.14
小结

4.决不平素动用Tab控制符:分裂条件对Tab控制符的解释也是不一致的。

1.3.2文本注释

本性指南

  • 使用 Any() 判断 IEnumerable 是不是为空 ;
  • 仅对低密集型活动选拔异步;
  • 对此 CPU密集型使用 Task.Run
  • 制止同时将 async/awaitTask.Wait 混合使用;
  • 避免 async/await 在单线程环境下出现死锁;

第④有个别 高级C#编程结构
第玖章集合与泛型
9.1
集合类的心境
9.1.1
System.Collections命名空间
9.1.2
System.Collections.Specialized命名空间
9.2
非泛型集合的题目
9.2.1
品质难题
9.2.2
品种安全题材
9.2.3
初识泛型集合
9.3
泛型类型参数的意义
9.3.1
为泛型类/结构内定项目参数
9.3.2
为泛型成员钦命项目参数
9.3.3
为泛型接口钦命项目参数
9.4
System.Collections.Generic命名空间
9.4.1
聚拢先导化语法
9.4.2
使用List类
9.4.3
使用Stack类
9.4.4
使用Queue类
9.4.5
使用SortedSet类
9.5
System.Collections.ObjectModel命名空间
9.6
创建自定义泛型方法
9.7
创设自定义泛型结构和类
9.8
花色参数的自律
9.8.1
动用where关键字的演示
9.8.2
操作符约束的欠缺
9.9
小结

命名约定:

其次章   代码外观

框架指南

  • 使用 C# 类型 小名而不是系量实行显式调用;
  • 不要硬编码;统命名空间中的类型;
  • 选取最高警戒级别编写翻译代码;
  • 对于简易的表明式防止采纳 LINQ
  • 使用 lambda 表明式来替代匿名函数;
  • 只用在选择动态目的时才使用 dynamic 关键字;
  • 支撑异步/等待职务三番五次;

第10章委托、事件和Lambda表达式
10.1
.NET委托项目
10.1.1
在C#中定义委托类型
10.1.2
System.MulticastDelegate与System.Delegate基类
10.2
最简便易行的信托示例
10.3
运用委托发送对象情形文告
10.3.1
协理多路广播
10.3.2
从委托的调用列表中移除成员
10.3.3
方法组转换语法
10.4
泛型委托
10.5
C#事件
10.5.1
event关键字
10.5.2
揭示事件的心腹面纱
10.5.3
监听传入的轩然大波
10.5.4
使用Visual
Studio简化事件注册
10.5.5
创立自定义的轩然大波参数
10.5.6
泛型EventHandler委托
10.6
C#匿名格局
10.7
Lambda表达式
10.7.1
剖析Lambda表达式
10.7.2
动用八个语句处理参数
10.7.3
包括四个(或零个)参数的Lambda表明式
10.7.4
利用Lambda表明式重新编排Car伊夫nts示例
10.8
小结

1.称呼应当享有实际意义

2.1      列宽

文书档案指南

  • 使用美式罗马尼亚(România)语来编排相关文书档案;
  • 文书档案中的代码部分要力保完整性;
  • 与别的开发人士一起编写 xml 文书档案;
  • 编写制定 MSDN 风格的技术文书档案;
  • 制止内联注释;
  • 注释值应该用来解释复杂的算法或商讨;
  • 绝不使用注释来跟踪要在事后形成的做事;

第11章 高级C#言语特色
11.1
索引器方法
11.1.1
选拔字符串值索引对象
11.1.2
重载索引器方法
11.1.3
多维的索引器
11.1.4
在接口类型上定义索引器
11.2
操作符重载
11.2.1
重载二元操作符
11.2.2
+=与-=操作符
11.2.3
重载一元操作符
11.2.4
重载相等操作符
11.2.5
重载比较操作符
11.2.6
操作符重载的末梢思考
11.3
自定义类型转换
11.3.1
想起:数值转换
11.3.2
追思:相关的类类型间的更换
11.3.3
创建自定义转换例程
11.3.4
Square类型的任何显式转换
11.3.5
概念隐式转换例程
11.4
扩充方法
11.4.1
概念增加方法
11.4.2
在实例层次上调用扩充方法
11.4.3
导入扩大方法
11.4.4
扩大方法的智能感知
11.4.5
扩充达成了点名接口的类型
11.5
匿名类型
11.5.1
定义匿名类型
11.5.2
匿名类型的在那之中表示方法
11.5.3
方法ToString和GetHashCode的实现
11.5.4
匿名类型的分外语义
11.5.5
包罗匿名类型的匿名类型
11.6
指针类型
11.6.1
unsafe关键字
11.6.2
*和 操作符
11.6.3
不安全(与安全)调换来效
11.6.4
经过指针访问字段
11.6.5
stackalloc关键字
11.6.6
采纳fixed关键字固定类型
11.6.7
sizeof关键字
11.7
小结

2.利用人们熟练的名称

2.2      换行

布局指南

  • 行使正规布局;
  • 据说公式供给开始展览命名空间的约束;
  • 将成员置于定义杰出的顺序中;
  • 谨慎采取 #region
  • 适龄使用表现周详的成员;

第12章 LINQ to Object
12.1
LINQ特有的编制程序结构
12.1.1
隐式类型本地变量
12.1.2
目标和集纳早先化语法
12.1.3
Lambda表达式
12.1.4
扩张方法
12.1.5
匿名类型
12.2
LINQ的作用
12.2.1
LINQ表达式是强类型的
12.2.2
核心LINQ程序集
12.3
将LINQ查询利用于原始数组
12.3.1
再一次,不使用LINQ
12.3.2
反射LINQ结果集
12.3.3
LINQ和隐式类型本地变量
12.3.4
LINQ和扩展方法
12.3.5
延期执行的机能
12.3.6
即时施行的功效
12.4
回来LINQ查询的结果
12.5
将LINQ查询利用到集结对象
12.5.1
访问包括的子对象
12.5.2
将LINQ查询利用于非泛型集合
12.5.3
接纳OfType筛选数据
12.6
C# LINQ查询操作符
12.6.1
骨干的选用语法
12.6.2
获取数据子集
12.6.3
黑影新数据类型
12.6.4
利用Enumerable获取总数
12.6.5
反转结果集
12.6.6
对表明式进行排序
12.6.7
维恩图工具
12.6.8
移除重复
12.6.9
LINQ聚合操作
12.7
LINQ查询语句的内部表示
12.7.1
用查询操作符建立查询表明式(复习)
12.7.2
采用Enumerable类型和Lambda表达式来确立查询表明式
12.7.3
利用Enumerable类型和匿名情势来树立查询表明式
12.7.4
用Enumerable类型和原来委托创设查询表明式
12.8
小结

3.小心谨慎使用过长的名字,能够使用简明通用的缩写

2.3      缩进

连带链接

  • Code Complete: A Praccal Handbook of Soware Construcon (Steve
    McConnel)
  • The Art of Agile Development (James
    Shore)
  • Applying Domain-Driven Design and Paerns: With Examples in C# and
    .NET (Jimmy
    Nilsson)
  • Jeremy D. Miller’s
    Blog
  • LINQ Framework Design
    Guidelines
  • Best Pracces for c#
    async/await

第①3章对象的生命周期
13.1
类、对象和引用
13.2
目的生命周期的根底
13.2.1
CIL的new指令
13.2.2
将对象引用设置为空
13.3
应用程序根的效用
13.4
对象的代
13.5
.NET 1.0至.NET
3.5的面世垃圾回收
13.6
.NET 4.0及后续版本
13.7
System.GC类型
13.8
营造可完工对象
13.8.1
重写System.Object.Finalize
13.8.2
截止进度的底细
13.9
构建可处以对象
13.10
构建可告竣类型和可处以项目
13.11
推迟对象实例化
13.12
小结

4.尽量保留元音字母

2.4      空行

    …

5.缩写词的首先个假名大写

2.5      空格

                        《精通c#(第四版)》【PDF】下载链接:

6.毫不选择大小写来区分的名字

2.6      括号 –
()

越多书单和引进电子书请关切:

包命名:

2.7      花括号 –
{}

1.用你所在协会的域名的倒序小写格局作为包的根限定词

其三章 程序注释

2.应用单独的小写词作者为每一个包的根名

3.4      注释概述

3.仅当新旧版本二进制包容的时候,其包能够选用同样的名字,不然,请使用新名字

3.2      文档型注释

花色命名:

3.3      类c注释

1.类和接口名中的各个单词的第②个字母大写

3.4      单行注释

类命名:

3.5      注释标签

1.用名词命名类

第四章 申明

2.有所成组相关属性,静态服务只怕常量的类名字使用复数形式

4.1     每行注明数

接口命名:

4.2     初始化

1.用名词或许形容词命名接口

4.3     位置

方法命名:

4.4     类和接口的注明

1.艺术名中的第⑦个单词小写,其后每一个单词的第陆个假名大写

4.5     字段的证明

2.用动词命名格局

第伍章 命名规范

3.服从JavaBean中命名属性访问函数方法:set,get,is

5.1     命名概述

变量命名:

5.2     大小写规则

1.变量命中的第②个单词小写,其后的各类单词的第③个字母大写

5.3     缩写

2.用名词命名变量

5.4     命名空间

3.汇合引用名要用复数方式

5.5     类

4.为不重庆大学的一时半刻变量简历并选择一套标准名字

5.6     接口

字段命名:

5.7     属性
(Attribute)

1.接纳this字段变量可以分别开部分变量

5.8     枚举
(Enum)

参数命名:

5.9     参数

1.构造函数或许”set”方法给字段分配参数赋值,参数名应当和字段名相同

5.10       方法

常量命名:

5.11       属性
(property)

1.常量的各种单词均大写,单词之间接选举择下划线连接

5.12       事件

文书档案约定:

5.13       常量
(const)

1.为运用和保卫安全您的代码的人编写文书档案

5.14       字段

2.申明和代码要联手

5.15       静态字段

3.行使主动的语气,省略无用的用语

5.16       集合

表明类型:

5.17       措词

1.用文书档案注释来讲述编程接口

第六章 语句

2.用规范注释格式隐藏代码而不要删除它们

6.1     每行一个言辞

3.用单行注释解释达成细节

6.2     复合语句

文书档案注释:

6.3     return 语句

1.在编排代码前描述编制程序接口

6.4     if、 if-else、if
else-if 语句

2.为公用,受保证,包,私有成员建立文书档案

6.4   for、foreach 语句

3.为每一种包编写总结和概述

6.5     while 语句

4.为包的每一种应用程序或组编写概述

[6.7.      do

注明风格:

  • while 语句]()

1.对拥有文书档案注释使用统一的格式和协会结构

[6.8.      switch

2.最重要字,标识符和常量应放权<code>…</code>标签中

  • case 语句]()

3.将代码放入<pre>…</pre>标签中

6.9.    try – catch 语句

4.在标识符第叁回面世的时候用{@link}标签

6.10.     using 块语句

5.为Javadoc标签简历并运用一套固定的逐一

6.11.     goto 语句

6.施用第多少人称叙述的样式

第⑧章    控件命名规则

7.编写独立的概述

7.1     命名格局

8.省略概述中动弹和服务的主语

7.2      首要控件名简写对照表

9.省略事物概述中的对象和动词

第八章    其他

10.应用this而不是the来指代当前类中的实例

8.1     表达式

11.方法名大概构造函数名不需圆括号,除非您想特出三个破例的签订契约

8.2     类型转换

注明内容:

附录一: 匈牙利(Magyarország)命名法

1.种种类、接口、字段和章程都编写制定概述

 

2.完好无缺描述每种方法的签字

3.包蕴示例

 

4.为停放、前置、不变条件编写文书档案

第一章 概述

 

5.为已知的瑕疵和不足编写文书档案

正式制定规则

 1 方便代码的交换和保卫安全。

   2 不影响编码的频率,不与民众习惯争辩。

   3 使代码更美观、阅读更有益。

   4 使代码的逻辑更清晰、更便于领悟。

 

6.为同步语法编写文档

术语定义

中间注释:

Pascal 大小写

      将标识符的首字母和前面连接的各样单词的首字母都大写。能够对三字符或越来越多字符的标识符使用帕斯Carl 大小写。例如:

               BackColor

1.仅增进有助于精晓你的代码的内部注释

Camel 大小写

标识符的首字母小写,而各类前边连接的单词的首字母都大写。例如:

                backColor

 

2.描写代码为啥那样做,而不是在做哪些

文本命名组织

3.幸免选取行尾注释

1.3.1文件命名

1 文件名遵循帕斯Carl命名法,无例外情形,扩充名小写。

2 使用统一而又通用的文书扩大名: C# 类  .cs

4.用行尾注释解释局地变量申明

1.3.2文书注释

  1 在每种文件头必须包蕴以下注释表明

            /*—————————————————————-

            //
Copyright (C) 二〇〇四 东软公司有限公司

            // 版权所有。

            //

            // 文件名:

            // 文件作用描述:

            //

            //

            // 创设标识:

            //

            // 修改标识:

            // 修改描述:

            //

            // 修改标识:

            // 修改描述:

//—————————————————————-*/

 

文件功效描述只需简述,具体详情在类的注释中讲述。

开创标识和改动标识由制造或修改人口的拼音或英文名加日期组成。如:

 

    李轶20040408

 

一天内有多少个修改的只需做三个在诠释表明中做3个修改标识就够了。

在颇具的代码修改处加上修改标识的笺注。

 

5.起家并利用一套关键词来标识尚未化解的题材

第③章   代码外观

 

6.在嵌套程度高的控制结构中标记出嵌套停止地点

2.1   列宽

    代码列宽控制在110字符左右。

 

7.假使八个case标记之间从未break语句,就在中游投入“fall-through”注释

2.2   换行

      当表明式超出或即将超越规定的列宽,遵守以下规则实行换行

          ① 、在逗号后换行。

          二 、 在操作符前换行。

          叁 、规则1先期于规则2。

     当以上规则会导致代码混乱的时候本身行使更灵敏的换行规则。

 

             

8.标记空语句

2.3   缩进

     缩进应该是每行1个Tab(四个空格),不要在代码中利用Tab字符。

  Visual
Studio.Net设置:工具->选项->文本编辑器->C#->制表符->插入空格

 

编制程序约定:

2.4   空行

空行是为着将逻辑上相关联的代码分块,以便抓牢代码的可阅读性。

    在偏下情形下采用三个空行

    一 、接口和类的定义之间。

    二 、枚举和类的定义之间。

    ③ 、类与类的定义之间。       

     

    在偏下景况下利用多个空行

         壹 、方法与办法、属性与天性之间。

         贰 、方法中变量注明与话语之间。

         三 、方法与办法之间。

         四 、方法中分裂的逻辑块之间。

        ⑤ 、方法中的重临语句与其他的语句之间。

         ⑥ 、属性与方法、属性与字段、方法与字段之间。

         柒 、注释与它注释的语句间不空行,但与任何的口舌间空一行。

 

1.将象征基础数据类型的类证明为final类型

2.5   空格

在偏下景况中要使用到空格

        ① 、 关键字和左括符 “(”
应该用空格隔开。如

 

           while (true)   

 

           注意在方法名和左括符 “(” 之间并非使用空格,那样有助于辨认代码中的方法调用与重点字。

          

二 、  几个参数用逗号隔开,每一种逗号后都应加贰个空格。

三 、  除了 . 之外,全部的二元操作符都应用空格与它们的操作数隔绝。一元操作符、++及–与操作    数间不供给空格。如

 

                     a  +=  c  +  d;

                   a  =  (a  +  b)   /   (c  *  d);

                while  (d++  =  s++)

                {

                    n++;

                }

                PrintSize(“size
is “  +  size  +  “\n”);

 

肆 、语句中的说明式之间用空格隔绝。如

 

       for  (expr1;  expr2;  expr3)

 

2.透过地点品种和此外实际品种建立具体品种

2.6   括号 – ()

      一 、 左括号“(” 不妨靠重要字,中间用2个空格隔断。

      2、左括号“(”  与办法名以内并非添加任何空格。

      叁 、没有供给的话不要在回到语句中选择()。如

  

        if
(condition)

 

            Array.Remove(1)

 

            return 1 

 

3.概念小的类和小的点子

2.7   花括号 – {}

       ① 、 左花括号 “{”
放于重点字或措施名的下一行并与之对齐。如

 

             if
(condition)

             {

             }

 

             public
int Add(int x, int y)

             {

             }

 

                           二 、左花括号 “{” 要与相应的右花括号 “}”对齐。

       3、平常状态下左花括号 “{”单独成行,不与别的语句并列一行。

       ④ 、if、while、do语句后肯定要利用{},即便{}号中为空或只有一条语句。如

 

             if
(somevalue == 1)

             {

                 somevalue
= 2;

             }

 

五 、 右花括号 “}” 后提出加叁个评释以便于方便的找到与之相应的 {。如

 

               while  (1)

               {

                   if  (valid)

                   {

                   }
// if valid

                   else

                   {

                   }
// not valid

                }
// end forever

 

4.定义子类,以便任何利用超类的地点都得以运用子类

其三章 程序注释

5.使全数字段私有

3.4   注释概述

壹 、修改代码时,总是使代码周围的注释保持最新。

二 、在种种例程的上马,提供正规的注释样本以提醒例程的用途、假诺和限量很有协助。注释样本应该是分解它为啥存在和能够做什么样的简练介绍.

三 、防止在代码行的末段添加注释;行尾注释使代码更难阅读。可是在眉批变量注解时,行尾注释是方便的;在那种景况下,将有所行尾注释在公共制表位处对齐。

4 、制止混乱的申明,如一整行星号。而是应该采用空白将注释同代码分开。

5 、制止在块注释的四周加上印刷框。这样看起来恐怕很漂亮貌,然而讨厌爱惜。

6 、在配置揭橥以前,移除所有近年来或无关的注释,以免止在随后的保证工作中发生眼花缭乱。

7 、倘诺要求用注释来表明复杂的代码节,请检查此代码以分明是不是应该重写它。尽一切只怕不注释难以精通的代码,而应当重写它。即便一般不应有为了使代码更简短以福利人们选用而捐躯质量,但必须维持质量和可维护性之间的平衡。

8 、在编辑注释时利用完整的语句。注释应该表金朝码,而不该扩充多义性。

9 、在编写代码时就注释,因为未来很大概没有时间这么做。别的,假如有时机复查已编辑撰写的代码,在明天总的来说很令人侧指标东西六周之后或许就不显明了。

10 、制止多余的或不正好的诠释,如幽默的不重庆大学的备考。

1① 、使用注释来分解代码的企图。它们不应作为代码的同步翻译。

1贰 、注释代码中不十二分众所周知的任何内容。

13 、为了防患难题屡屡出现,对不当修复和解决措施代码总是利用注释,越发是在公司环境中。

14 、对由循环和逻辑分支构成的代码应用注释。那个是支援源代码读者的显要方面。

15 、在总体应用程序中,使用具有同样的标点和布局的集合样式来协会注释。

16 、用空白将注释同注释分隔符分开。在尚未颜色提示的景况下查看注释时,那样做会使注释很醒目且易于被找到。

17 、在具有的代码修改处加上修改标识的注释。

18 、为了是整整齐齐,在关掉的右花括号后注释该闭合所对应的起源。

    namespace
Langchao.Procument.Web

{

} // namespace Langchao.Procument.Web

6.应用多态来取代instanceof

3.2   文书档案型注释

 该类注释选择.Net已定义好的Xml标签来标记,在证明接口、类、方法、属性、字段都应有使用该类注释,以便代码达成后一贯生成代码文书档案,让旁人更好的打听代码的贯彻和接口。如

 

///<summary>MyMethod
is a method in the MyClass class.

///<para>Here’s how
you could make a second paragraph in a description.

///<see
cref=”System.Console.WriteLine”/>

///for information about
output statements.

///</para>

            ///<seealso
cref=”MyClass.Main”/>

            ///</summary>

   public static void
MyMethod(int Int1)

   {

           }

 

品类安全:

3.3   类c注释

      该类注释用于

           1 不再选取的代码。

           2 临时测试屏蔽有些代码。

       用法

         /*

[修改标识]

[修改原因]

. . . (the
source code )

*/

 

 

1.以java.lang.Object包装通用类,提供静态类型检查

3.4   单行注释

      该类注释用于

1 方法内的代码注释。如变量的扬言、代码或代码段的解释。注释示例:

 

          //

// 注释语句

          //

         private
int number;

 

         // 注释语句

         private
int number;

 

       

    

          2 主意内变量的注解或花括号后的笺注, 注释示例:

 

               if ( 1 ==
1)    // always true

               {   

                  statement;

                 }
// always true

 

2.以类的款型封装枚举类型

3.5   注释标签

    

标签

用法

作用

<c>

c>text</c>

 

text 希望将其指示为代码的文本。

为您提供了一种将说明中的文本标记为代码的方法。使用 <code> 将多行指示为代码

<para>

<para>content</para>

content段落文本。

用于诸如 <remarks> 或 <returns> 等标记内,使您得以将结构添加到文本中。

<param>

<param name=’name‘>description</param>

name 为方法参数名。将此名称用单引号括起来 (‘ ‘)。

应当用于方法声明的注释中,以描述方法的一个参数。

<paramref>

 

<paramref name="name"/>

 

name

要引用的参数名。将此名称用双引号括起来 (" ")。

<paramref> 标记为您提供了一种指示词为参数的方法。可以处理 XML 文件,从而用某种独特的方法格式化该参数。

<see>

<see cref="member"/>

 

cref = "member" 对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 member 传递给输出XML 中的元素名。必须将 member 括在双引号(" ") 中。

使您得以从文本内指定链接。使用 <seealso> 指示希望在“请参阅”一节中出现的文本。

<seealso>

<seealso cref="member"/>

 

cref = "member" 对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 member 传递给输出XML 中的元素名。必须将 member 括在双引号(" ") 中

使您得以指定希望在“请参阅”一节中出现的文本。使用 <see> 从文本

<example>

<example>description</example>

 

description

代码示例的说明。

使用 <example> 标记可以指定使用方法或其他库成员的示例。一般情况下,这将涉及到 <code> 标记的使用。

<code>

<code>content</code>

 

content 为希望将其标记为代码的文本。

 

记为您提供了一种将多行指示为代码的方法。使用 <c>指示应将说明中的文本标记为代码

<summary>

<summary>description</summary>

 

此处description 为对象的摘要。

应当用于描述类型成员。使用 <remarks> 以提供有关类型本身的信息。

<exception>

<exceptioncref="member">description</exception>

cref = "member" 对可从当前编译环境中获取的异常的引用。编译器检查到给定异常存在后,将 member 转换为输出 XML 中的规范化元素名。必须将 member 括在双引号 (" ") 中。

description 说明。

<exception> 标记使您可以指定类能够引发的异常。

<include>

<include file=’filename‘ path=’tagpath[@name="id"]’ />

filename 包含文档的文件名。该文件名可用路径加以限定。将 filename 括在单引号中 (‘ ‘)。

Tagpath:filename 中指向标记名的标记路径。将此路径括在单引号中 (‘ ‘)。

name 注释前边的标记中的名称说明符;名称具有一个 id

id

位于注释之前的标记的 id。将此 id 括在双引号中 (" ")。

<include> 标记使您得以引用描述源代码中类型和成员的另一文件中的注释。这是除了将文档注释直接置于源代码文件中之外的另一种可选方法。

<include> 标记使用 XML XPath 语法。有关自定义 <include> 使用的方法,请参阅 XPath 文档。

<list>

<list type="bullet" | "number" | "table">

   <listheader>

      <term>term</term>

     <description>description</description>

   </listheader>

   <item>

      <term>term</term>

     <description>description</description>

   </item>

</list>

 

term  定义的项,该项将在 text 中定义。

 

description  目符号列表或编号列表中的项或者 term 的定义。

<listheader> 块用于定义表或定义列表中的标题行。定义表时,只需为标题中的项提供一个项。

列表中的每一项用 <item> 块指定。创建定义列表时,既需要指定 term 也需要指定 text。但是,对于表、项目符号列表或编号列表,只需为 text 提供一个项。

列表或表所拥有的 <item> 块数可以根据需要而定。

<permission>

<permissioncref="member">description</permission>

 

cref = "member" 对可以通过当前编译环境进行调用的成员或字段的引用。编译器检查到给定代码元素存在后,将 member 转换为输出XML 中的规范化元素名。必须将 member 括在双引号 (" ") 中。

 

description  成员的访问的说明。

<permission> 标记使您得以将成员的访问记入文档。System.Security.PermissionSet 使您得以指定对成员的访问。

<remarks>

<remarks>description</remarks>

 

description 成员的说明。

<remarks> 标记是可以指定有关类或其他类型的概述信息的位置。<summary> 是可以描述该类型的成员的位置。

<returns>

<returns>description</returns>

 

description 返回值的说明。

<returns> 标记应当用于方法声明的注释,以描述返回值。

<value>

<value>property-description</value>

 

property-description 属性的说明。

<value> 标记使您得以描述属性。请注意,当在 Visual Studio .NET 开发环境中通过代码向导添加属性时,它将会为新属性添加 <summary> 标记。然后,应该手动添加 <value> 标记以描述该属性所表示的值。

 

 

 

 

 

3.尽量用到泛型

第四章 申明

讲话和表达式:

4.1   每行证明数

一行只建议作多个宣称,并按字母顺序排列。如

 

          int
level;   //推荐

          int
size;    //推荐

          int x,
y;    //不推荐

 

1.用非凡的不二法门替换重复的、复杂的表达式

4.2   初始化

      提出在变量证明时就对其做开始化。       

 

2.施用块语句代替控制流结构的表达式

4.3   位置

      变量建议放权块的开头处,不要老是在第①次采取它们的地方做注脚。如

 

         void
MyMethod()

          {

              int int1 =
0;         // beginning of method block

 

if
(condition)

{

                  int
int2 = 0;     // beginning of “if” block

                  …

              }

          }

 

        可是也有八个分化

       

                for (int i = 0; i
< maxLoops; i++)

                {

                    …

                }

 

        应幸免分裂层次间的变量重名,如

 

            int
count;

            …

void
MyMethod()

{

                if
(condition)

                {

                    int count =
0;     // 避免

                     …

                 }

                 …

}

 

3.选拔括号分明操作顺序

4.4   类和接口的扬言

      1 在艺术名与事后的左括号间没有其余层空间格。

      2 左花括号 “{”
出现在注解的下行并与之对齐,单独成行。

      3
方法间用2个空行隔断。

    

4.在switch语句中的最后3个case体使用break语句

4.5   字段的宣示

毫不使用是 public 或 protected 的实例字段。假诺幸免将字段直接当面给开发人士,能够更自在地对类举办版本控制,原因是在爱慕二进制包容性时字段不能够被更改为属性。考虑为字段提供
get 和set 属性访问器,而不是使它们成为国有的。 get 和 set
属性访问器中可实施代码的留存使得能够拓展持续立异,如在使用性质大概取得属性更改公告时依照供给创设对象。上面包车型客车代码示例阐释带有get
和 set 属性访问器的个人实例字段的科学利用。 示例:

            public class
Control: Component

            {

               private int
handle;

               public  int
Handle

               {

                  get

                  {

                     return
handle;

                  }

               }

}

 

 

5.用到equals(),而不是==来检查和测试对象的对等关系

第④章 命名规范

 

构造:

5.1   命名概述

名称应当表达“什么”而不是“怎么着”。通过制止选拔公开基础达成(它们会发生变更)的称呼,能够保存简化复杂性的抽象层。例如,能够选拔 GetNextStudent(),而不是GetNextArrayElement()。

命名规则是:

选用正确名称时的困顿恐怕声明需求越来越分析或概念项的指标。使名称丰裕长以便有肯定的意思,并且丰裕短以免止冗长。唯一名称在编制程序上仅用于将各项区分开。表现力强的名称是为着帮衬人们阅读;由此,提供人们得以清楚的名目是有意义的。不过,请保管选取的称号相符适用语言的规则和标准。

以下几点是援引的命名情势。

① 、幸免简单被平白无故解释的难懂的称谓,如方面名 AnalyzeThis(),只怕性质名 xxK8。那样的名称会招致多义性。

二 、在类属性的称呼和浩特中学包涵类名是多余的,如 Book.BookTitle。而是应当利用 Book.Title。

叁 、只要适度,在变量名的最后或起先加计算限定符(Avg、Sum、Min、马克斯、Index)。

四 、在变量名中应用互补对,如
min/max、begin/end 和 open/close。

五 、布尔变量名应该包罗 Is,那代表 Yes/No 或 True/False
值,如 fileIsFound。

陆 、在命名状态变量时,防止使用诸如 Flag 的术语。状态变量差异于布尔变量的地方是它能够拥有五个以上的或是值。不是接纳 documentFlag,而是使用更具描述性的名称,如documentFormatType。 (此项只供参考)

⑦ 、就算对于大概仅出现在多少个代码行中的生存期相当短的变量,依然接纳有含义的名目。仅对于短循环索引使用单字母变量名,如 i 或 j。
或许的图景下,尽量不要使用原义数字或原义字符串,如

For i = 1
To 7。而是利用命名常数,如 For i = 1 To
NUM_DAYS_IN_WEEK 以便于维护和清楚。

1.构造地方有效的对象

5.2   大小写规则

大写

标识符中的兼具字母都大写。仅对于由七个只怕更少字母组成的标识符使用该约定。例如:

 

System.IO

System.Web.UI

 

下表汇总了大写规则,并提供了不一样门类的标识符的以身作则。

 

标识符

大小写

示例

Pascal

AppDomain

枚举类型

Pascal

ErrorLevel

枚举值

Pascal

FatalError

事件

Pascal

ValueChange

异常类

Pascal

WebException

注意 总是以 Exception 后缀结尾。

只读的静态字段

Pascal

RedValue

接口

Pascal

IDisposable

注意 总是以 I 前缀开始。

方法

Pascal

ToString

命名空间

Pascal

System.Drawing

属性

Pascal

BackColor

公共实例字段

Pascal

RedValue

注意 很少使用。属性优于使用公共实例字段。

受保护的实例字段

Camel

redValue

注意 很少使用。属性优于使用受保护的实例字段。

私有的实例字段

Camel

redValue

参数

Camel

typeName

方法内的变量

Camel

backColor

 

 

2.不要从构造函数中调用非final方法

5.3   缩写

      为了制止混淆和保管跨语言交互操作,请根据有关区缩写的选择的下列规则:

      1 毫不将缩写或缩略格局用作标识符名称的组成都部队分。例如,使用 GetWindow,而并非选择 GetWin。

      2 永不选拔电脑世界中未被广大接受的缩写。

3 在十分的时候,使用门到户说的缩写替换冗长的短语名称。例如,用 UI 作为 User
Interface 缩

写,用 OLAP 作为 On-line
Analytical Processing 的缩写。

4在使用缩写时,对于当先三个字符长度的缩写请使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 HTMLButton。不过,应当大写仅有三个字符的缩写,如,System.IO,而不是 System.Io。

5 不要在标识符或参数名称中采纳缩写。就算必须利用缩写,对于由多于五个字符所组成的缩写请

接纳Camel 大小写,固然那和单词的正经缩写相争论。

 

3.用嵌套的构造函数化解冗余代码

5.4   命名空间

      一 、命名命名空间时的普通规则是选用集团名称,后跟技术名称和可选的意义与统一筹划,如下所示。

            CompanyName.TechnologyName[.Feature][.Design]

        例如:

         namespace
Langchao.Procurement             //浪潮公司的买卖单管理系统

         namespace
Langchao.Procurement.DataRules   //浪潮集团的购入单管理系统的工作规则模块

 

      二 、命名空间利用帕斯Carl大小写,用逗号分隔离。

叁 、TechnologyName 指的是该品种的英文缩写,或软件名。
肆 、命名空间和类不能够选拔相同的名字。例如,有一个类被取名为Debug后,就绝不再选取Debug作为叁个称呼空间名。

  

分外处理:

5.5   类

1、使用 Pascal 大小写。

二 、用名词或名词短语命名类。

三 、使用全称幸免缩写,除非缩写已是一种公认的预订,如UQashqaiL、HTML   

4 、不要采取项方今缀,如在类名称上对类使用 C 前缀。例如,使用类名称
FileStream,而不是

CFileStream。

5 、不要使用下划线字符 (_)。

6 、有时候必要提供以字母 I 初阶的类名称,即便该类不是接口。只要 I 是当做类名称组成都部队分的凡事单词的率先个字母,那就是优良的。例如,类名称 IdentityStore
是卓殊的。在方便的地方,使用复合单词命名派生的类。派生类名称的第3个部分应该是基类的名号。例如,ApplicationException
对于从名为 Exception 的类派生的类是方便的称号,原因ApplicationException
是一种Exception。请在使用该规则时开始展览客观的论断。例如,Button 对于从 Control
派生的类是恰如其分的名称。固然按钮是一种控件,可是将 Control
作为类名称的一片段将使名称不要求地加长。

 

            public class
FileStream

            public class
Button

public class
String

 

   

1.施用不受检查、运维时的可怜来告诉或然在程序逻辑中出错的不得了未调查错误

5.6   接口

      以下规则概述接口的命名指南:

      一 、用名词或名词短语,或许描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性

名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。

2、使用 Pascal 大小写。

      三 、少用缩写。

肆 、给接口名称加上字母 I 前缀,以提醒该类型为接口。在定义类/接口对(当中类是接口的规范

贯彻)时行使相似的名目。八个称呼的分别应该只是接口名称上有字母 I 前缀。

 

⑤ 、不要选取下划线字符 (_)。

⑥ 、当类是接口的正统实施时,定义这一对类/接口组合就要采纳相似的称号。五个名称的区别之处

只是接口名前有3个I前缀。

 

          以下是毋庸置疑命名的接口的演示。

 

                public
interface IServiceProvider

                public
interface IFormatable

 

          以下代码示例阐释怎么着定义
IComponent 接口及其标准落到实处 Component 类。

 

               public
interface IComponent

               {

                   //
Implementation code goes here.

               }

              

               public
class Component: IComponent

               {

                   //
Implementation code goes here.

}

 

 

2.接纳检查非凡来告诉大概发生,而在常常的程序运行时极少发生的失实

5.7   属性 (Attribute)

相应总是将后缀 Attribute 添加到自定义属性类。以下是正确命名的属性类的演示。

 

          public class
ObsoleteAttribute

          {

}  

 

3.用再次来到代码报告可预见的情景改变

5.8   枚举 (Enum)

       枚举 (Enum) 值类型从 Enum 类继承。以下规则概述枚举的命名指南:

           1 对此 Enum 类型和值名称使用 帕斯Carl 大小写。

           2 少用缩写。

           3 不要在 Enum 类型名称上使用 Enum 后缀。

           4 对大部分 Enum 类型应用单数名称,但是对作为位域的 Enum 类型应用复数名称。

           5 总是将 FlagsAttribute 添加到位域 Enum 类型。

 

4.仅转化相当来添加消息

5.9   参数

       以下规则概述参数的命名指南:

           壹 、使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用来在大多数气象下分明它的含义。

       二 、对参数名称使用 Camel 大小写。

           ③ 、 使用描述参数的意思的称呼,而毫无采纳描述参数的档次的称谓。开发工具将提供关于参数的种类的有意义的新闻。由此, 通过讲述意义,能够更好地利用参数的名号。少用基于项指标参数名称,仅在适合采纳它们的地点使用它们。

           ④ 、不要使用保留的参数。保留的参数是专用参数,假使供给,能够在以往的本子中公然它们。相反,假若在类库的前途版本中供给更加多的数据,请为格局添加新的重载。

           伍 、不要给参数名称加匈牙利(Hungary)语类型表示法的前缀。

       以下是科学命名的参数的示范。

 

               Type
GetType(string typeName)

string
Format(string format, args() As object)

 

 

 

5.永不私下处置运营时要么不当非常

5.10 方法

       以下规则概述方法的命名指南:

           1 应用动词或动词短语命名格局。

           2 使用 Pascal
大小写。

           3
以下是不易命名的方式的实例。

 

              RemoveAll()

              GetCharArray()

Invoke()

 

 

6.用finally语句块释放能源

5.11 属性 (property)

        以下规则概述属性的命名指南:

            1 选用名词或名词短语命名属性。

            2 使用 Pascal 大小写。

            3 不要使用匈牙利(Hungary)语表示法。

4 考虑用与品质的底子项目相同的称号创立属性。例如,固然表明名为 Color 的性质,则属

性的门类同样应当是 Color。请参阅本主题中后面包车型地铁言传身教。

 

          以下代码示例阐释正确的脾性命名。

 

                 public class
SampleClass

                 {

                      public
Color BackColor

                      {

                           //
Code for Get and Set accessors goes here.

                       }

                  }

 

            以下代码示例阐释提供其名称与体系相同的习性。

 

                 public enum
Color

                 {

                     // Insert
code for Enum here.

                  }

 

 

                  public class
Control

{

                       public Color
Color

                       {

get

{

// Insert
code here.

}

set

{

// Insert
code here.

}

                        }

                   }

 

           以下代码示例不正确,原因是
Color 属性是 Integer 类型的。

 

                public enum
Color

{

// Insert
code for Enum here.

}

 

 

                public class
Control

                {

                    public int
Color

                    {

                        // Insert
code here

                     }

                }

 

           在不正确的示范中,不容许引用 Color 枚举的分子。Color.Xxx 将被阐述为访问二个分子,

该成员首先获得 Color 属性( C# 中为 int 类型)的值,然后再拜访该值的某部成员(该成

员必须是 System.Int32
的实例成员)。

 

 

断言:

5.12 事件

        以下规则概述事件的命名指南:

            一 、对事件处理程序名称使用
伊夫ntHandler 后缀。

② 、钦定五个名为 sender 和 e
的参数。sender 参数表示引发轩然大波的靶子。sender 参数始

终是object 类型的,即便在可以选取更为特定的品种时也那样。与事件相关联的景观封装

在名为 e 的风云类的实例中。对 e 参数类型应用方便而特定的事件类。

③ 、用 伊夫ntArgs 后缀命名事件参数类。

    ④ 、考虑用动词命名事件。

伍 、使用动名词(动词的“ing”格局)创造表示事件前的定义的事件名称,用过去式表示事

件后。例如,能够打消的 Close 事件应该拥有 Closing 事件和 Closed 事件。不要采纳

BeforeXxx/AfterXxx 命超情势。

            六 、不要在档次的风浪注明上应用前缀恐怕后缀。例如,使用 Close,而毫不选取 OnClose。

七 、平常情状下,对于能够在派生类中重写的事件,应在品种上提供三个受保险的不二法门(称为

OnXxx)。此办法只应享有事件参数 e,因为发送方总是类型的实例。

 

    以下示例阐释具有方便名称和参数的事件处理程序。

 

            public delegate
void MouseEventHandler(object sender, MouseEventArgs e);

 

      以下示例阐释正确命名的事件参数类。

 

                public class
MouseEventArgs : EventArgs

                {

                   int x;

               int y;

 

                  public MouseEventArgs(int x, int y)

                  {

this.x =
x;

this.y =
y;

}

 

                  public int X

                  {

                      get

                      {

                          return x;

                      }

                  }

 

                  public int Y

                  {

                 get

                       {

                           return y;

                       }

                  }

                }

 

1.规行矩步预订编制程序

5.13 常量 (const)

        以下规则概述常量的命名指南:

        全数单词大写,四个单词之间用
“_” 隔开。 如

 

                 public
const string PAGE_TITLE = “Welcome”;

          

 

2.用无用代码化解机制落到实处断言

5.14 字段

        以下规则概述字段的命名指南:

            1、private、protected 使用 Camel 大小写。

            2、public 使用 Pascal 大小写。

三 、拼写出字段名称中应用的保有单词。仅在开发人士一般都能了然时使用缩写。字段名称不

要选拔大写字母。上边是合情合理命名的字段的言传身教。

 

                class
SampleClass

                {

                    string
url;

             string
destinationUrl;

}

 

            ④ 、不要对字段名使用匈牙利(Hungary)语表示法。好的称号描述语义,而非类型。

五 、不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来分别静态和非静态字段。例如,应用
g_ 或 s_ 前缀是不科学的。

⑥ 、对预约义对象实例使用国有静态只读字段。如果存在对象的预约义实例,则将它们表明为

对象自小编的公共静态只读字段。使用
帕斯Carl 大小写,原因是字段是集体的。上边包车型大巴代码

以身作则阐释公共静态只读字段的没错运用。

 

                  public struct
Color

                  {

                      public static readonly Color Red = new
Color(0x0000FF);

 

                      public Color(int rgb)

{

 // Insert
code here.}

                          public Color(byte r, byte g, byte
b)

                          {

// Insert
code here.

                           }

 

                      public byte RedValue

                      {

                           get

                           {

                                return Color;

                           }

                       }

                   }

 

 

3.用断言捕捉代码中的逻辑错误

5.15 静态字段

       以下规则概述静态字段的命名指南:

           一 、使用名词、名词短语也许名词的缩写命名静态字段。

           2、使用 Pascal 大小写。

           ③ 、对静态字段名称使用匈牙利(Hungary)语表示法前缀。

           肆 、建议尽量采取静态属性而不是公私静态字段。

 

4.用断言检测方法的内置条件和前置条件

5.16 集合

     集聚是一组构成在共同的切近的类型化对象,如哈希表、查询、堆栈、字典和列表,集合的命名

提议用复数。

 

并发:

5.17 措词

制止采取与常用的 .NET 框架命名空间重复的类名称。例如,不要将以下任何名称用作类名称:

System、Collections、Forms 或
UI。有关 .NET 框架命名空间的列表,请参阅类库。

其余,制止使用和以下重点字冲突的标识符。

AddHandler

AddressOf

Alias

And

Ansi

As

Assembly

Auto

Base

Boolean

ByRef

Byte

ByVal

Call

Case

Catch

CBool

CByte

Cchar

CDate

CDec

CDbl

Char

Cint

Class

CLng

CObj

Const

Cshort

CSng

CStr

CType

Date

Decimal

Declare

Default

Delegate

Dim

Do

Double

Each

Else

ElseIf

End

Enum

Erase

Error

Event

Exit

ExternalSource

False

Finalize

Finally

Float

For

Friend

Function

Get

GetType

Goto

Handles

If

Implements

Imports

In

Inherits

Integer

Interface

Is

Let

Lib

Like

Long

Loop

Me

Mod

Module

MustInherit

MustOverride

MyBase

MyClass

Namespace

New

Next

Not

Nothing

NotInheritable

NotOverridable

Object

On

Option

Optional

Or

Overloads

Overridable

Overrides

ParamArray

Preserve

Private

Property

Protected

Public

RaiseEvent

ReadOnly

ReDim

Region

REM

RemoveHandler

Resume

Return

Select

Set

Shadows

Shared

Short

Single

Static

Step

Stop

String

Structure

Sub

SyncLock

Then

Throw

To

True

Try

TypeOf

Unicode

Until

volatile

When

While

With

WithEvents

WriteOnly

Xor

Eval

extends

instanceof

package

var

   

   

 

1.仅在适度的地点选用线程

第六章 语句

同步:

6.1   每行一个口舌

         每行最多带有四个说话。如

             a++;       //推荐

             b–;       //推荐

a++;
b–;  //不推荐

 

1.制止同步

6.2 复合语句

复合语句是指包括”父语句{子语句;子语句;}”的说话,使用复合语句应依照以下几点

            1 子语句要缩进。

2 左花括号“{”
在复合语句父语句的下一行并与之对齐,单独成行。

3
即便唯有一条子语句要不要简明花括号“ {}”。 如

                  while  (d + =  s++)

                  {

                      n++;

                    }

     

2.用联合署名的包装器,提供联合接口

6.3 return 语句

        return语句中不应用括号,除非它能使重返值越发显明。如

 

              return;

              return myDisk.size();

              return (size ? size : defaultSize);

 

3.比方艺术包括多少个不需求一起的要紧操作,那么毫不一起整个艺术

6.4 if、 if-else、if else-if 语句

        if、 if-else、if else-if 语句使用格式

 

            if
(condition)

            {

                statements;

            }

            if (condition)

            {

                statements;

            }

            else

            {

                statements;

            }

 

            if (condition)

            {

                statements;

            }

            else if (condition)

            {

                statements;

            }

            else

            {

                statements;

            }

        

 

4.读写实例变量的时候制止不须求的协同

6.4   for、foreach 语句

        for 语句使用格式

 

            for (initialization; condition;
update)

            {

                statements;

            }

 

       空的 for 语句(全数的操作都在initialization、condition 或 update中落到实处)使用格式

 

              for (initialization; condition; update);    //
update user id

       

       foreach 语句使用格式

 

              foreach
(object obj in array)

              {

                  statements;

}

 

        注意 1在循环进程中并非改动循环计数器。

           2对每一种空循环体给出确认性注释。

     

5.使用notify()而不是notifyAll()

6.5 while 语句

        while 语句使用格式

 

            while
(condition)

            {

                statements;

            }

 

         空的 while 语句使用格式

   

              while
(condition);

               

6.为同步开始化使用重复检查情势

6.7.       do – while 语句

         do –
while 语句使用格式

              do

              {

                  statements;

              }
while (condition);       

       

效率:

6.8.      switch – case 语句

         switch –
case  语句使用格式

              switch
(condition)

              {

                     case
1:

                         statements;

                         break;

 

                     case
2:

                         statements;

                         break;

 

                     default:

                         statements;

                         break;

                 }

 

           注意:

               ① 、语句switch中的各类case各占一行。

               ② 、语句switch中的case按字母顺序排列。

               三 、为富有switch语句提供default分支。

               肆 、全数的非空 case 语句必须用 break; 语句甘休。

 

 

1.利用懒惰开头化

6.9. try – catch 语句      

          try –
catch  语句使用格式

              try

              {

                  statements;

              }

              catch
(ExceptionClass e)

              {

                  statements;

              }

              finally

              {

                statements;

              }

   

2.制止创造不要求的对象

6.10.   using 块语句      

         using 块语句使用格式

             using
(object)

             {

                 statements;

             }

 

3.重新开头化天公地道新行使对象,尽量不要新建对象

6.11.   goto 语句      

  goto 语句使用格式

             goto Label1:

                 statements;

              Lable1:

                  statements;

 

4.把优化办事留在日后

第⑧章 控件命名规则

包装约定:

7.1 命名格局

控件名简写+英文描述,英文描述首字母大写

1.将平日应用、更改、同时公布可能相互依存的种类,放在同叁个包里

7.2   首要控件名简写对照表

控件名                          简写            控件名                        简写

Label                             lbl            TextBox                               txt

Button                            btn            LinkButton                    lnkbtn

ImageButton                imgbtn         DropDownList                ddl

ListBox                           lst             DataGrid                    dg

DataList                       dl             CheckBox                          chk

CheckBoxList                   chkls         RadioButton                      rdo

RadioButtonList                rdolt                Image                                  img

Panel                            pnl            Calender                              cld

AdRotator                        ar             Table                                  tbl

RequiredFieldValidator       rfv             CompareValidator                       cv

RangeValidator                 rv               RegularExpressionValidator   rev

ValidatorSummary            vs             CrystalReportViewer             rptvew

2.协同封闭原则

第八章 其他

 

3.选用/宣布等于原则

8.1 表达式

1 防止在表明式中用赋值语句

3 制止对浮点类型做等于或不对等判断

 

4.无环依靠原则

8.2 类型转换

1尽量防止强制类型转换。

2万一不得不做类型转换,尽量用显式方式。

5.将不安定的类和接口隔开在独立的包中

附录一: 匈牙利(Hungary)命名法

匈牙利(Magyarország)命名法是一名匈牙利(Magyarország)程序员发明的,而且她在微软办事了多年。此命名法正是经过微软的各类成品和文书档案传出来的。多数有经历的程序员,不管他们用的是哪门儿语言,都或多或少在选择它。

那种命名法的为主条件是:

变量名属性类型对象描述

即贰个变量名是由三片段音信整合,那样,程序员很简单精通变量的项目、用途,而且方便记念。

上面是一些推荐使用的规则例子,你能够选取使用,也得以依据个体爱好作些修改再用之。

⑴属性部分:

全局变量: g_

常量 : c_

类成员变量: m_

⑵类型部分:

指针: p

句柄: h

布尔型: b

浮点型: f

无符号: u

⑶描述部分:

初始化: Init

目前变量: Tmp

指标目的: Dst

源对象: Src

窗口: Wnd

下边举例表达:

hwnd: h代表句柄,wnd代表窗口,合起来为“窗口句柄”。

m_bFlag: m代表成员变量,b表示布尔,合起来为:“有些类的分子变量,布尔型,是一个场合标志”。

6.易于修改的包不要借助于难以修改的包

7.最大化抽象最大化稳定性

8.将高层设计和框架结构作为稳定的空洞,协会为平稳的包

为了让学习变得轻松、高效,今日给大家免费享用一套Java教学资源。补助我们在改为Java架构师的征程上视死如归。须求质地的欢迎参预学习调换群:9285,05736

网站地图xml地图