На работе был случай, когда по тестам всё хорошо, а код не работал (даже не компилировался).

Я тогда работал в локализации, и поэтому у нас было несколько версий одного и того же кода (по одной на каждый язык). Проверили оригинальную версию — всё работает.

Немного поковыряв выяснили, что же пошло не так: в процессе перевода на этапе локализации при каких-то операциях копирования/вставки в файл с кодом прокрались НЕВИДИМЫЕ СИМВОЛЫ. Возможно, проблема была в Notion, но мы не стали искать причину, потому что случай был слишком редкий. Просто занесли информацию про этот случай в документацию. Если возникнет снова, то кто-то может вспомнит.

Что такой невидимые символы и почему они ломали код

Начну с базы. После того, как программа написана на читаемом людьми языке программирования, код должен быть интерпретирован (переведён) на язык машины. Можно сказать, сведён к набору 0 и 1.

В каждом языке программирования строгий набор правил, и их нарушение приводит к тому, что код не переводится в 0 и 1.

Невидимые символы в тексте кода (не в текстах и не в комментариях к нему) останавливают перевод на язык машин, потому что “Страшно! Очень страшно!\u00a0<em>Мы не знаем что это такое</em>, если бы мы знали, что это такое, но\u00a0<em>мы не знаем, что это такое</em>!”

ПОСМОТРЕТЬ на невидимые символы можно здесь https://www.symbolscopypaste.com/invisible-text.html

Невидимы они для человеческого глаза, на самом деле это вполне себе информация, которая заметна интерпретаторам. А браузеры и редакторы текста не отображают такие символы. Принцип примерно тот же, как с эмодзи и прозрачным фоном в .png изображениях.

Отображение невидимых символов как коды