我们来聊聊表情符号吧。
表情符号无处不在。从推特到脸书聊天,它们不仅被牛津大学评为2015年度词汇,甚至还出现在一部糟糕的电影中。但是,除了短信和即时通讯之外,表情符号还能用在什么地方呢?比如代码注释,甚至是Git提交信息中?让我们一起来看看如何才能更好地利用这些有趣的小图片。
与人们的普遍认知相反,表情符号其实已经存在相当长一段时间了。第一个表情符号诞生于1999年,由日本NTT Docomo公司的电信规划师栗田穰隆(Shigetaka Kurita)设计。最初,这些小图案仅在日本使用,直到十年后才被添加到Unicode字符集中。2010年10月,Unicode 6.0标准发布,其中包含了722个表情符号。不过,它们并没有被分配到专属的字符块中,而是分散在Unicode的各个字符表中。谷歌和苹果的多位工程师花费了数年时间才说服Unicode技术委员会将它们加入Unicode。如今,表情符号已成为人们生活中不可或缺的一部分。
这些小小的表情符号甚至还有一些奇特的现象和有趣的小知识。例如:表情符号在不同的平台上显示的内容可能有所不同。正因如此,在苹果产品上,日历表情符号始终显示7月17日(这一天代表了2002年iCal的发布日期)。这导致人们“错误地”宣布7月17日为世界表情符号日。
表情符号在不同平台上的呈现方式也略有不同,其含义也可能略有差异。以表情符号为例astonished face,第一个是苹果的呈现方式,第二个是三星的呈现方式。
你觉得苹果对这种感觉的处理方式比三星要温和一些吗?
有时情况则恰恰相反。在这个例子中,三星对此事的解读pouting face似乎不如推特的解读那样“愤怒”。
好了,历史就讲到这里,让我们开始编码吧。
Git提交消息中的表情符号
GitHub 在2012 年的一篇博文中推广了其生态系统内的表情符号支持,这要归功于他们现在广为人知的:快捷键“”。所以现在,假设你想fox face在 GitHub 的某个地方(提交信息、问题或 gist)使用表情符号 🦊,你只需使用“” :fox_face:,GitHub 就会自动识别它。
使用快捷方式是避免表情符号无法识别的巧妙方法。这样既不会造成任何功能故障,即使表情符号无法正确显示(或显示效果不佳),信息仍然清晰可读。
表情符号也能让承诺信息更加清晰明了。比较以下两段文字:
- Fix editing user not being saved to the database
- Cleanup code
- Add the ability to edit a user
- Fix bad function callback on API request
- 🐛 Fix editing user not being saved to the database
- 📝 Cleanup code
- ✨ Add the ability to edit a user
- 🐛 Fix bad function callback on API request
您可以立即看到哪些错误得到了修复,哪些新功能得到了添加。
在不支持表情符号的平台上,这段文字会被解读为:
- :bug: Fix editing user not being saved to the database
- :memo: Cleanup code
- :sparkles: Add the ability to edit a user
- :bug: Fix bad function callback on API request
虽然不如以前有趣,但仍然完全可以读下去。
整个科技行业都接受了这些快捷方式,并且远远超越了简单的表情符号。当然,用🐛来描述修复bug挺不错的,但试试:trollface:在Slack或Redmine里用它。瞧,你瞬间就成了新晋潮人。不过别太频繁地用,不然你会显得很土气。
我的建议是:在 Git 提交中使用表情符号没有问题,但最好使用短代码。另外,我建议不要过度使用表情符号,最好只用几个来表示主要操作(例如 bug 修复、新功能、样式调整、代码清理等等)。
如果您不确定从何入手,或者想为您的团队提供一些指导原则,我强烈推荐 Carlos Cuesta 的Gitmoji。它甚至还自带一个非常实用的命令行界面(简称为 Gitmoji ),可以帮助您通过交互式界面编写提交信息。Gitmoji 甚至被 Atom 的贡献指南gitmoji-cli所采用。
表情符号在代码中/作为代码
理论上,你可以在代码中使用表情符号,但这样做时务必格外小心。表情符号在 JavaScript 中会被解释为字符串,但它们的长度可能变化不定。
"🐼".length // returns 2
"🇨🇦".length // returns 4
别忘了表情符号是可以连接的(就像 Fira Code 让你拥有那些性感连字一样)。这样你就能得到肤色修饰符(分别叫做EMOJI MODIFIER FITZPATRICK TYPE-1、-2、-3、和。我可没开玩笑)。更棒的是,如果你把以下表情符号组合起来:👨、👩 和 👧,就能得到一整套 👨👩👧 表情!让我们用 JavaScript 实现一下。-4-5-6
"👨👩👧".length // returns 5
为什么是 5?因为 5 不仅代表组成该表情符号的每个部分的长度,还使用了两个ZWJ零宽度连接符作为“粘合剂”。你甚至可以亲眼看看:例如,在 VS Code 中复制/粘贴该表情符号,你需要按五次方向键才能选中它。
我的建议:不要在代码逻辑中使用表情符号。就这么简单。但你仍然可以在视图中使用它们。网页浏览器拥有强大的表情符号显示功能,并且知道如何回退到能够显示“点赞”图标的字体。但是,在视图中使用表情符号短代码解析器时要格外小心,尤其是在网站上显示代码块的情况下。它可能会误导你,将表情符号解析h:m:s为其他符号hⓂ️️s,从而使代码块失效。
代码注释中的表情符号
那么代码注释呢?到处都是表情符号!据我所知,在注释中使用表情符号不会破坏任何东西。现代代码编辑器(Atom、VS Code、Sublime、IntelliJ 等)都对表情符号提供了强大的支持。它们甚至可以用来突出显示某些内容。
/**
* WARNING: Do NOT change this file.
*/
与以下方面相比:
/*
* 🛑 WARNING: Do NOT change this file.
*/
最后想说的
表情符号是一把双刃剑。它们让我们能够以快捷有趣的方式表达复杂的情感。它们是我们在IRC鼎盛时期大量使用的表情符号的延伸。它们可以用作装饰,为原本平淡的句子增添情感。它们也可以用作标记,使某些内容更加突出,甚至可以单独使用,成为完整的沟通工具。
然而,由于这些符号在不同平台上的设计和解读并不统一,它们可能会造成误解。沟通依赖于传播媒介的稳定性。如果发送者和接收者之间符号的改变,信息就无法传达。作为字符,它们也需要置于特定的语境中。这就是为什么有些符号需要更改的原因。例如,表情符号:gun:🔫以前代表一把真枪,现在变成了水枪。
不过说到代码,我非常赞成使用表情符号。不是直接在代码里用,正如我之前所说,而是用在注释和提交信息里。它们能美化所附信息,因为它们通常主要用作指示。而且借助短代码,你可以放心使用它们,不用担心会破坏代码。
如果你想了解更多关于表情符号的知识,你应该看看莫妮卡·丁库列斯库的作品,尤其是她的演讲。
我还推荐安吉拉·古兹曼(Angela Guzman)关于苹果表情符号制作过程的文章。安吉拉在文中写道,2008年她实习期间,和她的导师雷蒙德(Raymond)一起设计了500多个表情符号。这段经历改变了她的人生,如今,她的作品已被数百万人使用。
所以,尽情使用表情符号吧,这样可以提高代码的可读性,也能打破枯燥乏味的代码屏幕带来的单调感。😄
文章来源:https://dev.to/fbnlsr/lets-talk-about-emojis-2788

