能不能先把脑袋理清楚再自吹自擂——评《微信界面卡死超级bug“15。。。。”的来龙去脉》一文

读这篇文章之前,如果对于两端对齐文字排版的了解不是很多,可以先看看这个问题和下面的回答:

为什么像 Pocket、Instapaper、Readability 这些简洁、纯粹的阅读工具却没有两端对齐?


以下是正文


昨天,微信开发团队发表了一篇文章,讲的是他们为微信Android版的对话气泡开发排版算法的经过。这篇文章很火,我看到不少人在下面评论,赞赏微信团队有「工匠精神」,微信团队也以此自夸「我们做事情就是要做到极致」之类。

然而这篇文章在我看来,很多地方都是讲不通的。


一、十分牵强的所谓「用户反馈」

这需求还得得益于之前有几个用户会反馈说「微信 Android 的聊天气泡好像没有iOS的美观,比较死板」。

「好像」?为什么没有 iOS 美观?「比较死板」又是什么意思?你们对于用户反馈是否充分理解呢?后面的文章并没有体现出来。


二、强行「iOS 确实比 Android 好看」

从效果图看,iOS 确实比 Android 好看了些,至少最右边并不会有多余的 padding 这么明显。

「iOS 确实比 Android 好看了些」是怎么从这个对比图中看出来的?

这个图一眼望过去,iOS 的行尾参差不齐,Android 行尾比较整齐,但是右侧有一个空白。可以看出两个系统的排版逻辑是相似的,造成现实差距的原因主要是气泡的宽度不同。「好看了一些」的判断并不合理。或者说,你们选取的对比图不合适。


三、什么叫「又一个问题」

6、又一个问题
那么,iOS 的排版是否就是完美的呢,其实仔细观察并非这样,从上图可以看出,除了 Android,iOS 也会有这种问题,那就是气泡中的文字左右参差不齐。

好吧,你们看出来了 iOS 的排版也不完美,说是「iOS 会有这种问题」,「那就是气泡中的文字左右参差不齐」。这句话我读了半天也没明白什么意思,前面说的是「也会有这种问题」那么就是说,认为 iOS 和 Android 是一种问题,而小标题「又一个问题」是什么意思?到底是一个问题还是两个问题?

而且除了移动端,pc端同样也有诸类问题。结合上面这些对比,确实市面上大部分应用都存在这个问题。通过这次反馈,我们也开始在思考能不能在移动客户端的文字排版上做得更人性化一些,体验上更好?

这一段更加随意,说法成了「诸问题」,而且移动端、PC 端都有。等等,用户一开始反馈的不是「Android 的聊天气泡好像没有 iOS 的美观」么,怎么你们「通过这次反馈」,得出结论是所有系统、所有平台都有问题(到底是什么问题)?这说明,1,你们根本不知道「问题」到底是什么,不知道这个「问题」、那个「问题」、「又一个问题」、「诸类问题」的本质是什么;2,即使你们找到了很多问题,这个问题也跟用户反馈的问题不是一个问题。


四、不严谨的对比实验

一开始我们怀疑,会不会是微信应用本身使用该组件不当的原因造成,而非系统组件的问题。于是乎,在手机上,我们随便找了一些热门app,仔细对比,同样的问题依然存在。

下面就是知乎日报和掘金的文章页截图,以及支付宝的聊天气泡。这里就有一个问题,知乎日报和掘金等 app 的文章页面,极有可能是 WebView,其行为跟原生的 TextView 也是不一样的,本身不能直接比较。也无法由此得出后面的「不是我们使用组件不当,而是组件本身有问题」的结论。


五、拿 Word 对标

下图为 Word 的居中「硬」对齐效果:
…………
下图为 Word 的居中「软」对齐效果:
……

这一段就更滑稽了。首先什么叫「居中硬对齐」「居中软对齐」?好像在 Word 软件里不是叫这个吧。是你们自己发明的概念么?能不能给解释一下?

然后,拿 Word 来跟手机对比也是很不合适的。首先 Word 是专业的文档软件,必然在文字排版下了更多功夫;而且 Word 是在 PC 上运行的软件,可以用更多的计算资源去实现复杂的排版计算;最后,Word 中页面宽度大,一行内文字多,比较容易实现较好的齐头尾效果。所以把 Word 请出来作为对标对象,是没有意义的。


六、而且实际实现很糙啊!

要不是左边的图有一个大大的「优化后」字样,我还以为右边是优化后呢(而且正常人逻辑不都是右边是优化后么)——基本的括号禁则都没有做到,这也叫「优化」?

然后看了一下他们的「规则」

1、最多允许有一个字母字符宽度的来调整字间距;
2、对于标点符号尽量规避不出现在行首;
3、对于英文单词或数字不截断排版。

就这么点规则,可见制定规则的人对于排版的了解还是不够。

「优化」了半天,行末那个孤零零的括号愣是没看见,可见微信团队根本不懂自己在干什么。

通过正则去判断后,如果是可处理的字符串则应用上面的规则进行排版,如果是特殊的字符串,则用系统的 TextView 代理显示。

是不是做到一半了才发现全世界不是所有人都用中文的?然后解决方法是,中文「特供」,太糙了。更不要说最后因为边缘情况,引起了严重的 bug(也就是这个文章产生的背景)。


总结

看完这篇文章,我的感受就是,你们做这个东西的意义在哪里呢?首先你们对于用户的反馈就没理解;然后又像发现新大陆一样发现「所有平台都有问题」(即使自己根本不知道问题是什么);接下来又把 iOS 撇一边,开始在 Android 上造轮子(又是日常「iOS 注重细节,Android 垃圾」的「我比 Google 聪明」系列);最后结果就是,实现的轮子很糙,所谓「优化」连基本的中文排版需求都不能满足,更不要说还引起了大范围的严重 bug。

在目前版本的微信中,我经常会遇到这种诡异的断行行为(之前的版本没有),不知道是不是也是因为你们的「优化」。

本来,我看了这个文章,也只是笑笑。但是浏览过评论区,就觉得很气愤:

太不要脸了!请问本文哪里表现你们做到极致了?能不能先把脑袋理清楚再自吹自擂?

编辑于 2018-10-10

文章被以下专栏收录