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. 算法与数据结构基础 - 二叉查找树(Binary Search Tree)

    二叉查找树基础 二叉查找树(BST)满足这样的性质,或是一颗空树:或左子树节点值小于根节点值.右子树节点值大于根节点值,左右子树也分别满足这个性质. 利用这个性质,可以迭代(iterative)或递归 ...

  2. pythonday01计算机初步认识

    1.计算机的初步认识 常见的操作系统: win:xp,win7,win8,win10,windows server linux:centos图形化界面差,ubuntu个人开发,图形界面好,redhat ...

  3. 压力测试-jmeter

    1. 场景描述 新申请的服务器,要压测下python算法程序最多能执行多少条数据,有几年没用压力测试工具-jmeter了,重新下载了最新版本,记录下,也希望能帮到准备使用jmeter做压测的朋友. 2 ...

  4. MTFlexbox自动化埋点探索

    1. 背景 跨平台动态化技术是目前移动互联网领域的重点关注方向,它既能节约人力,又能实现业务快速上线的需求.经过十年的发展,美团App已经变成了一个承载众多业务的超级平台,众多的业务方对业务形态的快速 ...

  5. 吉特日化MES-生产制造的几种形态

    1. 订货型和备货型 工厂的生产形态是以接受订单时间和开始生产时间来划分的,因为生产要么得到销售指令要么得到备货指令不能无缘无故的生产.销售指令驱动生产直接受市场销售影响,而备货型可能是对市场的一种预 ...

  6. 纯数据结构Java实现(5/11)(Set&Map)

    纯数据结构Java实现(5/11)(Set&Map) Set 和 Map 都是抽象或者高级数据结构,至于底层是采用树还是散列则根据需要而定. 可以细想一下 TreeMap/HashMap, T ...

  7. 台式机主机u盘安装centos7报错及注意事项

    利用UltraISO制作U盘启动安装台式机CentOS7系统:流程及报错解决 一.制作U盘 1.首先打开UltraISO软件,尽量下载最新版的 2.点击工具栏中的第二个打开镜像文件工具,如图红色方框标 ...

  8. webservice接口和http接口(API接口)的区别

     web service(SOAP)与HTTP接口的区别: 什么是web service?       答:soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content- ...

  9. CAP 2.6 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 2.6 版本正式版.同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了3000 Star. 自从上次 CAP 2.5 版本发布 以来,已经过去了几 ...

  10. C#数据结构_查找

    查找:静态查找和动态查找. 衡量查找算法的最主要的标准是平均查找长度(Average Search Length,简 称 ASL).平均查找长度是指在查找过程中进行的关键码比较次数的平均值. 顺序查找 ...