首页 > 其他分享 >《代码整洁之道》阅读笔记二

《代码整洁之道》阅读笔记二

时间:2022-12-17 22:44:57浏览次数:38  
标签:注释 函数 代码 笔记 之道 名称 使用 异常 整洁

一 简洁设计原则
Bob大叔借鉴过多位行业大牛说过的话,总结出构建简洁之道:

运行所有测试
重构:消除重复,保证表达力,尽可能减少类和方法的数量。
不可重复
表达了程序员的意图
尽可能减少类和方法的数量
以上规则按照重要程度排列
二 命名必须有有意义
包含有variable、method、parameter、class、package,甚至是jar文件,war文件,ear文件。那么该怎么命名呢,有很多的规则

名副其实:选一个好名字,也许会花费很多的时间,但省下来的时间比花掉的多,我们读和写的比例是远远大于5:1的。
避免误导:必须避免留下掩藏代码本意的错误线索。
做有意义的区分:应以读者能鉴别不同之处的方式来区分,比如DTO、VO、PO等,读者一眼便知其来源。
使用读的出来的名称。
尽量使用可搜索的名称。例:int WORK_DAYS_PER_WEEK=5;
避免使用前缀,前缀无意义。
避免思维映射:不应让读者把你的名称翻译为他们熟知的名称。
类名优化:避免使用Data、Info这样的类名。类名不应是动词。
方法名:方法名应为动词或动词短语。如:deletePage、save。
每个概念对应一个词:我理解和DDD中的业务术语有点类似,对于同样的名称要有同样的认知。
别用双关语
使用解决方案领域名称:ArrayList在java中一定是所有程序员都知道的。
使用源自所涉及问题领域的名称。
添加有意义的语境。
三 函数(method)
参考类,juc中的ReentrantLock.java,我看完所有的代码,发现最长的一个method是15行,大多是1到5行代码就搞定。

短小
只做一件事:判断函数是否只做一件事,就是看是否还能再拆出一个函数
每个函数一个抽象层级:这一条比较难理解,就比如将大象装进冰箱一样,可以分为3个步骤开门->装大象->关门。而在装大象之前需要进行判断冰箱的大小和大象的大小以及冰箱中是否有其他东西,那么3大步骤是一个层级的,其他的是第二层级,还可能有第三层级。简而言之,就是分层。
switch语句:尽量少用,switch语句本身就是用来处理多件事的,而用抽象工厂可能会更好一点。
使用描述性的名称
参数:零参数最好,其次是一,再次是二,应尽量避免三。
无副作用:不要把另外一件事隐藏到这个函数中,避免函数做不在名称描述中的第二件事。
分隔指令与询问:函数要么做什么事,要么回答什么事,但二者不可兼得。
使用异常替代返回错误码
Don’t repeat yourself
结构化编程:每个函数都应该只有一个入口,一个出口。
四 注释
注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。代码可以表达清楚的事情,就不要用注释。除非你要写复杂的并发代码,或者是通用框架类,否则一般的业务代码就尽量不要用到注释。代码可以被修改,但别人基本不会修改你写的注释,这会使得注释具有误导性。真实只有一处地方有:代码。代码会告诉你它做的事情,唯一准确的信息来源。
注释掉的代码直接删除,无需留着,源代码控制工具(git,svn)会帮我们记录这一切的。

五 格式
我们大多数人使用的开发工具(eclipse和idea),已经自带了格式化规范。在代码写完之后,使用快捷键格式化一下即可。
函数如果有调用的关系,则尽量把他们放在一起,而且调用者应该尽可能放在被调用者上边。
这里需要提一下的就是代码规范规则,目前国内Java行业标准有阿里开源的开发规范,已经被很多的公司采用,使用阿里规范作为标准也是不错的。

六 对象和数据结构
对于面向对象编程来说,这一章的内容其实意义不是特别大,因为基本的规则现在已经定义好了。只是Bob大叔当时的代码理念可能还没有像现在这么全面。唯一需要说的就是迪米特法则(Law of Demeter),这个我会在附录中列举出来。

