软件质量,不仅仅依赖于项目架构和项目管理,同样重要的是代码质量!!!

神在细节之中,其实干什么事都一样,从小到大,一直明白一个道理:细节决定成败!

软件架构在开发中占据重要地位。其次,宏达建筑的最细小的部分,比如关不紧的门、有点没铺平的地板,甚至是凌乱的桌面,都会将整个大局毁灭殆尽。这就是代码整洁之所道。

全员生产维护(TMP),TMP的主要支柱之一就是5S原则体系,5S哲学包括以下概念:

  • 整理:搞清楚事物之所在——通过恰当的命名——至关重要
  • 整顿:每段代码都该在你希望它所在的地方
  • 清楚:对于那种四处遗弃的带注释的代码,反映过往或期望的无注释的代码,除之而后快
  • 清洁:标准化,组内共识,使用一贯的代码风格
  • 身美:自律,贯彻规程,乐于改进

我喜欢此书中的这句话:对于代码应无情的重构,写出可读的代码,重要程度不亚于写出可执行的代码。我特喜欢无情两个字,因为我总看不惯之前他人写的乱七八糟的代码,想把事情做的尽善尽美。但其实实际情况是很糟糕的,在大部分并不懂技术的老板眼里,你能力的高低,就是看你是否能写出可执行的代码,或者更精确的说是看你能否更快的写出可执行的代码,老板只注重结果,要能看到实实在在的东西,他并不会关心你是怎么实现的,也不关心这些代码是否好维护。直到某天,代码乱成一锅粥,想要改个东西,加个需求,已经举步维艰的时候,我想已经晚了吧。哈哈哈。。。我认为真正牛逼的人,是以最快的速度写出最高质量的可执行的代码!!!

在我眼里,架构就好比建一个小区,架构师就是开发商,架构决定此小区是什么档次的小区,整个小区是什么样的格局,多大的楼距,绿化是否不错,停车场是否够大,大楼是否坚固,是否抗震,供暖,水电是否很好的接通。架构从根本上决定了整个项目。那么项目管理呢,就好比是物业,管理的好,整个小区井井有序,那么真正的程序开发人员,就是去每家每户装修设计的设计师,刷墙,装玻璃,铺地板,设计房间,只有你出手的东西美观,整洁,那么这一户才能做到尽善尽美。所以说,一个项目,软件架构,项目管理,高质量的代码,我们去映射到一个小区,开发商,物业,装潢,我觉得再好不过了。如果这三项都无比优秀,那么何愁这个项目不精致呢?其实无论如何,要记住两个字:“细节”。

说来说去,最后谨记一点,无论架构还是代码都不强求完美,只求竭诚尽力而已。

书中的一句话,我们坦诚代码状态,因为它永不完美。我们日渐成为完整的人,配得起神的眷顾,也越来越接近细节中的伟大之处。

前言

前言说的这几段我真的很喜欢,因为无论做什么事都是这样:

习艺之要有二:知和行。你应当习得有关原则、模式和实践的知识,穷尽应尽之事,并且要对其了如指掌,通过刻苦实践掌握它。

我可以教你骑自行车的物理学原理。重力,摩擦力,角动量,质心等,用一页写满方程式的纸就能说明白,有了这些方程式,我可以为你证明出骑车完全可行,而且还告诉你骑车所需的全部知识。即便如此,你在初次骑车时还是会跌倒在地。我再说的严重一点,让你研究一年如何骑车,各种理论知识技巧,一年之后你第一次骑车还是会跌倒在地!!!

我们可以写下整洁代码的所有“感觉良好的原则”,放手让你去干。那样的话我们算是哪门子的老师?而你又会成为怎样的学生呢?你必须自行实践,且体验自己的失败。你必须观察他人的实践与失败。你须看看别人是怎样蹒跚学步,再转头研究他们的路数。你须看看别人是如何绞尽脑汁做出决策,又是如何为错误决策付出代价。

