使您的Swift代码更易读的三种方法

代码可读性的重要性经常被低估,尤其是在强调用户界面和用户体验的环境中进行编程时。 确实,制作出色的应用程序非常重要,但将来能够进行更改也同样重要。 对于无法读取的代码,要解决错误可能要困难得多,要花费大量时间来尝试查找正确的代码行并了解其工作方式。

任何傻瓜都可以编写计算机可以理解的代码。 好的程序员编写人类可以理解的代码。 —马丁·福勒

考虑到这一点,让我们开始学习一些方法,使您自己以及将来可能需要对其进行更改的其他人都可以更轻松地阅读代码。

1.使用注释

这似乎是使代码更具可读性的一种显而易见的方法,但它经常被忽略。 如果您正在编写Swift代码,则很可能是将Xcode用作编译器,并且很方便地,事实证明Xcode包含了有助于提高代码可读性的功能。

单行注释

最广泛使用的注释类型是单行注释。 我们很多人在一行的前面使用两个正斜杠,以便编译器将其忽略,但是请不要忘记它对于记录代码有多大用处!

复习一下,这里是做传统的单行注释的方法:

// calculate the average grade
let average = (gradeA + gradeB + gradeC) / 3.0

按照惯例,注释位于其更详细解释的那一行之上。 尝试使用注释来添加解释或深入了解代码,而不仅仅是描述该行的功能。 例如,以下对上面代码的注释没有帮助,因为除了立即显而易见的内容之外,它没有添加任何其他解释。

// sum the grades and divide by 3

快速帮助评论

您可能已经用过 单击Command键以获取有关特定变量,类或方法的更多信息,但是您知道可以将这样的信息添加到自己的代码中吗? 您可以! 为此,请使用特殊的单行注释语法,如下所示:三个斜杠,后跟一个空格和一个破折号。 然后添加属性名称(例如,“参数”),然后最后键入单词,然后输入其定义。

这是一个快速帮助注释语法的示例:

/// - parameter foobar: definition of foo
func foobar() {
}

当您在所有使用过的foobar 命令上单击 foobar 左键时 ,您会在parameters下看到其定义。

阻止评论

注释使用较少的一种是块注释。 这些注释通常用于将许可信息和版权信息放在文件的顶部,但是如果您需要编写多行代码来解释代码,也可以使用这些注释(尽管根据经验,如果需要使用很多单词解释您的代码,它可能不够可读)。

要进行块注释,请以正斜杠,星号开头,然后是代码。 准备结束评论后,您只需在星号上加上一个正斜杠即可。

这是一个例子:

/*
Copyright (c) 2018, Vardhan Agrawal
All rights reserved.
*/

快速帮助文档的块注释

回到快速帮助文档,块注释是在Xcode中创建代码完整文档的正确方法。 对于这些,只需使用两个星号来开始和结束,就像使用单个星号进行常规块注释一样。 您甚至可以使用markdown语法来设置注释的格式并使其更具可读性。

这是您记录一些代码的方式:

/**
This function returns a list of randomness.

**Parameters:**
    - foo: a bit of randomness.
    - bar: a bunch more randomness.
*/

开始在代码中添加好的注释,您将比编写可读的代码更近一步。

2.基于角色的命名

您可能已经听过很多,但是代码必须能够像英语一样阅读。 实际上,计算机并不关心人类的外观,但是优秀的程序员的标志之一是,他们可以很好地表达自己的代码以使其可读性更高。

在Swift中,最好根据对象在代码中扮演的角色来命名事物。 例如,而不是简单地使用名称的apple类型的变量Apple ,如果苹果作为食物的动物,它可以被命名为food来代替。

有时给应该被专门化的对象赋予许多责任可能很诱人,这会使您的应用程序模块化程度降低,并使任何阅读代码的人都感到困惑。 根据对象的名称来命名对象可以帮助您提醒您仅将角色分配给它们负责的对象。

变量和常量

属性,变量和常量的名称应读作名词。 - 苹果

