Tag: 保留一些权利

代码结构和可读性第2部分-类和结构

欢迎回来,在第1部分中,我们介绍了一些基础知识:变量,数据结构和函数。 代码结构和可读性第1部分—变量,数据结构和函数 如果您来自我的有关结构和可读性的Swift编程文章,那么您已经知道一些基本知识…… medium.com 我们学会了一些清理它们的方法,但是现在我们继续前进。 我计划这次对您轻松一点,因为我们在这里只讨论类和结构。 如果您不了解类或结构,建议您阅读我为Swift写的一篇文章。 不用担心Swift不是您的语言,如果您的语言支持它们,那么足够通俗易懂,足以让您掌握类和结构。 类和结构 让我们从那里抛出一个示例类开始。 公共类动物{ 命名:字符串 让收藏夹食物:字符串 变量年龄:整数 让countryOfOrigin:字符串 init(名称:字符串,最喜欢的食物:字符串,年龄:整数, countryOfOrigin:字符串){ self.name =名称 self.favoriteFood =最喜欢的食物 自我年龄=年龄 self.countryOfOrigin = countryOfOrigin } } 当然,我们可以将其更改为struct并忘记初始化程序,但是我要使用一个类,因为让我们面对现实吧,即使您尝试使其具有可读性,也有点草率。 老实说,当结构可以使用时,我尽量不要使用类。 我不必担心初始化(除非我想),我不必担心参考周期(除非我要进行极端优化),并且我的代码库要小几行。 那么我们可以使用类来解决这个问题吗? 好吧,确定间距确实有帮助,所以让我们从这里开始: 公共类动物{ 命名:字符串 让收藏夹食物:字符串 var age =年龄 让countryOfOrigin:字符串 init(名称:字符串,最喜欢的食物:字符串,年龄:整数, countryOfOrigin:字符串){ self.name =名称 self.favoriteFood =最喜欢的食物 自我年龄=年龄 self.countryOfOrigin = countryOfOrigin } } 一点间距与此很长的路要走。 但是我认为我们可以做得更好。 每当我的代码看起来像这样的部分难以阅读时: … […]

开始进行Swift编程第6部分-结构,类,属性和方法

在上一篇文章中,我们介绍了函数,枚举和范围。 开始Swift编程第5部分-函数,枚举和作用域 在上一篇文章中,我们介绍了if语句,while循环和for-in循环(通常仅称为for循环)。 medium.com 它使我们对如何使用函数分解代码,使用枚举创建选项(并修复很长的if / else-if语句)的方式以及如何使内存使用率保持在较低水平并通过覆盖范围来查找讨厌的bug有了很好的理解。 。 今天,我们将讨论两个新对象,它们也是类型,它们也是容器,可帮助进一步分离代码并使代码更具可读性。 不要把代码分开得越多,就越容易阅读,这是一种快乐的媒介。 类和结构有助于建立这种媒介。 因此,让我们直接讨论一下Structs。 结构 C中的结构(如结构)是包含相似变量的数据类型,在Swift中,我们扩展了此功能,以允许结构也包含函数,枚举和其他结构,并且声明如下: 我们使用struct House声明一个结构,然后在主体中放入我们认为合适的任意数量的变量,常量或其他结构。 如果需要更改变量,请使用var声明它;如果不行,请使用let使其成为常量。 当我写出变量时,我会考虑应该测量或确定什么,然后通常以let开头并键入变量名称。 我问自己几个关于此变量应为哪种类型的问题。 这里只是几个问题: 使用浮点数(双精度/浮点数)有意义吗? 使用整数(Int)是否有意义? 是否确定状态(布尔值/枚举)? 它可以衡量或确定(结构)的多种因素吗? 问自己这样的问题将帮助您弄清楚要与特定变量一起使用的类型。 squareFootage可以用整数来度量,但也可以包含十进制数,因此我们将其默认为Double类型。 我们永远不能拥有一半的房间或四分之一的房间,因此numberOfRooms变成一个Int,与numberOfWindows相同。 您为什么认为我将numberOfBathrooms为Float。 我们永远不会有四分之一的浴室。 我们可以有一个完整的浴室,哦,等等,我们可以有一个半卫生间,其中只有一个水槽和一个厕所,或者一个水槽和一个浴缸。 因此,我们可以将1.5个半澡返回1.5 。 好的,那很有道理。 然后我们将address作为字符串常量。 为什么恒定? 好吧,如果您更改地址的时间为99.99999…%,那是因为您搬到了另一所房子,而这所房子不再适用于您,因此我认为将其设为常数是安全的。 然后我们有var doorIsOpen 。 好的,因此可以在两个可能的值之间切换,因此我们将其设为布尔值变量。 当然,我们可以在该结构中添加一个Garage ,因为我们都知道一个车库可以容纳这么多的汽车,因此我们可以说numberOfCars并将其numberOfCars Int 。 我们的车库可能有也可能没有窗户,因此我们允许设置窗户,但可以选择使用numberOfWindows: Int? 。 最后,如果我们要拉出车库或停在车库中,我们需要知道门是打开还是关闭。 我们使用doorIsOpen做到这doorIsOpen 。 呃,鲍勃…我们已经有了一个名为doorIsOpen的变量,它是基本House结构的一部分。 是的,我们这样做,但是由于范围的doorIsOpen , Garage结构中的doorIsOpen变量与House结构中的doorIsOpen变量不同。 让我们看看如何使用此结构来创建房屋。 […]