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

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

测试

测试原则:

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. 只编写恰好能通过测试的功能代码

原文地址:https://www.cnblogs.com/suoni/p/11532763.html

时间: 2024-08-29 06:02:12

《clean code》讲述代码中的道,而不是术的相关文章

-----------------Clean Code《代码整洁之道》--------------------

-----------------------Chapter1:整洁代码---------------------- 1.<C++>程序设计语言作者——C++之父Bjarne Stroustrup 对于整洁代码的定义: 我喜欢优雅和高效的代码.代码逻辑应当直截了当,叫缺陷难以隐藏:经量减少依赖关系,使之便于维护:移居某种分层战略完善错误处理代码:性能调至最优,省的引诱别人做没规矩的优化,搞出一堆混乱来.整洁的代码只做好一件事. 2.Grady Booch,Object Oriented Ana

代码风格.Python-整体风格.0001.Python Clean Code简洁代码的9原则?

简单介绍: 说明: 很难创造一个对简洁代码的精准定义,也许它的定义和程序员的数量一样多.然而,有些原则是可以应用到简洁代码的基础层面.我收集了9个最相关的原则,并将在下面简短地介绍他们. 九大原则: 1. 差的代码会做太多的事情,简洁代码则非常专一 说明: 每个类,方法或是其它实体应该保持(SRP)单一职责原则,也就是说在一个给定的抽象层,一个功能单元仅仅应当为单方面系统需求(一个可以独立于其它方面而改变的需求的一个特性)负责. 2. 你代码的语言应当看起来像是为问题而设计 说明: 不应该使用会

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

This lesson will guide you through using the static SecuritySystem class to check whether or not a user has particular permission. The SetTask Action will be accessible to users who have permission to modify DemoTask objects. 本课将指导您使用静态安全系统类检查用户是否具有特

读《Clean Code 代码整洁之道》之感悟

盲目自信,自认为已经敲了几年代码,还看什么整洁之道啊.我那可爱的书架读懂了我的心思,很明事理的保护起来这本小可爱,未曾让它与我牵手 最近项目中的 bug 有点多,改动代码十分吃力,每看一行代码都带一句"这是什么XX代码啊,真XX难改",这样持续了好几天,有天晚上坐在书房回想这几天发生的一切,仰头定睛思考,我终于和它重新确认了眼神 股票见涨你知道买了, 汽车撞墙知道拐了, 孩子死了你来奶了, 大鼻涕到嘴你知道甩了, bug难改知道愤慨了 马上翻开书,前言章节,映入眼帘的就是下面这一张图

2015年第11本:代码整洁之道Clean Code

前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁之道>,5月14日完成第一遍的阅读(略掉了并发编程的章节以及两大章重要的JAVA改进的示例),本书中包含大量的有关简洁代码的实用性建议,强烈推荐程序员们(想成为更好的程序员们)必读此书.书中有许多具体的例子,虽然大多是JAVA代码,但对.NET等编程语言同样适用.看完此书后,马上开始对自己手头的代码进行

android textview在code(代码)中设置图片 和XML设置图片

给大家提供一些方法,大家可以直接拿去使用,textview在code{代码}中设置上下左右设置图片.有几种方法,这个给大家列举一些. 下面方法建议放在util工具类中,其中的好处就不用我多讲了. ,//资源ID public static void setTextDrawable(Context context, int drawableRes,//资源ID   TextView tvName) {  Drawable drawableTop = context.getResources().g

Writing Clean Code 读后感

最近花了一些时间看了这本书,书名是 <Writing Clean Code ── Microsoft Techniques for Developing Bug-free C Programs> 这里主要总结了一些里面的编程思想. 为空语句加上NULL 当需要使用空语句的时候,最好写上NULL, 比如: if (music_on()) NULL; else turn_it_on(); 参数类型相同的问题 如果函数中两个参数的类型相同,如果用户调用这个函数时错误替换了参数的顺序,就会出现问题.

《代码整洁之道》读后感

众所周知,软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发派还是传统开发派,都不得不承认.<代码整洁之道>提出一种观念:代码质量与其整洁度成正比.干净的代码,既在质量上较为可靠,也为后期维护.升级奠定了良好的基础.作为编程领域的佼佼者,这些实践在<代码整洁之道>中体现为一条条规则(或称“启示”),并辅以来自现实项目的正.反两面的范例.只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量.以上便是<代码整洁之道>这本书的内容简介,

《Clean Code》一书回顾

<Clean Code>一书从翻开至今,已经差不多两个月的时间了,尽管刨去其中的假期,算下来实在是读得有点慢.阅读期间,断断续续的做了不少笔记.之前,每每在读完了一本技术书籍之后,其中的诸多细节会很快的淡忘,最终留下的往往是在阅读时候与自己之前的印象产生极大共鸣的部分,或者在之后实践当中碰巧运用到的一些知识点.所以,根据已往的经验来说,对于一本技术书籍的学习,个人更愿意依照如下两个基本原则来学习: 撷取个人当前认同最深的少数几个知识点,反复进行实践,并在理解之后再扩张到其他的知识点 择期再次阅