[Android每日精彩]我不使用Android DataBinding的四个原因

4 Reasons I’m Not Using Android Data Binding

为什么我依然使用ButterKnife?

声明:这篇文章基于个人经验和一些容易被反驳的因素,你可以对我的观点保持怀疑态度并保持自己的见解。

android databinding.png

1.专家不推荐使用

JakeWharton是ButterKnife的作者,他直接回应了这个问题:in this GitHub question.

DataBinding可能在大多不重要的案例中很有用,但是它并没有什么创新,当项目复杂度增加时,他就会像其他平台的解决方案一样带来痛苦,比如XAML。该库扩展到了高级案例,因为它强制你在准确的地方绑定你的逻辑。

确实,我同意这里两个观点:

  • 它没有扩展好
  • 商业逻辑应该属于代码中

2.它会导致你创建很多“面条式代码”(控制结构复杂,混乱,难以理解,扭曲纠结,一般有没有经验的程序员或者长期频繁修改的复杂程序导致)

一旦我们开始实现复杂的布局,使用DataBinding这种方案将会增加越来越多的复杂性。

首先我们可能面临的问题有:

  • 布局中的include 需要你给每个都传数据源
  • 或者你可能想在你的include中创建不同的数据源
  • 同样的问题出现在ViewStubs 中
  • 使用Picasso加载图片时需要你实现一个自定义的databinding adapter。而且你没法模拟或者依赖注入

而且我们可能会做更多复杂的事情,比如:

  • 在布局文件中描述逻辑
<TextView
   android:text="@{user.lastName}"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
  • 添加Lambda表达式监听接口
android:onLongClick="@{(theView) -> presenter.onLongClick(theView, task)}"
  • 在布局文件中导入类
<data>
    <import type="android.view.View"/>
</data>

一部分逻辑在代码里,还有一部分逻辑在布局中?这很快将变为噩梦,或者像面条式代码一样混乱。

3.并没有比ButterKnife提供的更多

ButterKnife有几点多棒的特性:

  • 资源绑定
  • 视图列表
  • 多个监听绑定

资源绑定在我们使用自定义控件创建一些高级的东西的时候尤其有用,我们需要获取Dimens或者Drawables.

当我们有一系列视图来表示同样的行为时,比如一系列EditText或者Buttons,视图列表和多监听绑定会帮我们节省很多代码。

使用DataBinding的话,你将无法享受这些功能。

4.如果有针对不同屏幕尺寸的不同布局,这将导致你复制数据绑定的代码并保持两个布局都更新。

我的很多项目中,都需要支持API16,但是我们想给+21的用户更高级的UX,有时就得为不同API复制布局。
设计变更导致的布局更新就很烦人了,如果还要同时保持DataBinding的改变,那简直就是痛苦了。

那为什么你会想要使用DataBinding呢?

1.我可以开发的更快速

长期来看,开发的快并非一定是好事。当我们开发app时,我们进行的是马拉松,而不是短跑。如果抓住市场的机会比做出一个长期稳定的项目更重要,那么使用DataBinding来快速完成任务是有用的。

2.它出现了!

没有第三方依赖库是好事儿!如果所在的大项目已经遇到了方法数限制了(Android的65535),那么开发的Leader不会想在加入一个新的库到里面的。

3.我在使用MVVM模式

如果你想用观察者模式合理的实现MVVM,DataBinding将帮你在视图中实现观察者模式。

如果你使用DataBinding仅仅是为了简化findViewById这样的代码,那么我认为,还不如使用ButterKnife。
如果你做的是完全的MVVM,那DataBinding确实是很好的方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,398评论 25 707
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,701评论 22 664
  • 一个刚入行半年的菜鸟安卓开发人员,始终有一颗不安分的心。mvvm框架是我在学习vue的时候才知道的一种新型架构。公...
    sakasa阅读 4,245评论 5 22
  • 文学真实论*(上)[波兰]罗曼·英伽登撰张旭曙译作者单位:复旦大学中文系原发刊物:《中国美学研究》第五辑,朱志荣主...
    你他娘的真是个天才阅读 649评论 0 2
  • 归去来,归去来,放歌一曲到东海。 难酬奔波人间道,胡不归去作渔柴。 归去来,归去来,来去两岸声欸乃。 白云一片浮生...
    d03e056874dc阅读 250评论 0 1