关键词:
干净整洁的代码,不但质量更可靠,也为后期升级、维护打下了良好的基础。那么,整洁代码的衡量标准是什么?本文将 Robert C. Martin 的 Clean Code 思想融入到 TypeScript,一起探讨研究代码整洁之道。
WTFs/Minute
1. 命名的艺术
计算机科学只存在两个难题:缓存失效和命名。——Phil KarIton
给变量命名确实是一件痛苦的事情,尤其随着项目越来越复杂,代码库越来越庞大,你才会发现命名也是一门艺术,好的命名原来是如此重要。
1.1 有意义的变量名
取一个有明确的具体含义的变量名。
反例:
const yyyymmdd = moment().format("YYYY/MM/DD");
正例:
const currentDate = moment().format("YYYY/MM/DD");
1.2 可读的变量名
如果你不能正确读出它,那么在讨论它时你就会很别扭。
反例:
class Usr123
private asdf = ‘123‘;
// ...
正例:
class User
private id = ‘123‘;
// ...
1.3 可搜索的名字
正常情况下,我们阅读理解代码的时间要比写代码多,所以变量的可搜索非常重要。如果不抽取并命名为变量,那就坑了读代码的人。可以使用工具 TSLint,它可以帮助识别未命名的常量。
反例:
setTimeout(restart, 86400000); //86400000 代表什么?它是魔数!
正例:
// 声明为常量,要大写且有明确含义。
const MILLISECONDS_IN_A_DAY = 24 * 60 * 60 * 1000;
setTimeout(restart, MILLISECONDS_IN_A_DAY);
1.4 使用自解释的变量名
反例:
declare const users: Map;
for (const kv of users)
// ...
正例:
declare const users: Map;
// 变量名解析自身的含义
for (const [id, user] of users)
// ...
1.5 合并功能一致的变量
功能重复的情况下,要精简成一个,其余都是冗余代码。
反例:
function getUserInfo(): User;
function getUserDetails(): User;
function getUserData(): User;
正例:
function getUser(): User;
1.6 避免思维映射
不要让别人去猜测或想象变量的含义,明确才是王道。
反例:
const u = getUser();
const s = getSubscription();
const t = charge(u, s);
正例:
const user = getUser();
const subscription = getSubscription();
const transaction = charge(user, subscription);
1.7 不加无用的上下文
如果类型名已经表达了明确的信息,那么,内部变量名中不要再重复表达。
反例:
type User =
userId: string;
userName: string;
userAge: number;
正例:
type User =
id: string;
name: string;
age: string;
1.8 使用默认参数,而非短路或条件判断
通常,默认参数比短路更整洁。
反例:
function loadPages(count: number)
const loadCount = count !== undefined ? count : 10;
// ...
正例:
function loadPages(count: number = 10)
// ...
对于我们国内程序员来说,取个有意义的变量名也着实考验英语基本功。可以尝试使用 CODELF 变量命名神器,在 VSCode、Sublime Text 都有插件。另外,对现有代码的命名进行重构,最好使用 IDE 自带的重构功能,避免出错。
CODELF
2. 函数
2.1 参数越少越好(理想情况不超过 2 个)
函数参数要少,这样对函数的测试会更简单。如果参数超过 3 个,那么测试复杂度会激增,因为需要测试不同参数之间的组合场景。UT 的覆盖率也很难保证。
通常,只有一两个参数。若有两个以上的参数,就要认真考虑函数的功能是否可以拆分。
但在有些情况下,确实需要很多参数,可以考虑使用对象。但若要函数的定义更清晰,最好使用解构,它有以下优点:
查看函数签名,即会清楚使用了哪些属性。
解构对传递给函数的参数对象做深拷贝,可以预防副作用。(注意:不会克隆从参数对象中解构的对象和数组)
TypeScript 会对未使用的属性显示警告。
反例:
function reqeust(method: string, url: string, body: string, headers: string)
// ...
reqeust(‘POST‘, ‘/api/service/v1/users‘, body, headers);
正例:
function reqeust(method: string, url: string, body: string, headers: string)
// ...
reqeust(
method: ‘POST‘,
url: ‘/api/service/v1/users‘,
body: body,
headers: headers
);
也可以使用 TypeScript 的类型别名,进一步提高可读性。
type RequestOptions = method: string, url: string, body: string, headers: string;
function request(options: RequestOptions)
// ...
reqeust(
method: ‘POST‘,
url: ‘/api/service/v1/users‘,
body: body,
headers: headers
);
2.2 只做一件事
这是目前最重要的一条规则。如果函数做的不止一件事,那么,它将很难理解、使用以及测试。反之,单一功能的函数,会让代码更清晰。一定要做好这一点!
整洁之道如何写出更整洁的代码(上)
如何写出更整洁的代码 代码整洁之道不是银弹,不会立竿见影的带来收益。 没有任何犀利的武功招式,只有一些我个人异常推崇的代码整洁之道的内功心法。它不会直接有效的提高你写代码的能力与速度,... 查看详情
代码整洁之道读书笔记
代码整洁之道 前言如何用功 阅读大量代码 找优点和缺点第一章整洁代码不要留到以后,稍后等于永不烂代码影响生产力代码整洁性不但有关效率,还有关生存好代码 C++之父 尽量减少依赖关系,便于维护... 查看详情
代码整洁之道
文章目录代码整洁之道定义变量名字的时候常用的单词有意义的命名怎样写简洁的,别人一眼可以看的懂的方法方法参数越少越好注释格式别给方法返回null值我们该提炼方法中的变量还是不提炼方法中的变量?代码整洁之道定... 查看详情
代码整洁之道pdf下载
网盘下载地址:代码整洁之道PDF下载–易分享电子书PDF资源网 作者: [美]RobertC·Martin出版社: 人民邮电出版社原作名: CleanCode:AHandbookofAgileSoftwareCraftsmanship译者: 韩磊出版年: 2010-1-1页数: 388定... 查看详情
读《代码整洁之道》有感
本周我开始阅读RobertC.Martin所著的《代码整洁之道》一书,希望能从中收获高效编写代码的诀窍,因为我自认为我的代码有时候比较糟糕,不太容易维护。一方面,是我没有养成良好的编程习惯;另一方面,我不太清楚什么才是... 查看详情
前端阅读——《代码整洁之道》摘记之整洁代码命名函数注释
这本书提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。(作者认为书可以有另一个名字:《如何在意代码》)读这本书,促使我思考代码中何谓正确,... 查看详情
代码整洁之道-函数
函数参考书籍:《代码整洁之道》,语言:Python1.函数要短小1)每个函数只做一件事,并且每个函数都依次把你带到下一个函数,这就是函数应该达到的短小程度。2)if,else,while等语句的代码块应该只有一行,该行大概是一个函... 查看详情
代码整洁之道-函数
函数参考书籍:《代码整洁之道》,语言:Python1.函数要短小1)每个函数只做一件事,并且每个函数都依次把你带到下一个函数,这就是函数应该达到的短小程度。2)if,else,while等语句的代码块应该只有一行,该行大概是一个函... 查看详情
好文章系列——代码整洁之道
注: 整洁代码之道——重构(文章来源:http://www.infoq.com/cn/articles/clean-code-refactor 作者南志文) 写在前面 现在的软件系统开发难度主要在于其复杂度和规模,客户需求也不再像WinstonRoyce瀑布模型期望那样在系统... 查看详情
《代码整洁之道》读书笔记
第一章整洁代码 读完,个人觉得第一章的关键点在于让读者追求卓越,不仅仅满足于功能的实现,更要培养代码整洁的思维。所以对待你的代码就像去雕琢艺术品一样,不要把它当成垃圾,认真去雕琢每一个细节,另外,文... 查看详情
[阅读笔记]代码整洁之道
第一章: 1.混乱的代码难以维护,导致生产力越来越低。糟糕的代码引发混乱,越改越烂。2.整洁的代码:优雅,高效,少依赖,性能优,命名规范,清晰尽量少的api3.破窗理论:窗户破损的建筑让人觉得无人照管,于是别人... 查看详情
c#代码整洁之道读后总结与感想
1. 基本信息C#代码整洁之道:代码重构与性能提升 ,英文名为CleanCodeinC#。作者:[英]詹森·奥尔斯(JasonAlls)著,刘夏译机械工业出版社,2022年4月出版。1.1. 读薄率书籍总字数489000字,笔记总字数8927字。读薄率8927÷48... 查看详情
第五次读书笔记——robrtc.martin的《代码整洁之道》
本周我读的书是美国作者RobrtC.Martin的《代码整洁之道》。一周的时间,我主要阅读了本书的前五章,关于整洁代码、有意义的命名、函数、注释以及格式等内容。书中作者有个观点:优雅和高效。作者说:代码逻辑应当直... 查看详情
代码整洁之道(代码片段)
有意义的命名1名副其实2避免误导3做有意义的分区废话都是冗余。Variable永远不应出现在变量名中,Table一词永远不应出现在表名中。当缺少明确约定:变量moneyAmout与money没区别,customerInfo与customer没区别,accountData与account没区别... 查看详情
代码整洁之道(代码片段)
有意义的命名1名副其实2避免误导3做有意义的分区废话都是冗余。Variable永远不应出现在变量名中,Table一词永远不应出现在表名中。当缺少明确约定:变量moneyAmout与money没区别,customerInfo与customer没区别,accountData与account没区别... 查看详情
《代码整洁之道》精读与演绎之五整洁类的书写准则
本系列文章由@浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/52344732 作者:毛星云(浅墨) 微博:http://weibo.com/u/1723155442 这篇文章将与大家一起聊一聊,书... 查看详情
代码整洁之道
...释不如无注释,不能保证注释新鲜,删除注释。四、格式代码排版上下有间隙代码 查看详情
架构整洁之道总结
...什么?上图中已经给出了答案,架构的行为价值就是编写代码实现需求,首先由产品经理把需求整理好,然后进行会议沟通,传达需求需要实现怎样的功能,然后就是编写代码实现需求;架构的目标就是用最小的人力成本来满足... 查看详情