为你的 Swift Packages 命名

逻辑追月客
• 阅读 1686

作者:Erica Sadun,原文链接,原文日期:2016-02-08
译者:Cee;校对:小锅;定稿:千叶知风

于是乎,在整理我大量 Swift 代码中的一小部分时,我决定利用一下 Swift Package Manager 的优势,将其中的一下推到 GitHub 上。这些都是

在此之后,我突然意识到我的命名太糟糕了。我本应该用一种更加符合逻辑、可读性好的方式去命名。

包(Package)命名需要简洁易懂。是的,同样它们也需要避免重名情况的发生,因为当你有个叫做 SwiftString 的包时,可能 Bob、Jane、Harry 都会有同样名称的这个包。命名冲突是不可避免的。

再比如你的 SwiftString.doSomethingMeaningfulWithAString() 方法会和其他人的 SwiftString.doSomethingMeaningfulWithAString() 难以分辨。这时,也没有内置的解决办法来告诉我如何处理模块间的命名冲突。

今后的一种解决思路是提供命名空间(namespace)。例如,包声明的格式可能会加上 Origin 字段:


import PackageDescription

let package = Package(
    name: "SwiftString"
    origin: "com.sadun"
)

有了这个,你可以通过使用命名空间来避免冲突:


import com.sadun.SwiftString
import com.LeeJason.SwiftString

以及:


com.sadun.SwiftString.doSomethingMeaningfulWithAString()

众所周知,这样会在你只需要引入一到两个包的时候变得复杂一些,但是这样却能够很好地避免了引用上的歧义。

现在,虽然这些都还没有被公开认可,同时也没有官方的 SPM 包,但是你要知道我们的这些自我组织的包即将要登上历史舞台了。确保以一种清晰明了的方法来使用多个、可能在命名上有冲突的包将会是一件好事情。

从现在开始,使用 SadunSwiftString 而不是 SwiftString 来避免这些问题吧。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
3年前
Exceptionless
<divid"cnblogs\_post\_body"class"blogpostbodycnblogsmarkdown"<h1id"exceptionless.netcore开源日志框架"Exceptionless.NetCore开源日志框架</h1<blockquote<p作者:markjiang7m2<b
Wesley13 Wesley13
3年前
Activiti 工作流入门指南
<divclass"htmledit\_views"id"content\_views"<h1<aname"t0"</a概览</h1<p如我们的介绍部分所述,Activiti目前分为两大类:</p<ul<li<p<ahref"https://activiti.gitbook.io/activiti7deve
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Neo4j删除节点和关系、彻底删除节点标签名
<divclass"htmledit\_views"id"content\_views"<p<ahref"https://www.jianshu.com/p/59bd829de0de"rel"nofollow"datatoken"720f42e8792665773f66044d30a60222"https://www.jians
逻辑追月客
逻辑追月客
Lv1
晚霞真好,日出日落在我眼里都很美。
文章
2
粉丝
0
获赞
0