Кодировки — это UTF-8, UTF-16, UCS-2. Они определяют, как записать конкретные код-поинты (номера символов) в байты. А Unicode — это как раз набор символов и частей символов, рекомендации по их сочетаемости и отображению, по тому как работать с разными системами письма.
JSON — это последовательность байтов. Байты представляют из себя строку текста в в UTF-8. В которую закодированы вложенные дикты, листы, инты, флоаты, строки и наны. Пример:
Не существует хорошего кода. Либо он бестолковый и никому не нужный, но нравится автору, либо оброс кучей обременений совместимости и техническим долгом. Возможно, где-то его пишут, но уж точно не в опенсорс.
Иногда случается такое, что следование правилу вынуждает делать лишние движения, которые в данном случае кажутся неэффективными. Даже в этом случае пренебрегать правилом нельзя. Пренебрежение правилом компрометирует правило.
Как только у тебя появляются какие-то знания, которые относится к работе, зафиксируй их куда-нибудь. Это должно стать привычкой. Не оставаляй информацию в истории личных чатов и в своей голове. Пиши суть, детали и причинно-следственные связи. Пиши в нескольких местах. Пиши в комментах в коде, в коммит-месседжах, в тикетах и в вики.
Ревьюер (обычно) не несет ответственности за код. Его задача — помочь. Если помогать долго и трудно, никто это делать не будет. Посмотрят поверхностно на код-стайл и махнут рукой. Поэтому надо сделать так, чтобы ревьюер мог легко и комфортно вникнуть в суть изменения. Поэтому:
Испрользуйте ровно тот тип, который на самом деле имеется в виду. Код должен четко выражать ваши намерения и ожидания. Не давайте слишком много гарантий на параметры и возвращаемые значения. Много гарантий — больше проблем для вас как автора функции и больше вероятность изменения интерфейса.
Простые правила проще выполнять и контролировать. В простых правилах нет разночтений и субъективных суждений. Ради простоты можно пожертвовать точностью правила. Например, запретить чуть больше, чем нужно, если это не сильно мешает.
Правила нужны не только для того, чтобы код был читаемым или качественным. Читаемость, в конце концов, — субъективная характеристика. У всех свои представления о прекрасном.
Сетевые скорости и битрейты аудио и видео измеряются в битах в секунду с десятичными приставками. 100 Мбит/с — это 100000000 бит в секунду. Низкоуровневые сетевые протоколы никак не привязаны к байтам, октетам и, тем более, степеням двойки. Оттуда все и пошло.