Показать сообщение отдельно
Старый 31.12.2014, 10:48   #2
Harter
Бывалый
 
Аватар для Harter
 
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений
(для 2,520 пользователей)
Ответ: Простейшие ошибки, отнявшие много времени

Импер, как актуально.

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. Если выживу (читать: высплюсь), может напишу статейку. *Ушёл портировать дальше.*
(Offline)
 
Ответить с цитированием
Эти 7 пользователя(ей) сказали Спасибо Harter за это полезное сообщение:
ABTOMAT (31.12.2014), Arton (31.12.2014), Igor (31.12.2014), impersonalis (31.12.2014), Phantom (01.01.2015), Randomize (31.12.2014), St_AnGer (31.12.2014)