为了活动小家电-kotlin清洁代码(三)

67 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的22天,点击查看活动详情

为了活动小家电,接着上篇搞!

2)保持抽象层次的组织,避免嵌套代码

“不洁”

for (person in persons) {
    if(person.subscriptions != null) {
        if (person.subscriptions.size > 0) {
            var isMember = person.isMember()
            if (isMember) {
                count++
            }
        }
    }
}

“干净的”

var count = 0
for (person in persons) {
    if (person.isMember) {
        count++;
    }
}

class

类应该小于small。它必须只有一个责任和一个改变的理由(SRP)。一个类与其他几个类合作以执行所需的系统行为。

一个类文件就像一篇报纸文章:

  • 名称应该简单易懂。
  • 从顶部开始的部分包含高级概念和算法。(文章的标题行)
  • 向下滚动以显示详细信息。
  • 最后,找到最低级别的特征。

凝聚

内聚度是类或模块的元素在功能上相关程度的度量。当它们的内聚度低时将它们分开

耦合

耦合是模块之间相互依赖程度的度量。隔离使每个系统的元素更容易理解。

最好的是那些具有高内聚性和低结合力的。

要完成这个最佳方案,请记住以下原则编写一个类。

  • DRY

Don't Repeat Yourself
适用于任何时候复制
粘贴代码降低开发成本

  • KISS

Keep It Simple and Stupid
当你想实现一种方法来做所有事情时,更简单的方法不太可能失败。
简单性与我们习惯的不同:for 循环很熟悉,但它们不必简单。\

  • YAGNI

You Ain’t Gonna Need It
不要编写你不需要的代码。
评估实施成本:现在就做是昂贵的,所以当你真正需要的时候写代码。\

  • SOLID

SRP - 一个类或模块只有一个改变的理由
OCP - 类、模块、函数等软件实体对扩展开放但对更改关闭。
LSP - 程序中的对象可以替换为子类型的实例而不改变程序的行为。
ISP - 实现接口的类不得强制实现未使用的方法
DIP - 高级模块不应该依赖于低级模块,但两者都应该依赖于抽象。 细节中的抽象 \