工程师
其他
推荐课程
average > 0 ? $model->average . '分' : '10.0分' ?>

优雅代码养成指南

欧文

前富士通 资深架构师

技术总监、资深架构师、讲师。15年+ 大型软件产品架构经验。曾为瑞穗银行(Mizuho Bank),东京证 券交易所,五十铃汽车开发企业级系统。擅长企业级系统架构,领域驱动设计,重构与模式。
为深圳证券交易所,中国电信,中国平安,招商银行信用卡中心,DELL,中兴通讯讲授技术课程。现为南 京大学,东南大学,南瑞集团特约技术讲师
现任创业AI公司研发技术总监, 负责带领团队研发计算机视觉、AI安防及大数据相关产品
授课经验(给哪些客户授课):
深圳证券交易所,中国电信,中国平安,招商银行信用卡中心,DELL,中兴通讯,
华润集团,南瑞集团,民生银行,深圳证券信息,广州农商行,中泰证券,振华重工
项目经验成功案例:
深交所运维数据平台开发 DDD 导入
招行银行信用卡中心手机App积分模块重构
南瑞集团电力继保模块重构

技术总监、资深架构师、讲师。15年+ 大型软件产品架构经验。曾为瑞穗银行(Mizuho Bank),东京证 券交易所,五十铃汽车开发企业级系统。擅长企业级系统架构,领域驱动设计,重构与模式。 为深圳证券交易所,中国电信,中国平安,招商银行信用卡中心,DELL,中兴通讯讲授技术课程。现为南 京大学,东南大学,南瑞集团特约技术讲师 现任创业AI公司研发技术总监, 负责带领团队研发计算机视觉、AI安防及大数据相关产品 授课经验(给哪些客户授课): 深圳证券交易所,中国电信,中国平安,招商银行信用卡中心,DELL,中兴通讯, 华润集团,南瑞集团,民生银行,深圳证券信息,广州农商行,中泰证券,振华重工 项目经验成功案例: 深交所运维数据平台开发 DDD 导入 招行银行信用卡中心手机App积分模块重构 南瑞集团电力继保模块重构

课程费用

5800.00 /人

课程时长

2

成为教练

课程简介

细节之中自有天地,细节也决定着成败。 对于编码的细节,一直被认为是小道。诸如方法命名,变量定义,语句组织,任务分解等内容,都是细枝末节,微不足道。然而,对一个整体的软件系统而言,既需要宏观的架构 决策,设计与指导原则,也必须重视微观的代码细节。在软件行业,有许多影响深远的重大 失败,其根源往往是编码细节出现了疏漏。
“代码即架构”,软件系统质量的好坏,归根结底还是需要代码来告知。代码的优劣不 仅直接决定了软件的质量,还将直接影响软件的成本。

目标收益

本课程可以让程序员将以往格式凌乱、拖沓冗长的代码变得更具可读性,更整洁,更优 雅。编写程序不仅是去告诉计算机你要做什么,更重要的是让人明白,你想要让计算机去做 什么。 而编写简洁、清晰、美观、容易理解的代码,才能够让”人“容易明白自己的意图。

培训对象

只要是需要编写代码的人员,都适合本课程,有 C 语言,C++/Java 语言背景者更佳

课程大纲

开篇 内容一:是什么让代码变得“更好”
1. 可读性基本原理
2.整洁代码的含义

3.高质量代码的关注点

4.优雅的代码 = 可读,整洁,高质量
代码形式的改进 内容一:将信息装进名字里

1.选择专业的词

2.避免使用像 tmp 这样泛泛的名字

3.用具体的名字代替抽象的名字

4.为名字附带更多信息

5.名字应该有多长

6.利用名字的格式类传递含义

内容二:不会误解的名字

1.Filter() 与 Clip(text, length)

2.使用 first 和 last 来表示包含的范围

3.使用 begin 和 end 来表示包含/排除范围

4.给布尔值命名

5.与使用者的期望相匹配

6.实战:如何权衡多个备选的名字

内容三:代码审美学

1.保持一致和紧凑

2.用函数来整理不规则的代码

3.在需要时使用列对齐

4.始终保持一个有意义的顺序

5.把声明按块组织起来

6.把代码分成“段落”

7.个人风格与一致性

内容四:该写什么样的注释

1.什么不需要注释

2.记录你的思路

3.站在读者的角度

4.让注释保持紧凑

5.避免使用不明确的代词

6.润色粗糙的句子

7.精确的描述函数的行为


8.用输入/输出例子来说明特别的情况

9.声明代码的意图

10.“具名函数参数“的注释

11.采用信息量高的词
简化循环和逻辑 内容五:把控制流变得易读

1.条件语句中参数的顺序

2.if/else 语句块的顺序

3.三目运算符

4.避免 do/while 循环

5.从函数中提前返回

6.臭名昭著的 goto