一定要认真阅读第2部分!!!

我对此书充满期待,开始阅读的旅程吧!

第一章 整洁代码

1.1 要有代码

有人说代码会自动生产出来,不需要人工编写,程序员没用了,这完全就是扯淡!

代码确然使我们最终用来表达需求的那种语言。我们永远无法抛弃必要的精确性——所以代码永存

1.2 糟糕的代码

其实随着时间的推移,尤其赶着要推出产品,代码写得乱七八糟,最后再也没法管理这些代码了。最终导致的结果就是软件越用越卡,崩溃几率越来越大,再那之后不久,该公司就关门大吉了。

为什么要写糟糕的代码?

就拿我们现实生活来说,大部分时候是为了赶时间,如果你做的慢老板肯定会大发雷霆,或许我们想赶紧弄完手头的事情,好接着做下一件工作。

我们都说过有朝一日再回头清理我们写过的烂代码,但是,再那些日子里,我们没听过勒布朗法则:稍后等于永不。

1.3 混乱的代价

我经常会做重构他人代码的事情,有很多的代码写的简直混乱不堪,甚至匪夷所思,重构完的那一刻感觉是非常爽的,但是那个过程真是非常艰辛的!!!

随着混乱的增加,团队生产力也持续下滑,趋向于零。

1.3.1 华丽新设计

有一天,再也无法在这种令人生厌的代码上进行开发了,无奈组建新军重新开发一套新系统。

很重要的一句话:花时间保持代码整洁不但有关效率,还有关生存。

1.3.2 态度

这种糟糕的情况经常存在:

  • 要花好几个星期来做本来几小时就能完成的事情
  • 只需做一行修改,结果却涉及上百个模块

一句经典话:程序员遵从不了解混乱风险的经历的意愿,是不专业的做法。

1.3.3 谜题

赶上期限的唯一方法——做得快的唯一方法——就是始终尽可能保持代码整洁。

1.3.4 整洁代码的艺术

写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的“整洁感”。这种代码感就是关键所在。

编写整洁代码的程序员就像是艺术家,他能用一系列变换把一块白板变作优雅代码构成的系统。

1.3.5 什么是整洁代码

  • 优雅,代码逻辑直截了当
  • 从不隐藏设计者的意图
  • 便于他人阅读和加以增补
  • 看起来像是某位特别在意它的人写的,几乎没有改进的余地,代码作者什么都想到了
  • 没有重复代码,包括尽量少的实体,比如类,方法,函数等
  • 让编程语言像是专为解决那个问题而存在

1.4 思想流派

书中很多建议都存在争议,但是都是作者们长久苦思、从数十年的从业经验和无数尝试与错误中得来。好好学吧!

1.5 我们是作者

Javadoc中的@author字段告诉我们自己是什么人。我们是作者。作者都有读者,我们一定要负责任!!!

读与写花费时间的比例为10:1,在写新代码时,我们一直在读旧代码。

所以,努力让代码变的易读吧!

1.6 童子军军规

让营地比你来时更干净

1.7 前传与原则

在本书中,你会发现对不同设计原则的引用

1.8 小结

没啥说得了,迫不及待了,开始旅程

1.9 文献

总结

其实第一章是一个类似讲故事的章节,根本没必要读这么细,还一小节一小节的都做记录,但是我觉得作者的很多话说的很有深意,我喜欢,把他们记录下来。希望日后翻过来看,我会感觉到很有趣!

