iOS开发还是Android开发?

2018-10-25  本文已影响1084人  随行的羊

原标题:Xcode与Android Studio使用对比浅谈

Xcode是苹果开发人员用于开发苹果App的IDE。
Android Studio是安卓开发人员开发安卓App的IDE。
(以下简称Android Studio为AS)

先感谢这两个工具改变了我们的世界。
我开发iOS,同时也开发Android。在使用Xcode和AS的过程中,逐渐感觉有必要拿出来对比一下:

1、Xcode的Cocoapods与AS的Gradle。

Cocoapods和Gradle是差不多的工具,他们都能管理第三方库,虽然Gradle的功能要多一些。iOS的朋友都知道,Cocoapods是需要自己手动去接入的;而Gradle则是你下载了AS就自动集成的。如果我告诉iOS开发的朋友,假设Cocoapods这个工具是内嵌在Xcode中,而且每次编译都会运行Cocoapods检查库同步,需要耗费一些时间,你可能会骂Xcode很傻逼。然而,这种情况却发生在AS上,每次运行AS项目,它总会用Gradle去运行一些环境和同步第三方库,所以每次都会消耗不少时间,虽然有办法可以让时间少一些,但消耗时间是肯定的,一个Android开发人员消耗时间不算什么,如果全世界的Android开发人员都消耗时间,这是很可怕的。不过,估计AS的IDE开发人员不关心这事。

解决:我主张将gradle剔除出AS,并且不要每次编译都花费时间在gradle上,并将这种情况弄成一个默认的配置。

2、Xcode的控制台与AS的控制台

杂乱、无法忍受,这是我使用AS的控制台所发出的感受。Xcode控制台让人看上去很舒服,它一般只会打印我们用户自己设置的信息,而其他系统信息不会打印,你也可以通过配置一些信息来开启系统日志;当你不运行App的时候,只是单纯地接入手机时,Xcode控制台不会打印任何信息。然而,AS正好相反。我感到困惑的是,为什么我只是接入手机,AS便会自动打印乱七八糟的信息,我甚至不知道那些信息是干什么用的,也许AS的IDE开发人员很喜欢看到这些信息,虽然你可以通过设置去改善这种打印情况,但我还是依然认为App开发人员是不必理会这些乱七八糟的系统日志。

解决:我主张AS剔除乱七八糟的控制台日志,只保留用户打印的日志,而且手机接入AS不会乱打日志。并将它弄成一种默认的配置。

3、Xcode的菜单布局与AS的菜单布局

如果让iOS开发人员转去开发Android,他们一定会崩溃的。因为他们看到的是AS的IDE上密密麻麻的菜单和选项,看似功能很强大,然而可能有70%的菜单,开发人员都不会用到,我怀疑做AS的公司可能内部很多人都基本没用过这款软件,或者没有提出更符合人体科学的体验报告。在Xcode中,情况有很大的区别,它只将常用的几个按钮放上去,底部也只是简单的控制台,对,只有一个控制台!模块安排如此的合理,模块切换如此顺滑,这是Android开发人员所体会不到的。AS这种恶心的布局历史或许可以追溯到Eclipse。

解决:我建议AS的公司应该设置埋点,去收集80%的开发人员经常点按的菜单和选项,只将这些按钮展示在界面上,把一些功能关联的按钮组合在一个位置或者做成菜单。

4、Xcode的info.plist与AS的build.gradle

它们都是配置文件,Xcode采用字典配置表的方式去配置各种信息,并提供了可视化界面来展示这些信息,让开发人员更直观。而AS呢,有一种让人一看就想骂一句:去你丫的。因为build.gradle文件很不友好,它使用的是一种编辑文档,大括号来包含每个配置内容,大括号包含大括号,可读性差是一回事,我甚至怀疑它的性能。然后就是大杂烩,包含了很多东西,我觉得可能AS的IDE开发人员当初在搞这一块的时候,都没有好好想清楚,或者是产品经理有点傻吧。除了build.gradle之外,AS工程还有一些其他乱七八糟的配置文件,估计每个Android开发人员都会消耗时间去学习。

解决:我主张采用一种可视化的配置,不要再继续用大括号包含小括号的方式了。并且可视化的配置包含一些必要的配置信息,废除其他不必要的文件。

5、Xcode的报错信息与AS的报错信息

天呐,这是哪里出错了,它只告诉我gradle同步的时候出问题了,可我不知道具体哪里出问题了。对,有时候你的确找不到AS的出错问题所在,导致你会消耗半天甚至一天的时候来找出问题,尽管最后查出来只是简单的布局文件问题。这让人很郁闷,包括我在内,每次编译出错,我总会虎躯一震,因为每次的错误总是稀奇古怪,有时候连Stack Overflow都解决不了。而Xcode的报错信息则相对友好多了,至少大部分是这样的。可以说,根据Xcode的错误提示,我总能找到并解决问题,而且很快,而且不会像AS那样老是给我用Gradle重新编译,我烦透了。如果你从Git上Down下代码并编译出错时,我觉得你应该做的是,关闭当前的AS,再重新打开;如果还有问题,我觉得你应该clean一下,然后再重新rebuild一下。

解决:我主张AS给出更加友好的报错信息,最好每个错误都能见名知义,gradle和布局错误更要好好地改善。

6、Xcode的断点与AS的断点

AS与傻逼的Eclipse一样,将run和debug分离,如果你点击run按钮,你就没办法进行断点调试;只有当你点击debug按钮时,才能进行断点调试。说到这里,想必iOS开发人员都要笑出杀猪般的声音了,因为iOS只有一个run按钮,点击run按钮,随时随地打断点调试,简单方便。Android开发人员不喜欢使用断点调试是有原因的,因为有时断点没办法打出我想要的信息,到最后只能老老实实通过打印来跟踪问题。这样想想,Eclipse真是毒瘤啊,我就不吐槽IDEA了,同一个爹生产的。

解决:我主张AS将run和debug功能合并,随时随地打断点,并且保证断点的极大可用性。

此外,还有模块化注释的对比,打包的对比,IDE升级带来的工程兼容、版本控制、文件代码搜索、内置模拟器等等问题,就不一一吐槽了。相同点都是Xcode完爆AS,学学Xcode吧。

所以,其实如果你是一名优秀的中高级Android工程师的话,有兴趣你可以玩玩苹果,玩玩iOS,我相信很快你就会成为高级的iOS工程师,Android学习的时间成本太高了,因为除了以上问题外,我还没提到令人头痛的兼容性适配。

另外,如果你是iOS开发人员,其实苹果对我们还算不错,做了一个还不错的IDE给我们。但是这不代表我们停止吐槽,因为Xcode还可以更好。

很可惜,我没办法去开发AS,只能去吐槽AS,人类进步都是靠着发现问题,解决问题。而我只能借希望于吐槽,其实AS的所有IDE开发人员都应该去用用Xcode,然后带着对全球开发人员负责任的态度去改善这这款产品。

-------------------------------我是分割线-------------------------------

2018-10-25

上一篇下一篇

猜你喜欢

热点阅读