`
janeky
  • 浏览: 366677 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

《Clean Code》读后感

阅读更多

代码维护一直是软件开发中比较重要的一块内容。尤其是需要多次开发,更新频繁的项目。如何保证项目团队保证高

 

效的生产力?保持代码Clean是一个有效的途径。看了Bob大叔的《Clean Code》,受益匪浅。里面详细地描述了Clean

 

Code的特征,从命名,到函数,到类,到系统。既抓出了一些常见的问题,也提供的很多解决方案。保持Code Clean,

 

并在团队中实施,是每个团队管理人员的责任。

 

我在这里就不多介绍了,只是摘录了一些片段,希望大家看后,能够去读读这本书。也欢迎一起谈论Clean Code

 

 

 

5S标准

Sort 分类排序,搞清楚事物之所在,通过恰当的命名

Systematize 系统化,每段代码都该在你希望的地方,否则,就该重构了

Shine 清理一些已经腐烂的代码,除之而后快

Standardization 标准化,一个team应该有一个代码标识,每个成员应该遵循

Self-discipline 自律 在实践中贯彻标准,并时时体现在个人工作上,要乐于改进

 

学写整洁代码很难。看完书只能是“感觉不错”。关键是形成一种意识,在日常工作中贯彻,每个类的命名,函数的定义,每个层次的抽象过程。

 

Later equals never。稍后等于永不。我们都曾经瞟一眼自己亲手造成的混乱,断言能运行的烂程序总比什么都没有强,我们都曾经说过有朝一日回头再清理

 

随着混乱的增加,团队的生产力也持续下降,趋向于0。生产力下降时,管理层就只有一件事可以做了,增加人手。《人月神话》中有详细描述这个项目管理的过程。新人不熟悉系统设计,通常会制造更多的混乱

 

推到重新设计

 

态度。一处小修改,却涉及到上百个模块。理由:产品需求违背了最初的设计,进度紧张,心情

 

混乱只会拖慢期限。赶上期限的唯一方法-始终保持代码的整洁

 

代码逻辑直截了当,缺陷无法隐藏,尽量减少依赖关系,使之便于维护,整洁的代码只做好一件事

 

整洁的代码从不隐藏设计者的意图

 

代码应该通过其字面表达含义

 

能够通过所有的测试,没有重复代码,体现系统中的全部设计理念,尽量少的实体(类、方法,函数)

 

童子军军规:让营地比你来时跟干净。每次签入,代码都比签出时干净。都是一些很微小的东西,改好一个变量名,拆分一个有点长的函数,消除一点点重复代码,清理一个嵌套的if语句

 

体现本意的名称 int d

 

避免误导 accountList 除非真的是List  l 1 0 O

 

做有意义的区分 x1x2

Product ProductInfo ProductData

getActiveAccount() getActiveAccountInfo()

 

使用读得出的名称,方便交流

 

使用可以搜索的名称 单字母和数字常量

 

成员前缀

 

避免思维映射

不应该让读者在脑中把你的名称翻译成他们熟知的名称。

 

类名 名词或者名词短语,避免使用Manager Processor Data Info等类名

 

方法名 动词或者动词短语

 

不要装清纯扮可爱,别人不一定有你的幽默和喜感,可能会误会你的意图

 

每个概念对应一个词,团队中最后有一个规范命名

 

别用双关语,add append

 

让人一目了然,让人觉得就应该是那样写

 

使用解决方案领域名称

 

问题域名称

 

添加有意义的语境,不要添加无意义的语境

 

短小

 

只做一件事

 

每个函数一个抽象层级

 

自顶向下写代码:向下规则

 

Switch 用多态代替

 

使用描述性的名称

别害怕长名字,别害怕花时间取名字

 

函数参数尽量少

 

标识参数是恶劣的

 

无副作用

 

输出参数

 

查询 操作 分离

 

使用异常代替返回错误

 

别重复自己 重复时软件中一切邪恶的根源

 

结构化编程 一个入口一个出口,只要保持短小,偶尔出现的return breakcontinue都没有坏处,goto就不要用了

 

如何写出clean 函数

一开始都是冗长而复杂的,有太多的缩进嵌套,有过长的参数列表,名称是随意取的,也会有重复代码

 

注释不能美化糟糕的代码

 

用代码来阐述

 

注释说明的是为什么这么做。做什么应该在代码中体现

 

多余的注释,误导性的注释,过时的注释,循规式,日志,废话,位置标识,括号后面的注释

注释掉的代码 html注释 信息过多 不明显的联系

 

Demeter 模块不应了解它所操作对象的内部情形。

C的方法f只应该调用以下对象的方法

C,由f创建的对象,参数 c持有的对象

 

别传递null,别返回null

 

类应该尽量小,计算 权责

 

单一权责-只有一条修改的理由

 

内聚

 

保持内聚性会得到很多短小的类

 

为了修改而组织

运行所有的测试

不可重复

表达程序员的意图

尽可能减少类和方法的数量

 

If()优于if(!)

多条件的,要放在一个函数里面说明

 

死函数,永远不被调用

 

基类依赖于派生类

 

--附件是我在团队中分享时用到的部分ppt

1
0
分享到:
评论

相关推荐

    如何在Linux上写C程序

    在Linux系统上编写C程序是一项基础且重要的技能,尤其对于那些热衷于系统级编程或者对开源技术感兴趣的开发者来说。本篇文章将深入探讨在Linux环境下编写、编译、运行C程序的全过程,以及相关的工具和概念。 首先,...

    Tinyxml 源代码(VC6 & VS2005)

    有些地方可以让你得到提高,如果你对TinyXML的工作感兴趣的话可以上sourceforge查找一下。 相关项目 你也许会觉得TinyXML很有用!(简介由项目提供) TinyXPath (http://tinyxpath.sourceforge.net). TinyXPath...

    测试培训教材

    For example, you can run a system cleanup test that will restart the machine on which an automated test failed. Alternatively, you can create a system test to retrieve information about a machine's ...

    java计算器源码.zip

    java毕业设计源码,可供参考

    FRP Manager-V1.19.2

    Windows下的FRP图形化客户端,对应FRP版本0.61.1,需要64位操作系统

    基于优化EKF的PMSM无位置传感器矢量控制研究_崔鹏龙.pdf

    基于优化EKF的PMSM无位置传感器矢量控制研究_崔鹏龙.pdf

    旧物置换网站(基于springboot,mysql,java).zip

    旧物置换网站的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发 环境。该旧物置换网站包括管理员、用户、卖家。其主要功能包括管理员:首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等,卖家后台:首页、个人中心、旧物类型管理、旧物信息管理、置换交易管理。前台首页;首页、旧物信息、网站公告、个人中心、后台管理等,用户后台:首页、个人中心、旧物信息管理、置换交易管理、用户可根据关键字进行信息的查找自己心仪的信息等。 (1)用户功能需求 用户进入前台系统可以查看首页、旧物信息、网站公告、个人中心、后台管理等操作。前台首页用例如图3-1所示。 (2)管理员功能需求 管理员登陆后,主要功能模块包括首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等功能。 关键词:旧物置换网站,Mysql数据库,Java技术 springboot框架

    上位机开发,对桥梁、环境等传感器传输的数据进行采集并入库,以便用于系统平台对数据进行处理分析(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    质子号.zip

    航天模拟器文件、蓝图、代码

    两级式单相光伏并网仿真研究:MATLAB 2021a版本下的DC-DC变换与桥式逆变技术实现功率跟踪与并网效果优化,基于Matlab 2021a的两级式单相光伏并网仿真研究:实现最大功率跟踪与稳定的直

    两级式单相光伏并网仿真研究:MATLAB 2021a版本下的DC-DC变换与桥式逆变技术实现功率跟踪与并网效果优化,基于Matlab 2021a的两级式单相光伏并网仿真研究:实现最大功率跟踪与稳定的直流母线电压,两级式单相光伏并网仿真(注意版本matlab 2021a) 前级采用DC-DC变电路,通过MPPT控制DC-DC电路的pwm波来实现最大功率跟踪,mppt采用扰动观察法,后级采用桥式逆变,用spwm波调制。 采用双闭环控制,实现直流母线电压的稳定和单位功率因数。 并网效果良好,thd满足并网要求,附带仿真说明文件 ,两级式单相光伏并网仿真; MATLAB 2021a; DC-DC变换电路; MPPT控制; 扰动观察法; 桥式逆变; SPWM波调制; 双闭环控制; 直流母线电压稳定; 单位功率因数; 并网效果; THD。,MATLAB 2021a双闭环控制两级式单相光伏并网仿真研究

    光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略,助力光伏发电学习 ,光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略学习指南,光伏mppt仿真:通过调

    光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略,助力光伏发电学习。,光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略学习指南,光伏mppt仿真:通过调整太阳光照, 温度等因素 , 光照强度和温度对太阳能电池输出特性的影响。 可用于学习光伏发电 ,光伏MPPT仿真;太阳光照调整;温度影响;光照强度;太阳能电池输出特性。,光伏MPPT仿真:光照与温度对太阳能电池输出特性的影响研究

    java项目,毕业设计(包含源代码)-springboot学生综合成绩测评系统

    随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要互联网技术来方便人们的日常工作生活,实现工作办公的自动化处理,实现信息化,无纸化办公。 本课题在充分研究了在Springboot框架基础上,采用B/S模式,以Java为开发语言,MyEclipse为开发工具,MySQL为数据管理平台,实现的内容主要包括首页,个人中心,综合管理等功能。

    陨石-4天际星(SFS-AEF).zip

    航天模拟器文件、蓝图、代码

    西门子Smart PLC四轴搬运取料机案例程序:从新手到项目的跃升之路,西门子Smart PLC四轴搬运取料机运动控制案例程序-PLC通信与伺服电机自动化控制解决方案,西门子200smart运动控制

    西门子Smart PLC四轴搬运取料机案例程序:从新手到项目的跃升之路,西门子Smart PLC四轴搬运取料机运动控制案例程序——PLC通信与伺服电机自动化控制解决方案,西门子200smart运动控制四轴搬运取料机案例程序 该程序为两台smart plc通过通讯控制四轴伺服电机的搬运取料机案例工程案例程序。 包含200smar_PLC程序+项目电气接线图(PDF图纸)+程序流程说明+触摸屏程序(步科) 程序包括伺服电机的启动,停止,原点定位,回归原点,位置控制以及方向控制。 包括了所有控制伺服电机的指令,里面有指令的用法的详细解释和程序说明。 拿来就能用的案例程序,结合程序案例中学习,就会轻松快速的掌握。 让你从新手直接能做项目。 动作流程: 客户上好料盒,M1轴伺服跑到第一片料的位置,气缸将料推出到上位置, M2轴在上料位置取件后移动到直线电机的,加工位置,m2轴上通过有上料下料的气缸, 用真空吸住料后m2轴移动到一个二维平台的加工位置,把带加工的料放到加工位置后, 激光器开始加工,加工完成后,通过M2轴把料取下,移动到成品放料位置,放料后, M3轴将成品料推送到M4

    小蜻蜓三号探测器.zip

    航天模拟器文件、蓝图、代码

    基于双碳背景下阶梯式碳交易机制与电制氢的综合能源系统热电优化策略研究与求解分析,基于双碳背景下阶梯式碳交易机制与电制氢的综合能源系统热电优化策略及经济性研究,考虑阶梯式碳交易机制与电制氢的综合能源系统

    基于双碳背景下阶梯式碳交易机制与电制氢的综合能源系统热电优化策略研究与求解分析,基于双碳背景下阶梯式碳交易机制与电制氢的综合能源系统热电优化策略及经济性研究,考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化 “双碳”背景下,为提高能源利用率,优化设备的运行灵活性,进一步降低综合能源系统(IES)的碳排放水平,提出一种IES低碳经济运行策略。 首先考虑IES参与到碳交易市场,引入阶梯式碳交易机制引导IES控制碳排放;接着细化电转气(P2G)的两阶段运行过程,引入电解槽、甲烷反应器、氢燃料电池(HFC)替传统的P2G,研究氢能的多方面效益;最后提出热电比可调的热电联产、HFC运行策略,进一步提高IES的低碳性与经济性。 基于此,构建以购能成本、碳排放成本、弃风成本最小的低碳经济运行目标,将原问题转化为混合整数线性问题,运用CPLEX商业求解器进行求解,通过设置多个运行情景,对比验证了所提策略的有效性。 关键词:氢能;阶梯式碳交易机制;热电比可调;综合能源系统;低碳经济 ,关键词:阶梯式碳交易机制;综合能源系统(IES);热电优化;设备运行灵活性;碳排放水平;电转气(P2G);电解槽;氢

    MMC分布式储能系统:实现恒功率与恒电压控制的无缝切换技术,MMC分布式储能系统实现恒功率与恒电压控制的无缝切换技术,mmc分布式储能 恒功率控制 恒电压控制 无缝切 ,核心关键词:MMC分布式储能

    MMC分布式储能系统:实现恒功率与恒电压控制的无缝切换技术,MMC分布式储能系统实现恒功率与恒电压控制的无缝切换技术,mmc分布式储能 恒功率控制 恒电压控制 无缝切 ,核心关键词:MMC分布式储能; 恒功率控制; 恒电压控制; 无缝切换。,MMC分布式储能系统:恒功率与恒电压控制的无缝切换技术

    多频多快拍稀疏贝叶斯学习目标方位序贯估计_牛海强.pdf

    多频多快拍稀疏贝叶斯学习目标方位序贯估计_牛海强.pdf

    交错并联Boost PFC仿真电路模型:双闭环控制方式下的输出电压与电感电流优化控制,优良波形及Simulink仿真实现,交错并联Boost PFC仿真电路模型:双闭环控制方式下的电压外环与电感电流内

    交错并联Boost PFC仿真电路模型:双闭环控制方式下的输出电压与电感电流优化控制,优良波形及Simulink仿真实现,交错并联Boost PFC仿真电路模型:双闭环控制方式下的电压外环与电感电流内环优化,优质波形表现于Simulink仿真中,交错并联Boost PFC仿真电路模型 采用输出电压外环,电感电流内环的双闭环控制方式 交流侧输入电流畸变小,波形良好,如效果图所示 simulink仿真 matlab simulink仿真模型 无报告哈 ,核心关键词:交错并联Boost PFC仿真电路模型;双闭环控制方式;输出电压外环;电感电流内环;交流侧输入电流畸变小;波形良好;Simulink仿真;Matlab Simulink仿真模型。,基于Simulink仿真的交错并联Boost PFC双闭环控制模型优化研究

Global site tag (gtag.js) - Google Analytics