Tag: 代码可读性

Swift编程入门第10部分-代码结构,可读性和原理

在上一篇文章中,我们介绍了基本协议,扩展和下标。 开始进行Swift编程第9部分-基本协议,扩展和下标 在上一篇文章中,我们介绍了类型转换,安全展开可选内容和访问控件。 medium.com 协议具有更强大的功能,扩展功能更是如此,但是将来我们将介绍这些功能。 既然您现在知道了Swift中常用的顶级实体,我认为现在是时候讨论代码结构和可读性了。 如果您像我希望的那样一直在练习,您可能已经编写了一个相当大的程序,吃过晚饭或出去了,而当您回来时,您会觉得自己的代码有些失落。 刚开始时,这种情况经常发生。 如果分心,您会感到沮丧,因为您忘记了5分钟前写下的内容。 别担心,这发生在我们大多数人身上。 我有一个好消息,随着时间的推移,它确实变得越来越容易,需要多长时间取决于您练习的次数。 对我来说,每天大约要花6个月的编码时间。 从我醒来直到上床睡觉的时间,甚至在周末,我总是在写代码。 不要误会我的意思,这并不意味着我没有生活,我仍然出去玩得开心。 有时我会筋疲力尽,不得不停止编写代码一两天。 即便如此,我仍在阅读文章,并试图做得更好。 所以继续练习。 前几天,我开始思考,Swift中的代码结构真的没有任何东西。 一切似乎都是道听途说或遵循教程的结构。 每个人的写作风格都有自己的怪癖,没有标准化的东西。 我不是要规范代码结构 。 我想说清楚。 我只是将我所看到的所有内容和我自己的代码样式进行汇总,以帮助您提供一个起点,使您可以组织代码并轻松地理解以后再返回代码时的情况。 话虽这么说,让我们高谈一下应用程序的各个部分如何在您的Swift文件中显示。 类,协议和扩展仅是顶级实体。 最高层,我是说它们没有被花括号包围。 可以这么说,他们坐在裸露的文件上。 结构和枚举几乎总是顶级实体,但是它们也可以出现在其他结构或枚举中。 函数可以是顶级对象,但我只建议在控制台程序中执行此操作。 对于macOS,iOS,tvOS和watchOS程序,我会坚持将功能保留在类中。 常量和变量应在尽可能小的范围内声明,这意味着如果只需要在if语句中存在一个变量,则在if语句内声明它。 如果将在整个文件中使用其中任何一个,请在文件顶部声明它并提供适当的访问控制。 综上所述,我将为您提供一个示例,说明如何以代码格式布置文件,我的示例将基于放置在所有新View Controller文件中的View Controller代码段。 对于您自己以及其他阅读您代码的开发人员而言,可读性比对用户而言更为重要。 您应该努力在所有代码中都具有出色的可读性。 分手 如您所见,当您写入大量功能时,这些文件会变得很长。 因此,我倾向于将这些文件分解为同一文件夹组下的单独文件。 我见过的命名约定如下: ViewController+NameOfDelegate.swift或ViewController+NameOfDataSource.swift 这样,我知道要单击的文件应包含哪些代码,这有助于我确保该文件仅包含与其相关的代码。 使用上面的示例代码,我将提取枚举并将它们放在自己的文件中,如果我想为全局枚举创建一个名为Enums.swift文件,我可以使用//MARK:将其拆分为几个部分,以便稍后可以跳入进行更新。 如果文件中的枚举仅用于此视图控制器,则将访问控制设置为internal,但将文件与ViewController类放在同一组下。 除非协议是在模型中定义的,并且打算供其他类使用,否则我可能会取出协议及其扩展名并将其放置在自己的文件中。 如果协议具有类或结构特定的扩展名,我将使用//MARK:通过Protocols.swift文件将其逻辑上分开。 同样,我将以与Enums.swift相同的方式放置文件。 我还会撕掉该结构并将其用作名为House.swift 。 我还将它分成名为Models的组,因为它是房屋的模型。 该类及其所有方法将保持不变,但是我可以取出特定于类的扩展,并将其放置在新文件ViewController+Extensions.swift 。 只要确保将需要由扩展程序调用的ViewController.swift中的任何方法都设置为internal […]