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() 关上冰箱

他们属于一个层级,而如何放入冰箱这个细节需要再有一个新的层级

测试

测试原则:

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》讲述代码中的道,而不是术的更多相关文章

  1. 《Clean Code》 代码简洁之道

    作者介绍 原文作者: Robert C. Martin, Object Mentor公司总裁,面向对象设计.模式.UML.敏捷方法学和极限编程领域的资深顾问,是<敏捷软件开发:原则.模式.与实践 ...

  2. Clean Code 《代码整洁之道》前四章读书笔记

    第一章: 整洁的代码只做好一件事   减少重复代码   提高表达力   提早构建简单抽象   让营地比你来时更干净   第二章:有意义的命名 名副其实:如果名称需要注释来补充,就不算是名副其实.   ...

  3. Implement Property Value Validation in Code 在代码中实现属性值验证(XPO)

    This lesson explains how to set rules for business classes and their properties. These rules are val ...

  4. Access the Security System in Code 在代码中访问安全系统

    This lesson will guide you through using the static SecuritySystem class to check whether or not a u ...

  5. 免费电子书:C#代码整洁之道

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:<Clean Code(代码整洁之道)>是一本经典的著作,那么对于编写整洁 ...

  6. 代码整洁之道Clean Code笔记

    @ 目录 第 1 章 Clean Code 整洁代码(3星) ?为什么要整洁的代码 ?什么叫做整洁代码 第 2 章 Meaningful Names 有意义的命名(3星) 第 3 章 Function ...

  7. 【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等

    什么是 PaaS?Platform as a Service 平台即服务 (PaaS) 是云中的完整开发和部署环境,你可以使用其中资源交付内容,从基于云的简单应用到启用云的复杂企业应用程序皆可.你以即 ...

  8. 《代码整洁之道》(Clean Code)- 读书笔记

    一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...

  9. Clean Code 代码整洁之道

    军规:让营地比你来时更干净. 整洁代码 Leblanc : Later equals never. (勒布朗法则:稍后等于永不) 对代码的每次修改都影响到其他两三处代码. 修改无小事. 如同医生不能遵 ...

随机推荐

  1. vue中的虚拟DOM树

    什么是虚拟DOM树?(Virtual DOM)   虚拟DOM树其实就是一个普通的js对象,它是用来描述一段HTML片段的    01    当页面渲染的时候Vue会创建一颗虚拟DOM树 02    ...

  2. mysql row size上限

    mysql innodb 的 row size上限 背景 在项目使用中,出现了以下报错: Error Code: 1118 - Row size too large (> 8126). Chan ...

  3. 100天搞定机器学习|Day35 深度学习之神经网络的结构

    100天搞定机器学习|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习 ...

  4. 7.15 迭代器 for循环的本质 生成器

    迭代器 迭代:更新换代的过程,每次的迭代都必须基于上一次的结果 迭代器:迭代取值的工具 作用 迭代器提供了一种不依赖于索引取值的方式 根据以上对于迭代的描述,如果只是简单的重复,不算迭代,如下: n ...

  5. 性能测试学习第一天-----概念、环境、LR录制&参数化

    1.性能测试的概念: 通过一定的手段,在多并发情况下,获取被测系统的各项性能指标, 验证被测系统在高并发下的处理能力.响应能力.稳定性等,能否满足预期.定位性能瓶颈,排查性能隐患,保障系统的质量,提升 ...

  6. CSS3的滤镜filter属性

    css3的滤镜filter属性,可以对网页中的图片进行类似Photoshop图片处理的效果,例如背景的毛玻璃效果.老照片(黑白照片).火焰效果等. 一.blur(px)高斯模糊 二.brightnes ...

  7. React 现代化测试

    测试的动机 测试用例的书写是一个风险驱动的行为, 每当收到 Bug 报告时, 先写一个单元测试来暴露这个 Bug, 在日后的代码提交中, 若该测试用例是通过的, 开发者就能更为自信地确保程序不会再次出 ...

  8. netty源码解解析(4.0)-19 ChannelHandler: codec--常用编解码实现

    数据包编解码过程中主要的工作就是:在编码过程中进行序列化,在解码过程中从Byte流中分离出数据包然后反序列化.在MessageToByteEncoder中,已经解决了序列化之后的问题,ByteToMe ...

  9. 使用coding和hexo快速搭建博客

    欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz 今天教大家怎么用hexo快速搭建自己的博客.我不是专业人士,不懂前端知识,所以我十分讨厌那些专业术语,讲了一大堆,对于技术小白 ...

  10. HDU 6040

    题意略. 思路:题目就是在询问你m次,第k小是哪个数.首先我们可以想到直接排序后,即可O(1)来查找询问.但是题目中n的范围给的是1e7, 无法承受nlogn的复杂度.从而想到另外一种求静态第k小的方 ...