这种一般的经验法则很有意义,因为这些类型在应用程序中扮演的角色通常可以用名词来表示。 这里有些例子:

  • SpriteKit游戏状态变量的var scoreCounter
  • let sharedInstance为单例。

布尔值

布尔方法和属性的使用应视为有关接收方的断言。 - 苹果

通过说布尔值“应该是关于接收者的断言”,我们仅表示它们应为是或否声明。 让我们看几个例子:

  • var isEmpty用于数组。
  • let touchesEdge获得游戏精灵。

通讯协定

描述什么东西的协议应该读作名词。 - 苹果

如果使用协议创建“模板”类型,则应使用与变量和常量相同的命名方式。 这也很有意义,因为您要命名方法,类等的类型。以下是一些示例:

  • protocol Fruits用于不同类型水果类的水果。
  • 数组,列表等的protocol Collections
描述功能的协议应使用后缀:able,ible或ing命名。 - 苹果

如果您的协议定义了一种类型可以执行的操作,则应使用上面的后缀来命名。 应该将其理解为协议可以“做某事”。 这是另一个示例列表:

  • protocol Returnable对于可返回的类型,可返回。
  • protocol ProgressReporting用于报告进度的类型。

把事情简单化!

除了这些命名约定外,Apple还建议您避免使用它们所谓的“艺术术语”,换句话说,即可能不容易理解的术语。 他们没有说要完全避免使用它们,而是在基本单词足以满足需要时才使用它们。

3.使用设计模式

在生产级应用程序中,开发人员使用设计模式以可更改的方式构造代码,并且更具可读性。 让我们讨论一些可在下一个iOS应用程序中使用的设计模式。

听起来有些陈词滥调,但这确实是您对应用进行编程的基础。 假设您正在建造房屋,梦想中的房子。 这所房子高五层,因此,如果您没有建立坚实的基础并遵循蓝图,它可能只会倒塌。 iOS应用程序的基础是您选择的设计模式。 让我们看两个最常用的模式。

MVC(模型-视图-控制器)

Model-View-Controller或MVC设计模式是行业标准。 它将代码的每个部分分为三部分:模型,视图和控制器。

  • 模型:模型本质上是应用程序的数据。 这处理诸如可重用结构和类之类的事情 只要   与应用程序的数据。 该模型处理与视图或信息如何显示给用户有关的任何内容。
  • 视图:视图仅负责数据的视觉表示,并且还处理用户交互。 它   处理有关数据的任何事情,也不处理特定的视图。 它只是一个可重用的类,可以重复使用多次而无需重复代码。
  • 控制器:控制器是老板。 它从模型中获取数据,然后将其发送到视图,最后将其显示给用户。 这通常在ViewController.swift中 ,它侦听输入并根据需要更改模型。

无论您选择哪一种,它们都称为设计模式,它们使我们的代码更具模块化。 让我们看一下可以补充您选择使用的应用程序模式的另一种设计模式。

单身人士

单例是始终存在于内存中的类的单个实例。 那么,为什么我们要关心这个呢? 好吧,假设您正在构建一个连接到数据库的应用程序。 您需要放置所有数据服务连接的位置。 这将是使用单例的理想场所。

查看下面的代码,它将向您展示如何构造单例:

// Declaration
class DataService {
    static var shared = DataService()
    func createUser() {
        // Do something
    }
}

// Call-site
DataService.shared.createUser()

就这么简单!

如果使用设计模式,则代码将更具可读性,而且组织和模块化,因此您可以更轻松地隔离应用程序中的问题,并以最少的代码重新布线进行大的更改。

在本课程中,您将学习21种不同的设计模式。 您可能会发现一个可以改变您的编码方式的工具!

结论

如您所见,使代码更具可读性和组织性并不难。 当您努力做到这一点时,您将受益于易于修改的代码,并使您的代码更易于他人理解。 雇主会寻找这些东西,所以养成定期应用这些技巧的习惯!

翻译自: https://code.tutsplus.com/articles/three-ways-to-make-your-code-more-readable--cms-30262

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值