惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
Forbes - Security
Forbes - Security
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
TaoSecurity Blog
TaoSecurity Blog
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
B
Blog
阮一峰的网络日志
阮一峰的网络日志
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
The Register - Security
The Register - Security
美团技术团队
C
CERT Recently Published Vulnerability Notes
I
Intezer
C
Cybersecurity and Infrastructure Security Agency CISA
Google Online Security Blog
Google Online Security Blog
B
Blog RSS Feed
PCI Perspectives
PCI Perspectives
C
Cyber Attacks, Cyber Crime and Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MyScale Blog
MyScale Blog
S
Securelist
Recorded Future
Recorded Future
Know Your Adversary
Know Your Adversary
Security Archives - TechRepublic
Security Archives - TechRepublic
M
MIT News - Artificial intelligence
C
Check Point Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
U
Unit 42
F
Fortinet All Blogs
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
MongoDB | Blog
MongoDB | Blog
The Hacker News
The Hacker News
酷 壳 – CoolShell
酷 壳 – CoolShell
F
Full Disclosure
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LINUX DO - 热门话题

AirCloud 日常

快速生成 AI 应用的框架对比:Gradio、Streamlit 和 Dash Node.js 二进制打包:pkg 原理解析 - AirCloud 日常 基于 K8s 容器化运行 web 端对端测试 关于 JupyterLab cell 输出保持问题的设计方案 - AirCloud 日常 读完 type-challenges,我总结了如下常用的内容 - AirCloud 日常 使用 Rust 开发 python 模块 基于 Container 架构的多框架前端应用 - AirCloud 日常 我们应该如何进行 Code Review ? - AirCloud 日常 使用 fst-json 自动生成更快的 json 序列化方法 《代码精进之路》与《代码整洁之道》-读书笔记 - AirCloud 日常 《重构》-读书笔记 - AirCloud 日常 《架构整洁之道》-读书笔记 - AirCloud 日常 React Conf 2021 内容概要 - AirCloud 日常 PC 开发技术选型:Electron 不是银弹 - AirCloud 日常 web 页面内存分析与生产环境禁用 console - AirCloud 日常 通过优化合成层优化性能 - AirCloud 日常 了解 StackOverFlow 上面最受欢迎的语言 Rust - AirCloud 日常 一些性能相关的 JavaScript 代码编写建议规范 - AirCloud 日常 如何让你的精力更多的用于提高技术深度 - AirCloud 日常
Clean Code》读书笔记 - AirCloud 日常
2022-02-27 · via AirCloud 日常

整洁代码

《修改代码的艺术》一书作者对整洁代码的描述:我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的,整洁的代码总是看起来像某种特别在意他的人写的,几乎没有改进的余地,代码的作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给的代码——全心投入某人留给你的代码。

函数

这本书关于函数的介绍和其他架构书差不多,主要就是两个点:1. 短小,2. 抽象层次一致性。

注释

毫无疑问,注释是代码中的坏味道。

对于一部分注释,我们可以使用类似 4.4.8 这种变量的方式,通过新增两个变量,来解释我们的内容。
那种生成的注释和我们注释掉的代码,我的建议是:不要留。

格式

相关函数:按照本书的说明,若某个函数调用了另外一个,就应该把它们放到一起,而且调用者应该尽可能放在被调用者上面。我自己之前的习惯是调用者在被调用者的下面,目前又思考了一下,像作者这样组织,可能可读性反而更高。

因为这样设计可以像报纸一样,最重要的概念先出现,并且希望以包括最小的细节表述他们,期望底层的细节后出现。

错误处理

使用异常而非返回码: 在 《代码精进之路》的读书笔记中,也提及了类似的思路,这个书里面又提到了使用异常而非返回码这一点,并且给出了一个新的理由,返回码意味着我们需要立即处理,这个步骤可能很容易被遗忘,而且会让我们的代码变得比较乱。

关于返回 null 值:有的时候,我们在数据处理中出现问题,可能会返回一个 null 或者 undefined。但是我建议相对于此,我们更应该直接抛出异常,返回 null 值意味着依赖调用者来做空检查,而且你不知道这个 null 究竟什么时候才会引发错误,这样会有较高的不稳定性。

类的组织

对于类的组织中,属性顺序的一个建议:依次是公共静态常量、私有静态变量、公共函数、私有函数。

类的权责:对于一个类来说,我们不希望它被定义的太长,当然这个不能单纯地使用代码行数来判断,我们应该使用类的权责来判断,当一个类的名称越含糊,该类越有可能拥有更多权责,比如它的名称包含了诸如 Processor、Manager 或 Super,那么这种现象往往说明有不恰当的权责聚集的情况出现。

如何把类拆的短小:我给出一个切实可行的办法,可以先从类的复杂函数入手,我们在把函数拆分的过程中,发现某些部分拆分成函数之后会传递大量的参数给它,否则很难拆分,那么传递给它这个函数的参数就可以被整合进新的小类的实体变量,这样我们就无需传递参数,同时也完成了拆分。