奥门金沙网址读 《CSharp Coding Guidelines》有感

目录

图灵程序设计丛书:精晓C#(第6版)是C#领域闻名遐迩的卓越小说,深刻周全地批注了C#编制程序语言和。NET平台的焦点内容,并整合大气示范解析相关概念。全书分为八部分:C#和。NET平台、C#骨干编制程序布局、C#面向对象编程、高端C#编制程序布局、用。NET程序集编制程序、。NET底蕴类库、WPF和ASP。NETWebForms。第6版是对第5版的愈加改进和完善,内容包涵了最早进的。NET编制程序技巧和本事,并标准显示出C#编制程序语言的新式变化和。NET4。5Framework的新特点。

来自《The Elements of Java Style》-《Java编制程序风格》生机勃勃书,值得生机勃勃读的图书,会令你在细节上节省数不胜数时日,合营之间更是开心!

《图灵程序设计丛书:精晓C#(第6版)》由微软C#MVPAndrewTroelsen编写,第6版特别针对C#5。0和。NET4。5实行了细致入微的修改装订,是各档次。NET开荒人士的必读之作。

好处相当的少说了,可是有几个规格如下:


    图灵程序设计丛书:明白C#
目录:

1.保证原有风格

C# 编制程序指南

率先片段 C#与.NET平台
第1章
.NET之道
1.1
初识.NET平台
1.2
.NET平台架构块(CL奇骏、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
钦命输入输出指标
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.首先次就做对

大旨标准

第二有的 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.记录全数非标准作为

类设计指南

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
小结

格式标准:

质量成员安排指南

其三片段 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语句】

别的设计指南

event EventHandler<string> Notify;
protected virtual void OnNotify(string args)
{
    Notify?.Invoke(this, args);
}
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;
    }
}

第6章世襲和多态
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.断开十分长的语句:第大器晚成,要是含有了逗号,那么在每多个逗号前面都另起风流罗曼蒂克行,把逗号前边的每三个表明式都和逗号前面包车型地铁表达式的第一个字母对齐。第二,应该在优先级最低的运算符早前断行。

可维护性指南

第7章构造化十分处理
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.选取空白:关键字和左括号之间,右括号和紧随其后的要紧字,除了”.”之外的运算符与其前后的表明式之间用空格隔离。各种逻辑上单独的措施和代码段之间,定义类或然接口的积极分子之间,每一种类和接口之间应当参预空白行。

命名指南

第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调整符的表达也是莫衷一是的。

性格指南

第四部分 高档C#编制程序构造
第9章群集与泛型
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
小结

取名约定:

框架指南

第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
包括多少个(或零个)参数的拉姆da表明式
10.7.4
接受兰姆da表明式重新编辑Car伊夫nts示例
10.8
小结

1.名号应当具有实际意义

文书档案指南

第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.使用人们耳闻则诵的名目

构造指南

第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.严慎采纳过长的名字,能够运用简明通用的缩写

连锁链接

第13章对象的生命周期
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.尽量保留元音字母

    ...

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

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

6.毫不采取大小写来区分的名字

越来越多书单和推举E-BOOK请关怀:

包命名:

1.用你所在集体的域名的倒序小写格局作为包的根约束词

2.运用单独的小写词作者为每种包的根名

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

品类命名:

1.类和接口名中的每一种单词的率先个字母大写

类命名:

1.用名词命名类

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

接口命名:

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

艺术命名:

1.办法名中的第二个单词小写,其后各种单词的第一个假名大写

2.用动词命超级模特式

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

变量命名:

1.变量命中的第叁个单词小写,其后的每一种单词的第四个字母大写

2.用名词命名变量

3.成团援引名要用复数格局

4.为不根本的有时变量简历并运用蓬蓬勃勃套规范名字

字段命名:

1.选拔this字段变量能够分别开部分变量

参数命名:

1.布局函数恐怕”set”方法给字段分配参数赋值,参数名应当和字段名雷同

常量命名:

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

文书档案约定:

1.为利用和掩护您的代码的人编写文书档案

2.解说和代码要朝气蓬勃并

3.接收主动的口吻,省略无用的辞藻