《clean code》讲述代码中的道,而不是术
Clean code
看《clean code》一书,学习高手写出的代码,简单高效的代
1.目标
Bjarne Stroustrup:优雅且高效;直截了当;减少依赖;只做好一件事
Grady booch:简单直接
Dave thomas:可读,可维护,单元测试
Ron Jeffries:不要重复、单一职责,表达力(Expressiveness)
代码的书写,一定程度上体现了编程的思想,编码者的功力,标识出红色的部分我觉得体现了函数式编程,面向对象的思想,需要细细体会
2 命名
2.1 前期统一规范,名副其实
开发之前约定好,严格遵守,不能再后期临时添加,或者迭代时候,随意命名,或者用注释来解释命名
2.2 避免产生歧义
不要挂羊头卖狗肉,功能与命名不统一,容易出现再后期维护,临时添加需求,迭代等情况
2.3 命名不宜过长,容易搜索易读
名字只是个代名词,能够让人易读,易搜,易讨论,表达出语义,看到这个单词直接思维映射,不能在讨论的时候,一个命名卡半天说不出来,或者太长想不全
3 注释
The proper use of comments is to compensate for our failure to express ourself in code.
事实就是:注释的适当作用在于弥补我们用代码表达意图时遇到的失败,注释只是二手信息。
The truth is in the code 有表现力的代码才是真正的代码
什么是好的注释:
基本信息 --- 便于代码维护,交接
对意图的注释,为什么要这么做 --- 功能实现的思路
警示 --- 容易产生错误,可能为了性能等因素,牺牲了可读性,是一种平衡
放大看似不合理之物的重要性 --- 专业知识,代码的专业性,比如在算法中
4 函数
回归本义,到底什么是函数
我的理解:它是一个代码工具,强调的是,只做一件事,只做一件事,要查询就是查询,要修改就是修改,有固定的输入参数,返回你想要的固定输出,没有多余的副作用,体现它的单一原则
函数里面嵌入多个层级的函数,这种方式见过好多
5 函数抽层应用
‘没有什么问题不是函数抽层解决不了的,如果不行,那就两层’
原则:一个函数,一个抽象层次,函数中的语句表现同一个抽象层级,尤其在面对大型项目复杂交互时,按照广度优先策略,先了解整体结构,抓住主干,然后再深入细节,比如把大象装进冰箱:
def pushElephantIntoRefrige():
openRefrige() 打开冰箱
pushElephant() 把大象放入冰箱
closeRefrige() 关上冰箱
他们属于一个层级,而如何放入冰箱这个细节需要再有一个新的层级

6 测试
测试原则:
You are not allowed to write any production code unless it is to make a failing unit test pass. 没有测试之前不要写任何功能代码
You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 只编写恰好能够体现一个失败情况的测试代码
You are not allowed to write any more production code than is sufficient to pass the one failing unit test. 只编写恰好能通过测试的功能代码
《clean code》讲述代码中的道,而不是术的更多相关文章
- 《Clean Code》 代码简洁之道
作者介绍 原文作者: Robert C. Martin, Object Mentor公司总裁,面向对象设计.模式.UML.敏捷方法学和极限编程领域的资深顾问,是<敏捷软件开发:原则.模式.与实践 ...
- Clean Code 《代码整洁之道》前四章读书笔记
第一章: 整洁的代码只做好一件事 减少重复代码 提高表达力 提早构建简单抽象 让营地比你来时更干净 第二章:有意义的命名 名副其实:如果名称需要注释来补充,就不算是名副其实. ...
- Implement Property Value Validation in Code 在代码中实现属性值验证(XPO)
This lesson explains how to set rules for business classes and their properties. These rules are val ...
- Access the Security System in Code 在代码中访问安全系统
This lesson will guide you through using the static SecuritySystem class to check whether or not a u ...
- 免费电子书:C#代码整洁之道
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:<Clean Code(代码整洁之道)>是一本经典的著作,那么对于编写整洁 ...
- 代码整洁之道Clean Code笔记
@ 目录 第 1 章 Clean Code 整洁代码(3星) ?为什么要整洁的代码 ?什么叫做整洁代码 第 2 章 Meaningful Names 有意义的命名(3星) 第 3 章 Function ...
- 【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等
什么是 PaaS?Platform as a Service 平台即服务 (PaaS) 是云中的完整开发和部署环境,你可以使用其中资源交付内容,从基于云的简单应用到启用云的复杂企业应用程序皆可.你以即 ...
- 《代码整洁之道》(Clean Code)- 读书笔记
一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...
- Clean Code 代码整洁之道
军规:让营地比你来时更干净. 整洁代码 Leblanc : Later equals never. (勒布朗法则:稍后等于永不) 对代码的每次修改都影响到其他两三处代码. 修改无小事. 如同医生不能遵 ...
随机推荐
- JavaWeb——Servlet开发1
Java Servlet是运行在服务器端上的程序,Servlet是Java Servlet包中的一个接口,能够直接处理和相应客户端的请求,也可以将工作委托给应用的其他类. public interfa ...
- html学习笔记整理
网页 1.网页的组成部分 网页是由文字,图片,视频,音频,输入框,按钮这些元素(也就是html标签)组成. 2.浏览网页常用的五大主流浏览器 谷歌,IE,火狐,欧朋,safari.浏览器的内核(渲染引 ...
- wordpress搬家 更换域名
结论:wordpress网站文件夹是和域名相关联的 wordpress,备份了数据库 然后用另一个新域名新建站,直接从wordpress官网直接下载的网站压缩包,没有用之前的网站文件夹. 然后把原来的 ...
- RedHat 6.5换源
https://wenku.baidu.com/view/5b87fb42c77da26924c5b03b.html
- Hey Future!
我是蒟蒻QWQ 本人一大蒟蒻 弱的一批 希望大家见谅
- Java 从入门到进阶之路(三)
之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...
- 记录一则LOCAL_LISTENER的问题
有网友反映,他在一套Oracle的测试环境中配置有两个监听,分别监听不同端口. 目前想把环境上的一套数据库同时注册到这两个监听,他将数据库参数local_listener和tnsname.ora文件配 ...
- DES加解密工具类
这两天在跟友商对接接口,在对外暴露接口的时候,因为友商不需要登录即可访问对于系统来说存在安全隐患,所以需要友商在调用接口的时候需要将数据加密,系统解密验证后才执行业务.所有的加密方式并不是万能的,只是 ...
- 初尝RabbitMQ消息队列
RabbitMQ 是什么? 消息中间件 作用? 用于分布式项目中的模块解耦 用法? 创建队列 创建消息工厂并设置 (生产者额外步骤 : 创建消息) 创建连接,通道 声明队列 生产者 : 发送消 ...
- Delphi - cxGrid连接Oracle数据库
cxGrid连接Oracle数据库 WinFrm窗体中需要添加OraSession .OraQuery和 OraDataSource控件. OraSession中配置数据库连接参数: OraQuery ...