Ответ: Простейшие ошибки, отнявшие много времени
Импер, как актуально.
Unity, С#. Четвёртая ночь без сна. Портирую относительно здоровенный проект с серверной частью на Flash (не то, чтоб я некрофил - это причуды заказчика). Пофиксить compile/post processing errors в связи со switch'ем на другую платформу, понатыкать platform define'ов и разных специфических для платформы workaround'ов (в т.ч. переписать половину "не поддерживаемых" во Flash .NET фич) - это, как оказалось, всего 20% работы/времени. Остальные 80% - это лютый, неистовый, бессмысленный и беспощадный дебаг в самописную "консоль" в виде текстового поля в canvas'е (только хардкор!). В голове крутилось ехидливое "Build once, run everywhere" (ога, если бы...). Дело в том, что понять, что что-то сломалось можно только в runtime непосредственно в билде. При этом "отваливаются" совершенно рандомные, базоыве/простые методы без каких либо признаков (ни error'а, ни exception'а). Например, я совсем не ожидал такого предательства от ToString():
ToString() - работает, ToString("N0") - ВСЁ, код дальше не выполняется. Просто не выполняется и всё тут. То есть Flash как бы говорит мне: "Счастливого дебага, сука!"
Или вот сегодняшняя ночь:
Перепробовать все JSON парсеры для C#
@
Узнать, что ни один не совместим с Flash'ом
@
Полностью переписать тот, который уже используется в проекте (сохранив интерфейс так, чтобы не переписывать все обращения к нему)
@
Сбилдить
@
Охренеть от результата (вкратце, строка "a" == "5755", а строка "e" == "115101115115105111110671111111107105101")
@
Долго ломать голову что это за кодировка/шифр и экспериментировать, в итоге обломавшись
@
Отрефакторить всё так, чтобы избежать использования перегрузки операторов и неявных преобразований, т.е. сделать отдельную обработку для каждого типа данных
@
Снова получить неведомые шифры, но уже разглядеть в них ASCII коды вместо символов
@
Реплейснуть 7 строк вызовом нового метода в одну строку (char to string)
@
Осознать, что всё бы работало и так если бы я догадался сделать последний шаг в САМОМ НАЧАЛЕ
@
Улететь в космос от мощности, сопоставимой со взрывом атомной бомбы, создавшейся в результате взрыва чуть ниже пояса
Ну и таких кейсов овер9000. Если выживу (читать: высплюсь), может напишу статейку. *Ушёл портировать дальше.*
|