七 错误处理
使用异常而非返回码
先写try/catch/finally语句
使用不可控异常,一层层向上抛出
给出异常发生的环境说明,在抛出异常时,记录下堆栈信息。
依调用者需要定义异常类
自定义异常类
别返回null值
别传递null值
八 边界
在和第三方的接口进行交互的时候,极力推荐将应该让别人知道的方法放出来,而其他对别人无用的接口则封装起来。
对第三方的代码编写一些测试,以便新版本发布后,还可以继续使用。
假定一些dummy数据来作为第三方数据的来源。
对于第三方的接口,我们可以用Adapter模式来做一些适配。

九 测试
测试这一章基本放弃了,因为我们公司不注重测试,也没有写过单元测试。但规则还是一样的。

十 类
类应该尽量设计的短小一些。这里会涉及到3个原则,单一职责原则、开闭原则和依赖倒置原则。
————————————————
版权声明:本文为CSDN博主「Monkey KevinWu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012663412/article/details/119604153

标签:注释,函数,代码,笔记,之道,名称,使用,异常,整洁
From: https://www.cnblogs.com/1774323810com/p/16989757.html

相关文章

  • [深度学习] ImageAI库使用笔记
    ImageAI是一个Python库,旨在使开发人员,研究人员和学生能够使用简单的几行代码来构建具有独立的深度学习和计算机视觉功能的应用程序和系统。ImageAI的官方GitHub存储库为​......
  • [编程基础] Python对象的浅拷贝与深拷贝笔记
    Python中的赋值语句不创建对象的副本,它们只将名称绑定到对象。对于不可变的对象,这通常没有什么区别。但是对于处理可变对象或可变对象的集合,您可能需要寻找一种方法来创建这......
  • [编程基础] Python模块和包使用笔记
    本文探讨Python模块和Python包,这两种机制有助于模块化编程。模块化编程是指将大型笨拙的编程任务分解为单独的,较小的,更易于管理的子任务或模块的过程。然后可以像构建模块......
  • [机器学习] Yellowbrick使用笔记5-回归可视化
    回归模型试图预测连续空间中的目标。回归计分可视化工具显示模型空间中的实例,以便更好地理解模型是如何进行预测的。Yellowbrick已经实施了三种回归评估:残差图ResidualsPlo......
  • [机器学习] Yellowbrick使用笔记4-目标可视化
    目标可视化工具专门用于直观地描述用于监督建模的因变量,通常称为y目标。当前实现了以下可视化:平衡箱可视化BalancedBinning:生成带有垂直线的直方图,垂直线显示推荐值点,以将......
  • [机器学习] Yellowbrick使用笔记3-特征分析可视化
    特征分析可视化工具设计用于在数据空间中可视化实例,以便检测可能影响下游拟合的特征或目标。因为ML操作高维数据集(通常至少35个),可视化工具将重点放在聚合、优化和其他技术上......
  • [机器学习] Yellowbrick使用笔记2-模型选择
    在本教程中,我们将查看各种ScikitLearn模型的分数,并使用Yellowbrick的可视化诊断工具对它们进行比较,以便为我们的数据选择最佳的模型。​​代码下载​​文章目录​​1使用......
  • [机器学习] Yellowbrick使用笔记1-快速入门
    Yellowbrick是一个机器学习可视化库,主要依赖于sklearn机器学习库,能够提供多种机器学习算法的可视化,主要包括特征可视化,分类可视化,回归可视化,回归可视化,聚类可视化,模型选择......
  • [机器学习] 特征选择笔记3-递归式特征消除
    特征选择​​​代码下载​​​本文主要介绍sklearn中进行特征选择的方法。​​sklearn.feature_selection​​模块中的类可用于样本集的特征选择/降维,以提高估计量的准确性......
  • [机器学习] 特征选择笔记4-使用SelectFromModel特征选择
    特征选择​​​代码下载​​​本文主要介绍sklearn中进行特征选择的方法。​​sklearn.feature_selection​​模块中的类可用于样本集的特征选择/降维,以提高估计量的准确性......