
Самый ужасный проект, какой я только видел.
Прислали мне на поддержку один мобильный AIR проект со словами: «Нужно на 99% то же самое, только надо поменять графику, звуки и тексты.»
Ок, подумал я, дело не хитрое. Но когда я увидел исходники, у меня волосы на голове зашевелились и борода местами поседела. Кажется, в этом проекте сделаны все ошибки, какие только можно сделать и даже больше. Я даже представить не мог, что такое бывает.
Вот что именно я увидел:
— абсолютно все ресурсы находятся в папке src: код, текстовые файлы(в ansi кодировке), графика, звуки, видео, причём всё это перемешано самым неимоверным образом;
— графика, мало того что разбросана по папкам с классами, так ещё по разному организована: часть графики отдельными файлами, а другая часть в swc библиотеках;
— к тому же, графика дублируется. То есть, если один и тот же фон используется на шести экранах, то его jpeg файл существует в шести экземплярах(причём тоже раскиданных по разным папкам);
— графика прицеплена с помощью embed: несколько сотен файлов в одном единственном классе (похоже разработчик про атласы не слышал);
— название ресурсов абсолютно не информативные, как и названия большинства классов;
— наследование используется там, где оно не нужно, а там, где могло бы использоваться, не используется;
— многократное повторение больших кусков кода в однотипных классах;
— про комментирование кода вообще молчу (ладно, не молчу, оно полностью отсутствует);
— в папке cert целая пачка всяких сертификатов, не понятно, какой от чего. Но, разработчик молодец, поместил туда readme файл. Правда в нём написан только пароль от сертификата для ios;
— ну и много всякой ерунды по мелочам.
Я уверен, что это не единичный случай. Расскажите, какие случаи подобного мракобесия попадались вам.
Ок, подумал я, дело не хитрое. Но когда я увидел исходники, у меня волосы на голове зашевелились и борода местами поседела. Кажется, в этом проекте сделаны все ошибки, какие только можно сделать и даже больше. Я даже представить не мог, что такое бывает.
Вот что именно я увидел:
— абсолютно все ресурсы находятся в папке src: код, текстовые файлы(в ansi кодировке), графика, звуки, видео, причём всё это перемешано самым неимоверным образом;
— графика, мало того что разбросана по папкам с классами, так ещё по разному организована: часть графики отдельными файлами, а другая часть в swc библиотеках;
— к тому же, графика дублируется. То есть, если один и тот же фон используется на шести экранах, то его jpeg файл существует в шести экземплярах(причём тоже раскиданных по разным папкам);
— графика прицеплена с помощью embed: несколько сотен файлов в одном единственном классе (похоже разработчик про атласы не слышал);
— название ресурсов абсолютно не информативные, как и названия большинства классов;
— наследование используется там, где оно не нужно, а там, где могло бы использоваться, не используется;
— многократное повторение больших кусков кода в однотипных классах;
— про комментирование кода вообще молчу (ладно, не молчу, оно полностью отсутствует);
— в папке cert целая пачка всяких сертификатов, не понятно, какой от чего. Но, разработчик молодец, поместил туда readme файл. Правда в нём написан только пароль от сертификата для ios;
— ну и много всякой ерунды по мелочам.
Я уверен, что это не единичный случай. Расскажите, какие случаи подобного мракобесия попадались вам.
- +3
- iLLuzor
Комментарии (35)
Посмотри на Kingdom Rush там вся графика во флеш версии по кадрам разбита.
Я не пишу комментарии за редким исключением, код должен сам про себя всё рассказывать.
Бывают разные изюминки в разработке, тем более интересней услышать почему так получилось у оригинального автора.
Не хочу я ни на кого смотреть, я хочу делать так, чтобы было удобно.
Я люблю ковырять IPA файлы на предмет «на чем сделано» и часто вижу, что люди включают в билд все подряд. Включая файлы, за которые они заплатили, всякие readme.txt и прочее, где не редко мелькают пароли админские и прочее…
..\src\ для as3
..\libs\ для swc + ane
..\assets\ для ресурсов
Сувать что-то кроме as3 в src меня отучил еще Flash IDE, т.к. он кеширует файлы и еслих много — перестает автокомпилт работать. Когда проблему устраниили — привычка осталась :)
p.s. а для Embed (весьма редко его использую) — у меня условная компиляция задает путь к папке )
File.applicationDirectory это
Сборка проекта под устройство во Flash Builder выглядит вот так:
а локально это именно папка в которую идет output. я это даже проверил перед тем как написать первый комментарий
Экспортный билд кладётся туда куда ты укажешь.
А вообще есть же govnokod.ru, там такого добра навалом.
— здравствуйте, я Петя и я пострадал от чужого проекта
— (все хором) привет, Петя!
— этот проект ужасен, в нем весь код в одном классе, функции на девять страниц, переменные названы a,b,c и нет ни одного коммента. С тех пор как мне он достался я не могу нормально спать
Может лучше написать материал о ток как правильно делать, а не кто-как неправильно делает.
Зачем «обсирать» труд других людей? Покажите свой!
Можно, могу. Но всё уже давно написано до меня…
Чтобы всё хорошо работало, нужно, чтобы всё было хорошо устроено внутри.
Мне как-то дали один проект социалочки на флеше. С просьбой «добавить пару новых абилок».
Ну думаю, почему бы и нет.
Открыл код сервера… и слезы на глаза навернулись. Весь сервер был написан на Java, в одном классе. Примерно 10000 строк.
Всего в классе 4 метода. Открытие, закрытие, подключение к БД и один ГодМетод, в котором было ВСЕ.
Это даже не хардкод… это Элита хардкода, Супермен хардкода. Такого я больше никогда не видел.
Клиент был в похожем стиле.
И ведь что характерно работало. Пару лет это произведение приносило доход.
Так что подход «Главное, чтобы работало» это плохой подход.
Игра могла и дальше приносить доход или больше его приносить если бы ее можно было эффективно развивать.
.
А так, по некоторым пунктам можно допустить некоторые условности.
Например, что битмапы не в атласах — изначально проект мог не предполагаться на мобильные, или приложение не требовательно к скорости загрузки ресурсов.
Часть графики в SWC — возможно это мувики с анимацией. Не всегда «дешевле» сделать/освоить блиттинг, например.
В swc есть как мувики, так и отдельные изображения.
Начинаю проект с мыслью все сделать по уму, а под конец все подперто десятками костылей что даже сам удивляюсь как оно работает и после добавление любой фичи делаю копию чтобы нерухнуло).
Следующий проект точно будет по уму XD. Но правда с архитектурой папок у меня норм.