7.最小化嵌套

内容六:拆分超长的表达式

1.使用解释性变量

2.使用总结性变量

3.使用德摩根定律

4.滥用的短路逻辑

5.实战:与复杂的逻辑战斗

6.拆分巨大的语句

7.简化表达式的创意方法

内容七:变量与可读性

1.减少变量

2.缩小变量的作用域

3.只写一次的变量

4.实战:变量优化
重新组织代码 内容八:抽取不相关的子问题

1.例子:findClosestLocation()

2.纯工具代码

3.其他多用途代码

4.创建大量通用代码

5.项目专有功能

6.简化已有接口

7.按需重塑接口


8.过犹不及

内容九:一次只做一件事

1.任务可以很小

2.从对象中抽取值

3.大型的例子

内容十:把想法变为代码

1.清楚的描述逻辑

2.了解函数库是有帮助的

3.把这个方法用于更大的问题

内容十一:少些代码

1.别费神去实现你不需要的功能

2.质疑和拆分你的需求

3.保持小代码库

4.熟悉你周边的代码库
精化测试代码 内容十二:测试与可读性

1.使测试易于阅读和维护

2.测试代码的问题

3.如何使测试代码更可读

4.让错误消息具有可读性

5.选择好的测试输入

6.为测试函数命名

7.测试函数中的陷阱

8.测试驱动开发
项目实战 内容十三:设计并改进“计数器“

1.问题

2.定义类接口

3.尝试 1 – 一个幼稚的方案

4.尝试 2 – 传送带设计方案

5.尝试 3 – 时间桶设计方案

6.比较三种方案
开篇
内容一:是什么让代码变得“更好”
1. 可读性基本原理
2.整洁代码的含义

3.高质量代码的关注点

4.优雅的代码 = 可读,整洁,高质量
代码形式的改进
内容一:将信息装进名字里

1.选择专业的词

2.避免使用像 tmp 这样泛泛的名字

3.用具体的名字代替抽象的名字

4.为名字附带更多信息

5.名字应该有多长

6.利用名字的格式类传递含义

内容二:不会误解的名字

1.Filter() 与 Clip(text, length)

2.使用 first 和 last 来表示包含的范围

3.使用 begin 和 end 来表示包含/排除范围

4.给布尔值命名

5.与使用者的期望相匹配

6.实战:如何权衡多个备选的名字

内容三:代码审美学

1.保持一致和紧凑

2.用函数来整理不规则的代码

3.在需要时使用列对齐

4.始终保持一个有意义的顺序

5.把声明按块组织起来

6.把代码分成“段落”

7.个人风格与一致性

内容四:该写什么样的注释

1.什么不需要注释

2.记录你的思路

3.站在读者的角度

4.让注释保持紧凑

5.避免使用不明确的代词

6.润色粗糙的句子

7.精确的描述函数的行为


8.用输入/输出例子来说明特别的情况

9.声明代码的意图

10.“具名函数参数“的注释

11.采用信息量高的词
简化循环和逻辑
内容五:把控制流变得易读

1.条件语句中参数的顺序

2.if/else 语句块的顺序

3.三目运算符

4.避免 do/while 循环

5.从函数中提前返回

6.臭名昭著的 goto

7.最小化嵌套

内容六:拆分超长的表达式

1.使用解释性变量

2.使用总结性变量

3.使用德摩根定律

4.滥用的短路逻辑

5.实战:与复杂的逻辑战斗

6.拆分巨大的语句

7.简化表达式的创意方法

内容七:变量与可读性

1.减少变量

2.缩小变量的作用域

3.只写一次的变量

4.实战:变量优化
重新组织代码
内容八:抽取不相关的子问题

1.例子:findClosestLocation()

2.纯工具代码

3.其他多用途代码

4.创建大量通用代码

5.项目专有功能

6.简化已有接口

7.按需重塑接口


8.过犹不及

内容九:一次只做一件事

1.任务可以很小

2.从对象中抽取值

3.大型的例子

内容十:把想法变为代码

1.清楚的描述逻辑

2.了解函数库是有帮助的

3.把这个方法用于更大的问题

内容十一:少些代码

1.别费神去实现你不需要的功能

2.质疑和拆分你的需求

3.保持小代码库

4.熟悉你周边的代码库
精化测试代码
内容十二:测试与可读性

1.使测试易于阅读和维护

2.测试代码的问题

3.如何使测试代码更可读

4.让错误消息具有可读性

5.选择好的测试输入

6.为测试函数命名

7.测试函数中的陷阱

8.测试驱动开发
项目实战
内容十三:设计并改进“计数器“

1.问题

2.定义类接口

3.尝试 1 – 一个幼稚的方案

4.尝试 2 – 传送带设计方案

5.尝试 3 – 时间桶设计方案

6.比较三种方案

活动详情

提交需求