Примечание переводчика: в перерывах между холиварами про JS предлагаю обсудить несерьёзную, пятничную тему:
Кто не любит эмодзи? Активно используя их в мессенджерах и почтовых приложениях, я решил проэкспериментировать с тем, как можно применить их с умом в повседневной разработке приложений. Хотя поначалу это была просто шутка, эмодзи действительно оказались полезными в ряде случаев. Как так?
Мы, программисты, читаем много текста — будь то код, логи, комментарии к коммитам, документация или что-либо еще. Эмодзи бросаются в глаза, и их гораздо легче найти на простыне текста, чем обычную строку. Быстрее поиск — выше продуктивность. Хотя даже если на вашей продуктивности это никак не скажется, пользоваться эмодзи — весело! Вот некоторые вещи, которые я опробовал на практике:
Эмодзи в комментариях
Например, вам нужно добавить предупреждение в код, наподобие такого:
Я регулярно пишу в коде подобные заметки, но годы опыта показывают, что никто их не читает — в том числе и я сам. Что могло бы сделать комментарий более заметным и привлекающим внимание? Например, эмодзи:
Поскольку эмодзи легче считываются при беглом просмотре текста, они могут оказаться полезными, если вы с коллегами договоритесь помечать ими определенные вещи:
Ну и опять же, даже если у вас нет практического применения для эмодзи в комментариях, общаться ими с товарищами по команде бывает забавно:
// Почему в этом месте программа падает?
// Сложность O(n?)
А поскольку это всего лишь комментарии, шанс что-то сломать очень мал.
Эмодзи в описаниях коммитов
Описания коммитов в основном довольно унылы, но эмодзи разбавляют обстановку. Я придерживался правила "не более одного эмодзи в сообщении" и пока в нем не разочаровался:
Примечание переводчика: в одном месте автор всё-таки нарушил свое правило
Хотя это несерьёзный пример, я хочу повториться — эмодзи улучшают читаемость. Если вы смотрите на огромный список коммитов, что в больших проектах не редкость, найти конкретный коммит в списке становится куда проще. В редакторе Atom от Github даже есть гайд по использованию эмодзи в коммитах.
Эмодзи в коде
Я еще не использовал эмодзи в "боевом" коде, но всё равно считаю, что и там им есть применение. Большинство языков поддерживают использование эмодзи в строках, что может оказаться удобным для оживления логов:
Эмодзи также позволяют объяснить серьезную концепцию из области программирования на легких, забавных примерах:
Как набирать эмодзи
Продуктивность в использовании эмодзи зависит от того, насколько удобно вам будет их набирать. Я пользуюсь глобальным клавиатурным сочетанием Ctrl + Cmd + Пробел
в OS X, которое вызывает меню с эмодзи в большинстве приложений. Оно выглядит вот так (можете судить меня по списку часто используемых символов):
Кстати говоря, в Windows 10 есть встроенная поддержка эмодзи в экранной клавиатуре, которая также показалась мне довольно удобной.
Эмодзи и редакторы
Пользоваться эмодзи весело, но если ваш редактор их не поддерживает — увы. К счастью, большинство современных сред разработки присоединяются к эмодзи-революции. Я пишу эту статью в Sublime Text и там поддержка есть, хотя некоторые символы всё-таки искажаются.
Еще я пользуюсь Visual Studio Code, и это редактор справляется с задачей на ура:
Мой любимый терминал iTerm2 также поддерживает эмодзи. Вот так я отправляю новый коммит:
К сожалению, пока далеко не все программы поддерживают эмодзи. Многие из нас вынуждены работать с легаси-инструментами, в которых и с обычными-то символами бывают проблемы. Но мы можем это изменить. Если вы пользуетесь программой, в которой поддержки эмодзи нет — создайте тикет или отправьте запрос на добавление функционала. И да свершится революция эмодзи!
Примечание переводчика: хабрапарсер абсолютно не дружит с эмодзи, поэтому пришлось использовать картинки и смайлики.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (76)
BasicXP
26.08.2016 13:49+12Есть одна проблемка — нарушает выравнивание в моноширинных шрифтах.
dipsy
26.08.2016 14:25Лет 5 как ушел с моноширинных, ещё ни разу не пожалел. Основной кодинг на с++. Табов для красивого выравнивания хватает, хотя стараюсь особо ASCII-артом в коде не увлекаться, только стандартные отступы в начале строки.
SamoilowAlex
26.08.2016 14:09Автора не смущает, что обычно используется шрифт от 8 до 12 и эмодзи такого размера будет выглядеть как размытое пятно либо нарушать моноширинность текста? И в целом они больше отвлекают от кода и мешают его чтению, насчет UTF-галочек и пр. возражений нет, они элегантно вписываются, в отличии от колобков. И еще, с чего автор оригинала решил, что яйца это вегетарианское блюдо?
impwx
26.08.2016 14:13Википедия:
Вегетарианцы не употребляют в пищу мясо, птицу, рыбу и морепродукты животного происхождения. Молочные продукты и яйца не употребляются лишь частью вегетарианцев.
negodnik
26.08.2016 20:15Молочные продукты и яйца не употребляются лишь частью вегетарианцев.
Части курицы не употребляются лишь частью вегетарианцев.
alexkunin
26.08.2016 15:00+1На ретине выглядит неплохо, а для человека, постоянно работающего с текстом, ретина — маст хэв, я так считаю. На счет остального согласен, слишком мало «тематических» эмодзи, которые реально помогали бы. Пытался подобрать по штуке на десяток хостов (в терминале в PS1 вставить для наглядности), часа два провозился шаря по эмодзи — результат на троечку.
k12th
26.08.2016 15:09Если вегетарианца интересует этика, то диетические яйца не проблема в этом смысле (нет зародыша — нет убийства).
terziele
26.08.2016 15:38+2Все еще проще. В обиходе «вегетарианец» обозначает такого вегетарианца, у которого в рацион входят яйца и молочные продукты, или более научно — лактоововегетарианец. Если же что-то из этого маленького списка отсутствует по каким-либо причинам, то это либо лактовегетарианец(не употребляет яичные продукты), либо ововегетарианец(очевидно, без молочки). Если же вегетарианец не употребляет и это, то он веган. Правда, с веганами все немного сложнее.
k12th
26.08.2016 15:44Я не берусь судить, что значит «вегетарианец» в обиходе, но когда я был лактоововегетарианцем, на меня все смотрели круглыми глазами, когда я ел яйца и сыр: «ты же вегетарианец!!11».
В общем, не опирайтесь на «обиход»: обычно люди в этом не разбираются и строгих терминов не знают.
Правда, с веганами все немного сложнее.
Трудно не согласиться:)
terziele
26.08.2016 15:47>на меня все смотрели круглыми глазами, когда я ел яйца и сыр: «ты же вегетарианец!!11».
Я тебя так понимаю.
alsii
26.08.2016 17:53В Германии многие, кто называет себя вегетарианцами едят рыбу :-) Зато есть такие, которые едят "только плоды. которые сами упали с растений". Ибо срывать из с ветки — это насилие.
torbasow
27.08.2016 22:59+1Сыр ещё разный бывает. Я, например, поллотарианец, то есть ем всё, кроме млекопитающих,— но из-за этого имею проблемы с сыром: не всегда легко понять, сычужный он или микробиальный.
alsii
26.08.2016 17:56+1Многие не едят яйца как раз из-за этических причин. Часть яиц на птицефабриках отправляют в инкубатор, чтобы пополнять поголовье несушек. Нужны для этого только куры, так что суточных цыплят-петушков после сортировки живьем отправляют в мясорубки. Потом из них получается корм для домашних животных. Такая вот технология производства яиц. Не все считают это этически приемлемым.
m1n7
26.08.2016 14:16+17Первая же картинка.
Better delete icons — почему бомба?
Shows an error… — почему ракета?
Почему мердж ветки это такой праздник? Почему тогда конфетти, а не бокал шампанского или кружки пива?
При этом на фоне монохромного текста цветные иконки выделяются, глаз за них автоматически цепляется.
Мозг работает по алгоритму картинка->ассоциация->ничего не понятно->чтение комментария. То есть три лишних этапа. Эмодзи среди текста — это визуальный шум в чистом виде.
Если хочется сделать логи более читаемыми (сейчас не затрагиваем вопросы совместимости) — разукрасьте текст. Или используйте однозначно понятные эмодзи: галочки и крестики.TrogWarZ
26.08.2016 14:38Конкретное соглашение? Автор писал про гайды по комментам в гите (в т.ч. по эмодзи, вот тут https://github.com/atom/atom/blob/master/CONTRIBUTING.md#git-commit-messages) – тогда цепочка сокращается до «картинка –> понятно о чём коммит –> не читать текст пока не нужны детали». Как аналог текстовых тегов "[DOC] Update docs about adding new customer", только легкофильтруемые визуально без чтения. Или выделять только определённые чтобы глаз цеплялся – например, при внесении broken changes.
Интересно как у большинства разработчиков софт это будет поддерживать. Мой iTerm2, например, может и картинки в консоли показывать.
rprokop
26.08.2016 14:23+47Кто не любит эмодзи?
Я! Я этот человек.terziele
26.08.2016 14:43+8В этой нелюбови ты не один!
throttle
26.08.2016 15:20+4Примите меня в свой клуб.
Особенно выбешивают эмодзи на iOS — то, что они третьим языком стоят.
TimsTims
26.08.2016 15:20+1Присоединяюсь. Как разведутся эмодзи, так и полезут у нас переменные в виде эмодзи. Плюс стили эмодзи очень зависят от используемого пака картинок, и т.о. когда один человек привые видеть улыбающийся смайлик в логах = нет ошибок, а такой-же улыбающийся смайлик с зубами = есть некритичные ошибки, то когда он сядет за другой редактор, или другую ОС, и увидит так обратную картинку — это взорвёт мозг, и этот человек пожалеет, что начал использовать эмодзи.
olegchir
26.08.2016 18:04не только переменные надо правильно называть, но и эмодзи. Эмодзи *smile* и *bitter smile* отличаются не только визуально, но и по написанию!
bogolt
26.08.2016 19:35+5Особенно помогают смайлики ( помимо самих эмодзи я не люблю еще и слово эмодзи ) в тот момент когда кусок кода в мессенджере превратился в веселые смайлики там где скобочки.
a_vasyutin
26.08.2016 14:25+9Грепать логи с эмодзи, навреное, очень удобно:)
BasicXP
26.08.2016 14:30-2Эмодзи по задумке автора призваны не заменить текст, а дополнить его. Как грепали по тексту, так и будем. А вот по галочкам/крестикам легче отличить info от error.
eskrano
26.08.2016 14:38+1как на винде то юзать?)
bigfatbrowncat
27.08.2016 13:05Да кому она нужна, эта ваша Венда ;)
Вместе с кучей старых IDE, которые эти милые картиночки не поддерживают…
Fen1kz
26.08.2016 14:38+1Но ведь в статье они "улучшают" не код, а комменты, твиты и названия issues...
Envek
26.08.2016 14:44+3Просто оставлю это здесь: https://github.com/mperham/sidekiq/blob/5de3ef43535148e304c07f80f479d68213c0d20b/lib/sidekiq/manager.rb#L150
Kane
28.08.2016 23:15
jrip
26.08.2016 15:23+1>Описания коммитов в основном довольно унылы, но эмодзи разбавляют обстановку.
Создатели нескучных html 6 добрались до комментариев в коде?
amarao
26.08.2016 16:32+13Я считаю, что эмодзи — это мало. Нужно обязательно приделывать видео с инстаграмма или ютуба. Или писать лайвстрим с камеры разработчика. Что может быть увлекательнее, чем описание коммита с видео лайвстрима в нём?
zip_zero
26.08.2016 16:33+1Да, мы всенепременно должны прочувствовать каждое переживание лирического героя, пока он мучительно писал код.
abyrkov
26.08.2016 16:47-3Мало того, что эмоджами можно помечать… так еще и языки программирования на них есть. Но они преследуют, в общем-то, другую цель — краткость. Вместо унылых console.log'ов веселые, легко запоминающие эмоджи — самое то, для телефонного кодинга.
Что же касается плагинов — то и под Atom есть emoji-code.
barbados
26.08.2016 16:56а как их вводить то под виндой/убунтой в том же VSCode например? и на сколько удобно?
AndreyDmitriev
26.08.2016 18:31+1Зависит от среды разработки. Кое где можно и анимированные гифки использовать — баги помечать, к примеру :)
impwx
26.08.2016 20:00Что это за среда?
AndreyDmitriev
26.08.2016 20:17+2Это LabVIEW. Штука специфическая немного, но поскольку язык G графический, то прямо в код я могу вставлять картинки. Конечно, анимированные гифки я не использую — на них задолбает смотреть, но если там математика какая, то у меня комментарии в в виде самых настоящих формул. Ну или куски доков могу бросать рядом с кодом — это удобно, если поддержку какого-нибудь протокола для специфичной железки кодить.
Alexey2005
26.08.2016 23:21Сразу вспомнилась шутка:
«Проклятье!» — подумал китаец, заучивая сорокатысячный иероглиф. — «А ведь начиналось-то всё с простых смайлов...»
Craftist
27.08.2016 00:26Для всех тех, кто говорит, что эмодзи попортят моноширинность кода:
А что мешает использовать эмодзи только в комментариях? Там же моноширинность не нужна совсем, нечего элайнить.
Ну на крайняк, можно эмодзи моноширинными сделать))
mafia8
27.08.2016 12:11----------
¦ ¦
¦ ---- ¦
¦ ------ ¦
¦ --- ¦
¦ ---- ¦
¦ --- ¦
¦ ------ ¦
¦ ¦
----------
- - - - ¦¦
Ещё можно делать буквы из псевдографики. Крупно и хорошо заметно.
З.Ы. Тег (соде) не работает.
bigfatbrowncat
27.08.2016 13:11Я в институте писал на C#. И писал (будучи физиком) в основном математику. И делал я имена переменных с участием греческих букв. И было это неудобно, но зато красиво.
Здесь, как мне кажется, та же ерунда. Уместное использование картинок в коде (как, например, сирена возле «warning») может его сделать милее глазу. Но вот все остальные операции с текстом явно усложнит, коль скоро на клавиатуре нет кнопки с этой самой сиреной.
Остается только вспомнить про известную клавиатуру студии Лебедева…
FrozenInternet
27.08.2016 14:24Спасибо за лайфхак с экранной клавой винды!
А в коде действительно эможи не нужны. К вышеперечисленным проблемам добавлю то, что в некоторых местах (мессенджерах и пр.) иногда код распознается как эмоджи. Если туда добавить еще свои эмоджи, то читаемость ухудшается во много раз.Craftist
27.08.2016 22:55Так в большинстве (если не во всех) мессенджерах нет моноширинной подсветки. А в некоторых так и вообще пробелы триммятся. Как вконтакте.
FrozenInternet
28.08.2016 00:57Вообще, очень редко пересылаю код в мессенджерах. Но если и приходится, я был бы рад не видеть там ни одной эмоджи.
Насчет тримминга пробелов — да, в этом плане радует скайп.amakhrov
28.08.2016 12:43В скайпе в начале сообщения вводим!!! и дальше текст сообщения с новой строки.
amakhrov
28.08.2016 19:07В скайпе в начале сообщения вводим
!!
и дальше текст сообщения с новой строки. Сообщение форматируется как будто с тэгом<pre>
— моноширинный шрифт, никакой замены скобок на смайлики
Duster
О наболевшем: пожалуй, я бы пометил некоторые участки своего старого кода картинкой с экскрементами…