威尼斯人线上娱乐

东软公司无限公司c,杰出Java程序员的编制程序风格

1 4月 , 2019  

目录

图灵程序设计丛书:明白C#(第6版)是C#领域久负盛名的经文作品,深刻周详地讲学了C#编制程序语言和。NET平台的主题内容,并结合大气演示剖析相关概念。全书分为八部分:C#和。NET平台、C#基本编制程序结构、C#面向对象编制程序、高级C#编制程序结构、用。NET程序集编制程序、。NET基础类库、WPF和ASP。NETWebForms。第肆版是对第六版的尤其立异和健全,内容涵盖了起始进的。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平台构造块(CLHaval、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
上看见了一个人大牌创制二个库房:CSharpCodingGuidelines,打开未来看了一晃
readme.md 相关描述,感觉应该很不利,于是就 clone
到地头拜读一下,那里列一些和好的笔记,方便日后回首。

第2章 构建C#应用程序
2.1
.NET Framework 4.5 SDK的作用
2.2
用csc.exe构建C#应用程序
2.2.1
钦点输入输出目的
东软公司无限公司c,杰出Java程序员的编制程序风格。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
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宝马X3Y 原则:不要再一次造轮子,除非您有时光可能你造的轮子会比外人的名特别降价;
  • 面向对象编制程序原则:继承、封装、多态、抽象;

其次有的 C#主干编制程序结构
第3章
C#骨干编制程序结构
3.1
一个简短的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();
    }
}

在上述代码段中,我们创立三个基类 book,并定义了三个 Print()
方法,接着我们创造叁个子类 PocketBook,并通过 new
关键字来重写基类方法。在档次复杂的情事下,使用那种艺术将导致大家无法确切预测是子类调用依旧父类调用,使代码复杂度升高。

  • 有道是可以将派生类当作基类对象来拍卖;
  • 决不引用基类的派生类;
  • 幸免暴光贰个对象注重的任何对象;
  • 幸免双向依赖;
  • 类应该有意况和行为;
  • 类应该保险其里面景色的一致性;

第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 大小写

任何陈设指南

  • 抛出极度而不是回来某种类型的情形值;
  • 提供全体而有意义的尤其音信;
  • 抛出十分的最具体的不胜;
  • 毫不通过 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.断开不短的语句:第壹,如果含有了逗号,那么在每一个逗号前边都另起一行,把逗号后边的每1个表明式都和逗号后边的表明式的率先个字母对齐。第③,应该在优先级最低的运算符此前断行。

文本命名组织

可维护性指南

  • 主意内部的代码段尽量不要超越 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
营造自定义万分,第二部分
7.7
处理几个十一分
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
动用拉姆da表明式重新编排Car伊夫nts示例
10.8
小结

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

2.1      列宽

文书档案指南

  • 运用美式葡萄牙语来编排相关文书档案;
  • 文书档案中的代码部分要力保完整性;
  • 与任何开发职员一起编写 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类型和拉姆da表明式来确立查询表达式
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个假名大写

3.4      单行注释

类命名:

3.5      注释标签

1.用名词命名类

第四章 申明

2.装有成组相关属性,静态服务依旧常量的类名字使用复数格局

4.1     每行注解数

接口命名:

4.2     初始化

1.用名词可能形容词命名接口

4.3     位置

主意命名:

4.4     类和接口的扬言

1.方法名中的第一个单词小写,其后每一个单词的率先个假名大写

4.5     字段的扬言

2.用动词命名格局

第5章 命名规范

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.在标识符第1回出现的时候用{@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     类型转换

诠释内容:

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

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) 2003 东软公司有限公司

            // 版权全数。

            //

            // 文件名:

            // 文件功用描述:

            //

            //

            // 创造标识:

            //

            // 修改标识:

            // 修改描述:

            //

            // 修改标识:

            // 修改描述:

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

 

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

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

 

    李轶20040408

 

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

在富有的代码修改处加上修改标识的注释。

 

5.确立并接纳一套关键词来标识尚未化解的难题

其次章   代码外观

 

6.在嵌套程度高的控制结构中标记出嵌套甘休地方

2.1   列宽

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

 

7.假使三个case标记之间一直不break语句,就在中间投入“fall-through”注释

2.2   换行

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

          壹 、在逗号后换行。

          ② 、 在操作符前换行。

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

     当以上规则会导致代码混乱的时候本中国人民银行使更灵敏的换行规则。

 

             

8.标记空语句

2.3   缩进

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

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

 

编制程序约定:

2.4   空行

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

    在偏下情状下采纳七个空行

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

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

    三 、类与类的定义之间。       

     

    在以下景况下利用3个空行

         一 、方法与格局、属性与性子之间。

         ② 、方法中变量表明与话语之间。

         ③ 、方法与方法之间。

         肆 、方法中区别的逻辑块之间。

        伍 、方法中的重临语句与别的的口舌之间。

         陆 、属性与艺术、属性与字段、方法与字段之间。

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

 

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   括号 – ()

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

      ② 、左括号“(”  与艺术名之间并非添加别的空格。

      ③ 、没有须求的话不要在回来语句中动用()。如

  

        if
(condition)

 

            Array.Remove(1)

 

            return 1 

 

3.定义小的类和小的办法

2.7   花括号 – {}

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

 

             if
(condition)

             {

             }

 

             public
int Add(int x, int y)

             {

             }

 

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

       三 、平常情形下左花括号 “{”单独成行,不与其它语句并列一行。

       ④ 、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 、幸免多余的或不适于的笺注,如幽默的不首要的备考。

11、使用注释来诠释代码的意向。它们不应作为代码的一块儿翻译。

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
方法间用二个空行隔开分离。

    

4.在switch语句中的最终三个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在采纳缩写时,对于超过三个字符长度的缩写请使用 帕斯Carl 大小写或 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 指的是该类型的英文缩写,或软件名。
4、命名空间和类不可能利用同样的名字。例如,有3个类被命名为Debug后,就毫无再选拔Debug作为3个称呼空间名。

  

丰裕处理:

5.5   类

1、使用 Pascal 大小写。

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

三 、使用全称制止缩写,除非缩写已是一种公认的预约,如U奇骏L、HTML   

4 、不要选拔项近日缀,如在类名称上对类使用 C 前缀。例如,使用类名称
FileStream,而不是

CFileStream。

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

6 、有时候要求提供以字母 I 早先的类名称,固然该类不是接口。只要 I 是当做类名称组成都部队分的一体单词的率先个字母,那就是适合的。例如,类名称 IdentityStore
是合适的。在稳当的地点,使用复合单词命名派生的类。派生类名称的第一个部分应该是基类的名号。例如,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 前缀。

 

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

⑥ 、当类是接口的正统进行时,定义这一对类/接口组合就要选用相似的名目。多少个名称的不一样之处

只是接口名前有一个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 类型和值名称使用 Pascal 大小写。

           2 少用缩写。

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

           4 对当先十分六 Enum 类型应用单数名称,不过对作为位域的 Enum 类型应用复数名称。

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

 

4.仅转化非凡来添加音讯

5.9   参数

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

           ① 、使用描述性参数名称。参数名称应当持有丰富的描述性,以便参数的称号及其类型可用来在多数气象下鲜明它的含义。

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

           三 、 使用描述参数的意思的名目,而不要选择描述参数的档次的名号。开发工具将提供有关参数的种类的有含义的音讯。因而, 通过讲述意义,能够更好地行使参数的称谓。少用基于项目标参数名称,仅在符合利用它们的地方采用它们。

           肆 、不要使用保留的参数。保留的参数是专用参数,假设急需,能够在未来的本子中公开它们。相反,即使在类库的前程版本中要求越多的数目,请为格局添加新的重载。

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

       以下是不错命名的参数的言传身教。

 

               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 将被分解为访问2个成员,

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

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

 

 

断言:

5.12 事件

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

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

贰 、钦命七个名为 sender 和 e
的参数。sender 参数表示引发事件的对象。sender 参数始

终是object 类型的,就算在能够选拔更为特定的门类时也这么。与事件相关联的处境封装

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

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

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

⑤ 、使用动名词(动词的“ing”情势)创设表示事件前的概念的事件名称,用过去式表示事

件后。例如,能够撤消的 Close 事件应该具备 Closing 事件和 Closed 事件。不要采取

BeforeXxx/AfterXxx 命有名的模特式。

            六 、不要在档次的事件评释上使用前缀也许后缀。例如,使用 Close,而不用选拔 OnClose。

⑦ 、平常景况下,对于能够在派生类中重写的事件,应在项目上提供2个受保证的法门(称为

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;

}

 

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

⑤ 、不要对字段名或静态字段名应用前缀。具体说来,不要对字段名称应用前缀来不相同静态和非静态字段。例如,应用
g_ 或 s_ 前缀是不得法的。

陆 、对预订义对象实例使用集体静态只读字段。假诺存在对象的预订义实例,则将它们注解为

对象自俺的共用静态只读字段。使用
Pascal 大小写,原因是字段是公共的。下边包车型大巴代码

演示阐释公共静态只读字段的不利行使。

 

                  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 大小写。

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

           肆 、提出尽量选用静态属性而不是集体静态字段。

 

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   每行二个说话

         每行最多含有2个口舌。如

             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)命名法

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

那种命名法的着力规则是:

变量名属性类型指标描述

即一个变量名是由三片段消息整合,那样,程序员很简单领悟变量的门类、用途,而且便于回想。

下边是一对引进应用的条条框框例子,你能够选用使用,也能够依据个人喜欢作些修改再用之。

⑴属性部分:

全局变量: g_

常量 : c_

类成员变量: m_

⑵类型部分:

指针: p

句柄: h

布尔型: b

浮点型: f

无符号: u

⑶描述部分:

初始化: Init

一时半刻变量: Tmp

指标目的: Dst

源对象: Src

窗口: Wnd

下边举例表明:

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

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

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

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

8.将高层设计和架构作为稳定的聊以自慰,组织为平安的包

为了让学习变得轻松、高效,前几日给大家免费享用一套Java教学能源。扶助大家在成为Java架构师的道路上大胆。须要质地的欢迎出席学习交换群:9285,05736


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图