代码整洁之道读书笔记——第一章:整洁代码相关推荐

  1. 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源

    <MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...

  2. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...

  3. 代码整洁之道-读书笔记1

    第一章 整洁代码 1.2糟糕的代码 糟糕的代码会毁掉一个公司,但是为什么会出现糟糕的代码? 可能是因为赶时间,如果花时间重构或者清理以前的代码,老板就会大发雷霆. 勒布朗法则:稍后等于用不. 1.3混 ...

  4. 代码整洁之道-读书笔记之整洁的代码

    1.整洁代码 阅读本书有两个原因,第一,你是个程序员,第二,你想成为更好的程序员 1.1 要有代码 有人认为随着时代的发展,写代码不再是问题,我们更应该关注建模和需求 这句话后半句没有问题,因为语言在 ...

  5. 代码整洁之道 读书笔记

    第1章 整洁代码 1.1 要有代码 1.2 糟糕的代码      稍后等于永不 1.3 混乱的代价 假设前期不注意.后期的加入代码.改动效率都很低 1.3.1 华丽新设计 1.3.2 态度 1.3.3 ...

  6. 软件架构整洁之道-读书笔记(3)

    第五部分:软件架构 第十五章:什么是软件架构 1.架构师是什么样的人? 首先软件架构师必须是能力最强的一群程序员,他们的代码产量可能不是最多的,但是他们必须不停的承接编程任务.如果不亲自承受因系统设计 ...

  7. 深入理解计算机系统第四版_《深入理解计算机系统》读书笔记 —— 第一章 计算机系统漫游...

    本书第一章沿着一个程序的生命周期,简要地介绍一些逐步出现的关键概念.专业术语和组成部分. 一.信息就是位+上下文 在计算机系统中所有的信息都由一串比特来表示. 一串相同的比特(或者几个相同的字节)可以 ...

  8. 用Python进行自然语言处理 读书笔记 第一章

    用Python进行自然语言处理(第一章) 搜索文本 text1.concordance("monstrous")#搜索文章中的词语text3.concordance("l ...

  9. mybatis从入门到精通(刘增辉著)-读书笔记第一章

    前言: 本读书笔记共11章节 本版本采用idea编写,不采用作者书中所说的eclipse jdk8 maven3.6.1 mysql5.7 1.idea新建maven项目,配置pom.xml < ...

最新文章

  1. 3331付款方式怎么写_拼多多怎么刷单 为什么要刷单
  2. mysql 数据结构设计_MYSQL 设计数据结构需注意问题
  3. 1899-11-30 php mysql_PHP学习十一--PHP操作MYSQL数据库
  4. (五十六)iOS多线程之NSOperation
  5. 【Python学习】 - sklearn - 用于生成数据的make_blobs模块
  6. 组装r730服务器,戴尔poweredge r730服务器配置及系统安装详解教程
  7. python判断最小公倍数
  8. 简单几何(圆与多边形公共面积) UVALive 7072 Signal Interference (14广州D)
  9. 求解偏微分方程开源有限元软件deal.II学习--Step 48
  10. C语言实现俄罗斯方块
  11. wsl使用ssh连接
  12. 电脑pin码忘了登录不进系统_忘记计算机 PIN 码怎么办?
  13. 成功将qt程序移植到arm板上
  14. 浅析计算机用户身份识别技术,(浅析身份认证技术.doc
  15. 线性代数学习笔记——第十九讲——克拉默法则
  16. ads1256 + STM32 + CubeMX 软件开发备忘
  17. 罗技产品序列号追溯条码扫描系统
  18. 米聊之死 雷军的“猪”折了腿?
  19. Mars3D开发基础学习:场景特效
  20. PlaySound函数以及sndPlaySound函数用法总结

热门文章

  1. 大厨小鲜——基于Netty自己动手编写RPC框架
  2. CorelDRAW如何将文档发布为PDF格式
  3. 左手坐标系与右手坐标系(转)
  4. Android 适配指南
  5. 国际象棋跳马程序(自编码研究)
  6. npm 安装 jQuery
  7. 视频制作——由图片到视频
  8. 【前端提效】-- VsCode 实用插件推荐
  9. Springboot毕设项目乐器培训管理系统172z1java+VUE+Mybatis+Maven+Mysql+sprnig)
  10. 晚节不保?长期跟员工搞地下情!被要求退出微软董事会!