在项目中管理快速扩展的更好方法


我们如何在项目中管理扩展。 下面来自我的项目的截图说明了一切。

例如,我有一个简单的扩展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 {} 

提示 :将所有一致性保持在一个地方而不是分散在项目周围是一件好事,这样您就可以更好地控制。

我知道这似乎有点棘手,并且需要花费额外的精力来设置一次,但是我相信,随着项目的发展,它会大有帮助。