我怂了,花了半个国庆假期为 iPic 适配 Swift 3,却不敢上架 macOS App Store…

2016-10-08 00:05:44 +08:00
 quietjosen

macOS Sierra 发布有些天了, Swift 3 也是同期发布的。这几天手痒把 XCode 升级了,同时也将 iPic 适配 Swift 3 ;本打算 1 天搞完的,结果…哎,说多都是泪…

就是因为之前没觉得是多大的事,也就没好好的总结,随意写点感受,供大家娱乐。

Swift 3.0 Language Changes

Swift 官网有 关于 Swift 3.0 变化的介绍,其中列举了 100 多项变化。壮着胆子看了一遍,实在是水平有限,只是其中几项算是彻底搞懂,其他也就有个感觉。

此路不通。

XCode 转换工程

于是,撸起袖子上,直接让 XCode 转换工程,升到 Swift 3

这一下,代码是炸了锅了。没有一个文件不修改,简直惨不忍睹;直接编译通过就更别想了。本来还想仔细看看所有变动,借机理解下 Swift 3 的变化。结果,看着看着,看着那似乎永远看不完的变化,放弃了。努力编译通过,提交了。

苦难就是从这里开始的。

忠告:后来的朋友,如果有时间的话,还是建议一个个变化看过去。不懂、或者需要较多时间消化的,建议先打个标记。等一遍快速看完后,再来一遍、一遍又一遍。总之,这是你理解 Swift 3 变化的最好时机,切记。

说回来,由于没有仔细看每一处变化,导致心里很慌:不知道哪有雷啊。虽然单元测试也努力跑通了,但就是跑通的太快了,反而更慌了。

深坑在细节

『大体能跑通』,这其实是很不靠谱的。需要花费大量时间搞定的,可能是其中某一个细节问题。

我遇到的一个是: base64 编码。现象是 iPic 怎么都不能上传图片至 Flickr ,错误原因是生成的 Token 错误。可之前就是这么干的呀?最痛的地方在于, Flickr 生成 Token 是个巨复杂的过程(下图稍微感受下),其中每个步骤都可能出错,这就意味着每个步骤都要仔细过;偏偏之前偷懒这部分单元测试不全(哎…)于是,开始了漫长的调试。

最后的原因是,之前的 base64 相关的编码结果中,: 是被转义的,而新的代码(即被 XCode 转换、而我没仔细看的代码),貌似 : 没有被转义,导致 Token 无效(未严格验证原因,总之解决问题了…)

忠告:单元测试、自动化测试不能偷懒。 99.99% 的情况下,我们做不到测试驱动开发,但还是要在开发每个功能后、在对这个功能最熟悉的时候,补全单元测试、测试用例。

小技巧:在功能完成后,写单元测试其实还算简单。先把单元测试的架子搭好,正确值留白;然后直接运行,肯定会出错。关键, XCode 会给出正确值。这时,只要把 XCode 的值复制到正确值即可,相对还算轻松。

简单最好

代码逻辑、架构什么的,越简单越好。

一方面,逻辑越简单,漏洞越少。进而,测试用例什么的都少。现在完整测试一遍 iPic 要吐半升血…

另一方面,简单容易理解啊。等过几个月再看当初的代码,理解上一定是吃力的。

感受:为了简单,可以放弃一个边缘 Case ;有些错误,就算知道也不一定改,因为改了会让整体变复杂、用户却不一定能得到好处,其实并不划算。

稳定大于效率

如果一种方案开发效率、运行效率高,但维护成本也高;另一种方案刚好相反,现在的我会选择后一种。宁愿低效也不愿背上沉重的维护成本。

这话说出去可能脸红,但总好过程序发布几个月后发现问题,而自己那时却没时间修复、或者已经看不懂以前的代码,要好。

说了这么多,还是怂了

虽然仔细的测试了、虽然没发现什么严重的问题,但还是不敢上架 macOS App Store ,还是自己多用几天,也扔出来让大伙拍拍砖:

下载适配 Swift 3 的图床神器 iPic

那个啥,啥是 iPic ?

哦,这事啊;

iPic 可以自动上传图片、保存 Markdown 链接,给你前所未有的插入体验(图片);支持微博、七牛、又拍、阿里云、 S3 、 Imgur 、 Flickr 等一票图床。总之各种爽,谁用谁知道。

具体看 图床神器 iPic 操作动画

6751 次点击
所在节点    程序员
50 条回复
xjbeta
2016-10-09 09:11:34 +08:00
@quietjosen 话说 swift3 的 GCD 简直赞 精简掉了一大堆复杂东西 能把那本 OC 高级编程扔掉了 2333
quietjosen
2016-10-09 11:57:01 +08:00
@xjbeta 还没接触这部分,期待…
jackisnotspirate
2016-10-09 14:57:41 +08:00
Swift 都这么大了,额,大公司面试还会纠住 oc runtime 那套问来问去
quietjosen
2016-10-09 18:31:44 +08:00
@jackisnotspirate 我觉得个人和小团队更容易迁移,大公司包袱重,不那么容易切换。
milugt
2016-10-09 20:40:45 +08:00
已经订购了 thx.
quietjosen
2016-10-09 22:09:46 +08:00
@milugt 是吗?应该是我🙏你才对,麻烦在 App Store 好评留言吧,先谢 😄
urmyfaith
2016-10-10 16:29:57 +08:00
很久之前就是这样了.

```
The server gave an error during download: 404 Not Found.
```

之前好歹有个有个版本可以用.

然后我今天把之前的低版本删除了.

然后取 app store 里已购项目去安装.
总是提示这个错误.

开不开代理都是.

macOS 10.11.6 (15G1004)
quietjosen
2016-10-10 18:45:36 +08:00
@urmyfaith 哎,我也是醉,先用文章中的链接下载 Swift 3 版本吧。

话说,升 Sierra 不?
urmyfaith
2016-10-10 19:33:00 +08:00
@quietjosen 暂时不想升.

Sierra 就一个 Siri, 没有其他值得升的特性. = =

等把项目发版了再来折腾系统这事...
quietjosen
2016-10-10 20:42:01 +08:00
@urmyfaith 确实,如果有发版本的需求,还是等版本稳定了再升比较稳妥。
先用上面说的 iPic 版本吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX