阅读 2556
选我还是选她——论xib/storyboard流还是纯代码流

选我还是选她——论xib/storyboard流还是纯代码流

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

前言

我在一个Swift开发群,平时大家会吹吹水,讨论一下开发问题。

每次我们谈到iOS开发的UI问题的时候,总是会为使用xib/storyboard,还是使用纯代码开杠。

Snip20211013_43.png

这里我想把这个问题抛出来,并说说我个人的看法和观点。

我知道一旦开始讨论这个话题,可能无意就会陷入开杠的局面,不过还是想聊一下。

声明我的立场:我是纯代码流

首先我要说的是,我是一个学习过xib/storyboard拖拉进行UI搭建的人。

我是先会的使用xib/storyboard写UI,然后才学着用纯代码写UI的。

按道理说,这种技术一般都是先接触先成为习惯,应该更喜欢使用xib/storyboard流啊。

但是当我自己在xib/storyboard和纯代码体会之后,我基本就走了纯代码流?

这是为何呢?

网上说了很多xib/storyboard的不好,抑或纯代码的好。我有一个比较物质的原因:

xib/storyboard给我的感觉就是比较费屏幕,特别是当我在公司只有一个iMac并且不能外接显示器的时候,xib/storyboard的拖拉就感觉有点不能大开大合了。

抑或当你在使用13寸的MacBook pro做开发的时候,xib/storyboard会让你觉得屏幕根本不够用。

买个显示器总是要开销的吧,既然可以把这部分钱省下来,何乐而不为呢?

xib/storyboard流的优劣势

当然,有句话说的好,存在即合理

xib/storyboard流当然有它的优势

  • 开发效率高,因为基本上不写代码了,纯粹的拖拉控件,只要熟悉操作与控件,对于一个UI的编写肯定是比纯代码快的。

  • 开发的UI既见既所得,对于初学者,去掌握控件的特性是非常好的学习过程,这也是我先学的xib/storyboard流,之后才转入纯代码流的。

xib/storyboard流的劣势与面临的挑战:

  • xib/storyboard流难以维护,早期的时候在Git管理上容易冲突,当然这个优化好提交规范可以规避,而真正困难的是持续维护成本:

    1. 开发人员离职,或者需要交接时,xib/storyboard会成为接手者的老大难,因为不了解逻辑与业务,修改xib/storyboard常常是牵一发动全身,整个界面都炸锅

      image.png

    2. 当业务持续进行时,UI也会随之变化,进而需要修改xib/storyboard,很多时候修改xib/storyboard需要花的时间与人力成本会比较多。

而反观纯代码流,只要代码写的不太凌乱,有说明文档或者注释,理解一个UI并不算太困难,而且可以很快上手并跟进业务修改UI。

  • 未来的主流还是纯代码写UI,无论是从跨平台的Flutter,还是SwiftUI,我们可以看到声明式的代码流才是未来开发的主流,如果你做开发需要跨端,纯代码的这种习惯可能更适合。
FlutterSwiftUI
f6cba7961a2ede607d760210626766d8.jpege40b88d385a48fd89479bf8f3fe73bee.jpeg

大佬一些观点

每次聊到xib/storyboard流还是纯代码流的时候,喵神的观点和文章总是会被人拿出出来反复提及:代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧

大佬都发话了,你还在这里瞎掰扯啥?

不过,我觉得吧,技术文章的引用与学习也是要分场合与时间的,这篇最早发布的与2013年,当然最近更新一次:

image.png

这篇文章也是我入门xib/storyboard基础文章,但是目前的编写App的环境与思路都已经有了很大的变化,如今在这个需求快速迭代的年代,xib/storyboard真的快不起来了。

另外,喵神是比较专注与iOS开发这块,在目前我们身处的环境,我们不可能做到iOS一路走到底。

所以大佬好的技巧与建议要听,但是也要结合自己的工作与开发情况。

纯代码流

因为说过xib/storyboard流的优劣势,所以纯代码流的优劣势就不用说多。

唯一提及一点就是Apple系统层级的API真的不够好用,虽然Apple已经优化好多,但是还是建议使用SnapKit或者Masonry。

从某种意义上说,纯代码流失去了这个两个框架,基本上也就失去了意义。

建议大家直接看SnapKit的文档,这个文档覆盖很全面:Snapkit - Documentation

参考文档

代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧

再看关于 Storyboard 的一些争论

Snapkit - Documentation

总结

小孩子才做选择,成年人当然是全都要。

技多不压身,其实在xib/storyboard流还是纯代码流的选择上,我个人觉得还是看使用的场景,比如是写快速Demo,对UI要求不高的话,可以使用xib/storyboard流,再比如自己个人项目,爱怎么折腾就怎么折腾,只是可能在公司项目中需要注意一下。

最后关于xib/storyboard流还是纯代码流,我想说的是从心,怂就对了

别人说别人的,我用我的,自己开心就好。

你说的都对,Who TM Cares

u=1497046269,2851594013&fm=26&fmt=auto.webp

关于封面图

源自于《白色相簿2》的人物角色,虽然我没有确定,应该是深崎暮人作画,《白色相薄2》的作者丸户史明和深崎暮人在另一部作品有合作——《路人女主的养成方法》。

《白色相簿2》是一部典型的三角恋爱故事,在这里xib/storyboard流还是纯代码流也是二选一。

我们下期见。

欢迎大家留言说说你是xib/storyboard流还是纯代码流,以及它们的优劣势吧。

欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章。

文章分类
iOS
文章标签