优秀Java程序员的编程风格

目录

图灵程序设计丛书:领悟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宝马X3、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
8中的效能
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
行使夏普Develop构建.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
    原则:代码尽量能产生可扩大,但请不要过分重构,因为你不可能预见今后;
  • DEnclaveY 原则:不要再一次造轮子,除非您一时光依然你造的车轮会比旁人的可观;
  • 面向对象编制程序原则:世袭、封装、多态、抽象;

其次片段 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
    的话,你就活该思考你的类设计是还是不是过分丰腴;
  • 接口应该小巧玲珑,其定义要了解清晰地传达出其抱有的行事;
  • 假若风(英文名:ruò fēng卡塔尔国华正茂种表现存二种落到实处,请寻思动用接口并不是基类;
  • 尽量接受接口将类举办交互作用解耦;
  • 防止使用静态类;
  • 决不接收 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
小结

格式标准:

特性成员布置指南

  • 允许按专断顺序设置属性;
  • 行使方式并非性质;
  • 毫无选拔相互倾轧的习性;
  • 品质、方法依旧地面方法只应该做风度翩翩件工作;
  • 毫不通过静态成员公开有状态的指标;
  • 用 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语句】

任何安顿指南

  • 抛出非常而不是再次来到某种类型的气象值;
  • 提供完整而有意义的非常新闻;
  • 抛出特出的最切实的拾分;
  • 绝不通过 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章继承和多态
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 行;
  • 有限支撑全数成员个人,类的类型默许为为 internal sealed
  • 幸免重新规范;
  • 在其包罗的命名空间内命名程序集;
  • 将源文件命名叫它所包蕴的品类;
  • 将源文件的剧情约束为风姿洒脱体系型;
  • 将差别的逻辑函数放到同三个有的类中;
  • 在接受一个门类时,使用 using
    关键字导入必要的命名空间,并非项指标欧洲经济共同体空间标志;
  • 不要接纳法力数;
  • 唯有当类型总的来讲时才使用 var 关键字;
  • 概念变量时尽可能地带头化;
  • 在相互独立的代码段中定义不常变量;
  • 若对象有成团须要开始化的话在开展对象初阶化的还要展开联谊初步化;
  • 毫无显式实行 bool 值的相比;
  • 防止嵌套循环;
  • 在使用
    ifelsedowhileforforeachcase
    的还要利用 {}
  • switch case 代码段中增多 default 逻辑;
  • 在富有的 ifelse if 后再增多 else;
  • 幸免选择多个重临值;
  • 思考接纳简易的尺码语句替代 if else
  • 封装属性、方法或局地函数中的复杂表达式;
  • 再妥善的情状下品尝重载方法;
  • 采纳可选参数来顶替重载;
  • 制止接受命名参数;
  • 防止定义超越3个参数的签定;
  • 制止函数签字为布尔类型;
  • 不用将参数作为有时变量使用;
  • 将格局作为操作;
  • 不要讲解代码;

第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.利用空白:关键字和左括号之间,右括号和紧随其后的基本点字,除了”.”之外的运算符与其前后的表明式之间用空格隔绝。每一个逻辑上单独的情势和代码段之间,定义类或许接口的成员之内,每一个类和接口之间应该步向空白行。

取名指南

  • 毫不在变量、参数和体系成员中含有数字;
  • 永不在字段增多前缀;
  • 不用使用缩写;
  • 分子、参数和变量定义要依据它们代表的意义;
  • 运用名词、名词短语可能形容词来定义类型;
  • 选用描述性名称命名泛型参数;
  • 在类成员中实际不是再次定义和类相似的称号;
  • 分子定义可参谋 .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调节符的分解也是例外的。

属性指南

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

第四片段 高端C#编制程序结构
第9章群集与泛型
9.1
集结类的主见
9.1.1
System.Collections命名空间
9.1.2
System.Collections.特略ized命名空间
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
包蕴多少个(或零个卡塔 尔(英语:State of Qatar)参数的拉姆da表达式
10.7.4
接纳Lambda表明式重新编排CarEvents示例
10.8
小结

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.行让人们了解的称呼

布局指南

  • 选用正规布局;
  • 依附公式供给进行命名空间的封锁;
  • 将成员置于定义特出的后生可畏一中;
  • 当心使用 #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.提心吊胆使用过长的名字,能够利用简明通用的缩写

相关链接

  • 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

第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版卡塔 尔(英语:State of Qatar)》【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.采纳主动的口吻,省略无用的用语

评释类型:

1.用文书档案注释来描述编制程序接口

2.用标准注释格式隐瞒代码而不需求删除它们

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

文书档案注释:

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

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

3.为种种包编写计算和概述

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

声明风格:

1.对持有文书档案注释使用统后生可畏的格式和团体结构

2.首要字,标记符和常量应松开<code>…</code>标签中

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

4.在标记符第二回现身的时候用{@link}标签

5.为Javadoc标签简历并选取后生可畏套固定的逐个

6.利用第多个人称陈述的样式

7.编写独立的概述

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

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

10.利用this并非the来指代当前类中的实例

11.方法名大概构造函数名不需圆括号,除非您想优越叁个特殊的签订公约

讲解内容:

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

2.完全描述各个方法的签字

3.包蕴示例

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

5.为已知的劣点和不足编写文书档案

6.为一同语法编写文书档案

在那之中注释:

1.仅拉长有扶植掌握你的代码的里边注释

2.形容代码为何如此做,实际不是在做哪些

3.制止采纳行尾注释

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

5.确立并应用生龙活虎套关键词来标记尚未解决的难题

6.在嵌套程度高的调控结构中标志出嵌套结束地点

7.倘诺多个case标识之间平素不break语句,就在中等投入“fall-through”注释

8.标识空语句

编制程序约定:

1.将意味着底工数据类型的类注明为final类型

2.经过本地品种和任何实际项目创立具体项目

3.概念小的类和小的方法

4.定义子类,以便任何利用超类之处都能够使用子类

5.使全数字段私有

6.运用多态来代替instanceof

品类安全:

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

2.以类的情势封装枚举类型

3.尽量施用泛型

言语和表达式:

1.用对等的不二法门替换重复的、复杂的表明式

2.利用块语句替代调节流结构的表明式

3.施用括号显著操作顺序

4.在switch语句中的最终一个case体使用break语句

5.应用equals(),并不是==来检查评定对象的对等关系

构造:

1.构造情景有效的靶子

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

3.用嵌套的构造函数打消冗余代码

不行管理:

1.运用不受检查、运转时的极其来告诉或许在程序逻辑中失误的深重未查明错误

2.应用检查十分来告诉或许发生,而在正规的程序运维时极少发生的失实

3.用再次来到代码报告可预见的气象改动

4.仅转变极度来增多音信

5.不用私下处置运维时要么失实非常

6.用finally语句块释放财富

断言:

1.依据预约编程

2.用无用代码排除机制落到实处断言

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

4.用断言检验方法的停放条件和前置条件

并发:

1.仅在适当的地点使用线程

同步:

1.防止同步

2.用叁只的包装器,提供联合接口

3.只要艺术包括多少个没有需求合作的基本点操作,那么毫不一同整个艺术

4.读写实例变量的时候防止不供给的一齐

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

6.为同步开头化使用重复检查格局

效率:

1.用到懒惰先导化

2.幸免创立不供给的靶子

3.双重开首化同等看待新选用对象,尽量不要新建对象

4.把优化办事留在日后

装进约定:

1.将平日利用、校正、相同的时间宣布如故彼此依存的门类,放在同二个包里

2.联合签名密闭原则

3.起用/发表等于原则

4.无环依附原则

5.将不平稳的类和接口隔离在单身的包中

6.易于更正的包不要依赖于难以更正的包

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

8.将高层设计和架构作为牢固的望梅止渴,协会为平稳的包

为了让学习变得轻巧、高效,今日给我们无偿享用风度翩翩套Java教学财富。支持大家在改为Java架构师的征途上海南大学学胆。须要材料的接待加入学习沟通群:9285,05736

发表评论

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