优秀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景逸SUV、CTS和CLS卡塔 尔(英语:State of Qatar)简单介绍
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.先是次就做对

基本尺度

  • Astonishment
    原则:你的代码应该尽可能做到让每一个人都能清楚。任哪个人都有写出让机器认知的代码,可是并非每一种人都能写出令人认知的代码;
  • Kiss 原则:相近 Python 之禅 里面说的那样,轻便胜于复杂;
  • YAGNI
    原则:代码尽量能一呵而就可扩充,但请不要过于重构,因为您不能够预言将来;
  • DCR-VY 原则:不要再一次造轮子,除非你有的时候光仍然您造的车轮会比别人的优质;
  • 面向对象编制程序原则:世袭、封装、多态、抽象;

第二片段 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
小结

格式标准:

特性成员陈设指南

  • 允许按私自顺序设置属性;
  • 行使办法并不是性质;
  • 绝不使用互相排斥的质量;
  • 质量、方法照旧当地方法只应该做生机勃勃件业务;
  • 不用通过静态成员公开有动静的指标;
  • 用 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卡塔 尔(英语:State of Qatar)
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.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.名号应当负有实际意义

文档指南

  • 行使中式法文来编排相关文书档案;
  • 文档中的代码部分要承保完整性;
  • 与其他开荒人士一同编写 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.并不是接受大小写来区分的名字

越来越多书单和推荐介绍电子书请关怀:

包命名:

1.用你所在集体的域名的倒序小写方式作为包的根节制词

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

3.仅当新旧版本二进制包容的时候,其包能够接收相像的名字,不然,请使用新名字

体系命名:

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

类命名:

1.用名词命名类

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

接口命名:

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

措施命名:

1.办法名中的第3个单词小写,其后各个单词的首先个字母大写

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