《代码整洁之道 》第十章 类

第十章 类

10.1 类的组织

遵循标准的Java约定,类应该从一组变量列表开始。如果有公共静态常量,应该先出现。 然后是私有静态变量,以及私有实体变量。很少会有公共变量。公共函数因跟在列表变量之后。公共函数调用的私有工具函数紧跟在公共函数后面。
封装。

10.2 类应该短小

类也应该短小,对于函数,我们采用计算代码行数衡量大小,对于类,我们衡量方式是计算权责。
类的名称应当描述其权责。实际上,命名正是帮助判断类的长度的第一个手段。如果无 法为某个类命以精确的名称,这个类大概就太长了。类名越含混,该类越有可能拥有过多权 责。例如,如果类名中包括含义模糊的词,如Processor 或Manager 或Super ,这种现象往往 说明有不恰当的权责聚集情况存在。
描述一个类就不要使用 if、and、or、but等词汇。

10.2.1 单一权责原则

单一权责原则(SRP)认为,类或模块应有且只有一条加以修改的理由。该原则既给出 了权责的定义,又是关于类的长度的指导方针。类只应有一个权责一只有一条修改的理由。
image.png

10.2.2 内聚

类应该只有少量实体变量。类中的每个方法都应该操作一个或多个这种变量。通常而言, 方法操作的变量越多,就越黏聚到类上。如果一个类中的每个变量都被每个方法所使用,则 该类具有最大的内聚性。
image.png

10.2.3 保持内聚性就会得到许多短小的类

仅仅是将较大的函数切割为小函数,就将导致更多的类出现。想想看一个有许多变量的 大函数。你想把该函数中某一小部分拆解成单独的函数。不过,你想要拆出来的代码使用了 该函数中声明的4个变量。是否必须将这4个变量都作为参数传递到新函数中去呢?
完全没必要!只要将4个变量提升为类的实体变量,完全无需传递任何变量就能拆解代 码了。应该很容易将函数拆分为小块。
可惜这也意味着类丧失了内聚性,因为堆积了越来越多只为允许少量函数共享而存在的 实体变量。等一下!如果有些函数想要共享某些变量,为什么不让它们拥有自己的类呢?当 类丧失了内聚性,就拆分它!
所以,将大函数拆为许多小函数,往往也是将类拆分为多个小类的时机。程序会更加有 组织,也会拥有更为透明的结构。

10.3 为了修改而组织

对于多数系统,修改将一直持续。每处修改都让我们冒着系统其他部分不能如期望般工 作的风险。在整洁的系统中,我们对类加以组织,以降低修改的风险。
image.png

隔离修改
需求会改变,所以代码也会改变。我们可以借助接口和抽象类来隔离这些细节。依赖倒置原则。
我们要构建一个依赖于外部TokyoStockExchange API 的Portfolio 类,与其设计直接依赖于Tokyo StockExchange 的Portfolio 类,不如创建StockExchange 接口, 其中只声明一个方法:
image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java代码整洁之道是指编写易于理解、易于维护、可扩展性强的高质量代码的一系列准则和实践。以下是一些Java代码整洁之道的要点: 1. 命名规范:使用有意义的变量、方法和名,遵循驼峰命名法,并避免使用缩写和单个字符作为名称。 2. 函数和方法的简洁性:函数和方法应该尽可能短小,只做一件事,并遵循单一职责原则。避免过长的函数和方法,可以通过提取子函数或方法来减少代码复杂性。 3. 注释和文档:使用清晰的注释来解释代码的意图和逻辑,但不要过度注释。另外,编写良好的文档注释,以便其他开发人员能够理解和使用你的代码。 4. 避免重复代码:重复代码会增加维护成本,应该尽量避免。可以通过提取公共代码块为方法或函数,或者使用继承、接口等方式来实现代码的重用。 5. 异常处理:合理处理异常情况,避免捕获所有异常或忽略异常。根据具体情况选择合适的异常处理方式,例如抛出异常、记录日志或返回默认值。 6. 单元测试:编写单元测试是保证代码质量的重要手段。每个方法都应该有对应的单元测试,覆盖各种情况,确保代码的正确性和稳定性。 7. 代码格式化:统一的代码格式可以提高代码的可读性。使用合适的缩进、空格、换行等格式化规范,并使用代码格式化工具进行自动格式化。 8. 设计模式和面向对象原则:熟悉常用的设计模式和面向对象原则,如单一职责原则、开闭原则、依赖倒置原则等,合理应用于代码设计中。 9. 持续重构:随着需求的变化和代码的演进,及时进行代码重构是保持代码整洁的关键。通过重构,可以改进代码结构、提高可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值