在项目中管理快速扩展的更好方法
我们如何在项目中管理扩展。 下面来自我的项目的截图说明了一切。
例如,我有一个简单的扩展UIColor + toImage,用于从一种颜色生成图像。
用法。
让redImage = UIColor.red.toImage()
完美不是吗?
可读性 。
1.没有人可以轻易猜出此函数是来自原始UIColor类还是来自我自定义的扩展(除非深入阅读该定义。)
2.该扩展会在不同的项目中重复使用,因此我们很可能希望它们继续进行到下一个项目中。 很难猜测它所属的名称空间。
一种简单而古老的方法是在扩展名中的所有函数名称之前使用带有_( 下划线 )的前缀。
例如。 my_或abc_
让redImage = UIColor.red.my_toImage()
但是这种解决方案是无法管理的,因为我们必须确保所有函数都以my_作为前缀。
如果我们使用my.toImage()而不是my_toImage()怎么办。
因此,想法是制作一个名为MyHelper的单个模块类/结构,其中将包含所有扩展方法。 如果需要,我们也可以将功能分组为扩展。
MyHelperCompatible协议具有` my`变量,该变量保存整个MyHelper类/结构对象。
现在,我们可以根据用途扩展MyHelper 。
例如。
在上面的文件中,我们可以添加与UIColor相关的其他帮助器函数。 同样,我们可以将alls函数分组为MyHelper扩展。
最后,我们可以像下面一样访问toImage()。
让redImage = UIColor.red.my.toImage()
从现在开始,我们只需要创建上面的扩展和方法即可。
无论如何,我们都想停止这种行为,我们可以注释掉/删除一致性部分。
//扩展名UIColor:MyHelperCompatible {}
提示 :将所有一致性保持在一个地方而不是分散在项目周围是一件好事,这样您就可以更好地控制。
我知道这似乎有点棘手,并且需要花费额外的精力来设置一次,但是我相信,随着项目的发展,它会大有帮助。