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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Spread Privacy
Spread Privacy
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
Webroot Blog
Webroot Blog
罗磊的独立博客
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
美团技术团队
Help Net Security
Help Net Security
The Hacker News
The Hacker News
C
Cisco Blogs
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
The Register - Security
The Register - Security
IT之家
IT之家
WordPress大学
WordPress大学
Jina AI
Jina AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Help Net Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
NISL@THU
NISL@THU
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
B
Blog
T
Tenable Blog
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
S
Security Affairs
小众软件
小众软件
Hacker News: Ask HN
Hacker News: Ask HN
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
A
Arctic Wolf
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence

PixelNest

会议是效率的杀手 国庆出游记录 对居家办公的一些想法 2022 春节 《搏击俱乐部》的结局 纪念 PAI 头一回达到 100 卡片笔记法 《刑法学讲义》的部分摘录 迁移博客 《UNIX 传奇》摘录 就地过年 一点记录:docker-compose 编排不同项目间的网络 近期读的几本书 办新身份证 git 获取其他分支的单个文件或目录 我的高考成绩 推荐 2020 年上半年的 8 部影视作品 ChromeOS 开发者模式 终于下单了《守望者》 联通来电管家服务 一些实用的 bash 代码片段 关于 鸟枪换炮 《架构整洁之道》摘录 惨淡的星球大战 旧笔记本电脑 if...then... 命令行检测 SSL 证书过期时间 《程序员的职业素养》读书笔记 2019 国庆假期 在 Ubuntu 里按空格键预览 《基本穿搭》笔记 我在 Ubuntu 里安装的一些软件 让人郁闷的英语学习过程 色彩理论基础 向百度主动推送网站链接 两部电视剧 《历史的教训》摘录 新工具 Koa 获取客户端 IP 备案了 apiDoc 基础语法 BBC 纪录片 《逻辑的乐趣》 读不下去的《原则》 蓝牙鼠标唤醒休眠的 Ubuntu Google 发布会 2018 国庆假期 开发者的时间追踪和统计 使用 curl 发送 POST 请求的几种方式 《重来 2》读书笔记 Linux 和 MacOS 命令行转换图片用法整理 《Go 语言实战》笔记 Win10 微软拼音添加小鹤双拼以及其他配置 针对不同场景临时禁用 eslint 规则的方法 《好妈妈胜过好老师》读书笔记 配置 Win10 Linux 子系统作为开发环境 又读完一本尤·奈斯博的小说 近期写 Go 的一点语法碎片整理 ffmpeg 合并 MP4 M4A 文件 睡前看手机的大问题 《局外人》读书笔记 菊次郎与佐纪 读书笔记 3 菊次郎与佐纪 读书笔记 2 菊次郎与佐纪 读书笔记 1 豆瓣图片服务器防盗链 《如何有效阅读一本书》读书笔记 - 3 《如何有效阅读一本书》读书笔记 - 2 《如何有效阅读一本书》读书笔记 - 1 Vim iskeyword 济南 图个乐 开始看不懂《西部世界》了 剧透 听到几个好故事 过周末 相亲 让人失望的 Apple 悬疑故事 AI 记忆 世纪三部曲 上帝的梦
《代码整洁之道》摘录
2019-02-13 · via PixelNest

摘录了一些内容,跟这些内容在书中出现的顺序不同,打散又整理了一下。除了斜体字部分,都是对原书的引用。

应该有的态度

  • 程序员遵从不了解混乱风险的经理的意愿,也是不专业的做法。 做好自己的事,尊重自己的手艺,写干净的代码。
  • 糟糕的代码引发混乱!别人修改糟糕代码时,往往会越改越烂。 碰到过“从跟上就烂”的项目代码,对这种项目的改造往往较为困难,成本很高,甚至不如推到重来。
  • 签入的代码,要比签出时整洁一点。
  • 代码应当讲述事实,不引人猜测。
  • 整洁的代码总是看起来像是某位特别在意它的人写的。
  • 聪明程序员和专业程序员之间的区别在于,专业程序员了解:明确是王道。
  • 言到意到。意到言到。
  • 如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。

一些细节做法

  • (变量名的)名称长短与其作用域大小相对应。
  • 变量声明应尽可能靠近其使用位置。
  • 调用者应该尽可能放在被调用者上面。
  • 应该避免我们的代码过多地了解第三方代码中的特定信息。依靠你能控制的东西,好过依赖你控制不了的东西,免得日后受它控制。 使用第三方库时,跟第三方库”划清界线“。一个可行的做法是把第三方库提供的接口再封装一层。业务代码只有自己的这层封装打交道,这样一来,如果要换用其他库,只改这个封装层,以此减少跟第三库的耦合以及依赖。
  • 看到注释掉的代码,就删掉它。
  • 否定式要比勘定式难明白一些。所以,尽可能将条件表示为肯定形式。

函数

  • 函数的第一规则是要短小。第二条规则是还要更短小。
  • 函数应该做一件事。做好这件事。只做这一件事。问题在于很难知道那件该做的事是什么。
  • 要确保函数只做一件事,函数中的语句都要在同一抽象层级上。
  • 在这个函数里做的事情,是同一个抽象层上的步骤,那么这个函数是只做了一件事。
  • 函数越短小、功能越集中,就越便于取个好名字。
  • 函数要么做什么事,要么回答什么事,但二者不可得兼。

错误处理

  • 最好把 trycatch 代码块的主体部分抽离出来,另外形成函数。
  • 函数应该只做一件事。错误处理就是一件事。因此,处理错误的函数不该做其他事。这意味着,如果关键字 try 在某个函数中存在,它就该是这个函数的第一个单词,而且在 catch/finally 代码块后面也不该有其他内容。
  • 错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。

测试

  • 没有测试的代码不干净。
  • 不可测试的系统不可验证。不可验证的系统,绝不应部署。
  • 紧耦合的代码难以编写测试。
  • 编写测试引致更好的设计。 写测试能够反过来逼着人写出更好的代码。
  • 测试消除了对清理代码就会破坏代码的恐惧。
  • 整洁的测试有什么要素?有三个要素:可读性,可读性和可读性。在单元测试中,可读性甚至比在生成代码中还重要。
  • 独立测试应该相互独立。某个测试不应为下一个测试设定条件。
  • 让测试具有表达力并短小精悍。