Самый ужасный проект, какой я только видел.

Прислали мне на поддержку один мобильный AIR проект со словами: «Нужно на 99% то же самое, только надо поменять графику, звуки и тексты.»
Ок, подумал я, дело не хитрое. Но когда я увидел исходники, у меня волосы на голове зашевелились и борода местами поседела. Кажется, в этом проекте сделаны все ошибки, какие только можно сделать и даже больше. Я даже представить не мог, что такое бывает.
Вот что именно я увидел:
— абсолютно все ресурсы находятся в папке src: код, текстовые файлы(в ansi кодировке), графика, звуки, видео, причём всё это перемешано самым неимоверным образом;
— графика, мало того что разбросана по папкам с классами, так ещё по разному организована: часть графики отдельными файлами, а другая часть в swc библиотеках;
— к тому же, графика дублируется. То есть, если один и тот же фон используется на шести экранах, то его jpeg файл существует в шести экземплярах(причём тоже раскиданных по разным папкам);
— графика прицеплена с помощью embed: несколько сотен файлов в одном единственном классе (похоже разработчик про атласы не слышал);
— название ресурсов абсолютно не информативные, как и названия большинства классов;
— наследование используется там, где оно не нужно, а там, где могло бы использоваться, не используется;
— многократное повторение больших кусков кода в однотипных классах;
— про комментирование кода вообще молчу (ладно, не молчу, оно полностью отсутствует);
— в папке cert целая пачка всяких сертификатов, не понятно, какой от чего. Но, разработчик молодец, поместил туда readme файл. Правда в нём написан только пароль от сертификата для ios;
— ну и много всякой ерунды по мелочам.

Я уверен, что это не единичный случай. Расскажите, какие случаи подобного мракобесия попадались вам.
  • +3

Комментарии (35)

0
1 и 2 пункты не противоречат друг другу?
абсолютно все ресурсы находятся в папке src
графика, мало того что разбросана по папкам с классами
+2
В чём противоречие? Не понимаю.
0
А проект случайно не от Мишель из немецкого Disney? Они там любят аутсорсить проекты студентам, а потом нормальным людям про «просто графику поменяй» писать :)
0
Нет, разработчик из СНГ.
+1
абсолютно все ресурсы находятся в папке src
File.applicationDirectory указывает на src, тут удивления не очень понятны, у меня там папка с ресурсами лежит.
графика прицеплена с помощью embed
Посмотри на Kingdom Rush там вся графика во флеш версии по кадрам разбита.
про комментирование кода вообще молчу (ладно, не молчу, оно полностью отсутствует)
Я не пишу комментарии за редким исключением, код должен сам про себя всё рассказывать.

Бывают разные изюминки в разработке, тем более интересней услышать почему так получилось у оригинального автора.
0
File.applicationDirectory указывает на src, тут удивления не очень понятны, у меня там папка с ресурсами лежит.
Я бы понял, если бы в src лежала отдельная папка с ресурсами. Но когда все ресурсы раскиданы по разным папка с классами, это, простите, бред.
Посмотри на Kingdom Rush там вся графика во флеш версии по кадрам разбита.
Не хочу я ни на кого смотреть, я хочу делать так, чтобы было удобно.
+1
Кстати кстати. А потом если перейти на нормальную архитектуру без Embed тэга и включать папку с файлами в билд — получется же, что пакет включит в билд все исходники :)

Я люблю ковырять IPA файлы на предмет «на чем сделано» и часто вижу, что люди включают в билд все подряд. Включая файлы, за которые они заплатили, всякие readme.txt и прочее, где не редко мелькают пароли админские и прочее…
0
Не, в src лежит папка res с ресурсами, вот её и включаем в билд, причём, в ней ещё лежит папка ios, android и pc с графикой и в зависимости от цели ставим галочку только там где нужно.
+4
мне это не понятно :) У меня так

..\src\ для as3
..\libs\ для swc + ane
..\assets\ для ресурсов

Сувать что-то кроме as3 в src меня отучил еще Flash IDE, т.к. он кеширует файлы и еслих много — перестает автокомпилт работать. Когда проблему устраниили — привычка осталась :)

p.s. а для Embed (весьма редко его использую) — у меня условная компиляция задает путь к папке )
0
Поддерживаю. Сам так же делаю.
+2
File.applicationDirectory указывает на src, тут удивления не очень понятны, у меня там папка с ресурсами лежит.
File.applicationDirectory указывает на папку с приложением (бинарником), значит у Вас output folder указана папка src что тоже не есть правильно.
0
Output идёт в bin.

File.applicationDirectory это
The folder containing the application's installed files

Сборка проекта под устройство во Flash Builder выглядит вот так:
0
The folder containing the application's installed files
верно. это именно та папка в которую потом ложится все отмеченное в этом окне галочками. и не имеет значение где эти папки лежат в проекте. это все что попадает в бандл.
а локально это именно папка в которую идет output. я это даже проверил перед тем как написать первый комментарий
0
Всё отмеченное галочками ложится или в bin-debug или в bin-release, в зависимости от сборки, эти папки лежат параллельно src.
Экспортный билд кладётся туда куда ты укажешь.
0
Всё отмеченное галочками ложится или в bin-debug или в bin-release, в зависимости от сборки
подозреваю что бинарник тоже ложиться в одну из папок в зависимости от сборки рядом со всем отмеченным, так же как это будет на девайсе. советую посмотреть как все лежит на девайсе
0
На устройстве всё лежит правильно, как на картинке выше, только в корень добавляется собранная игра и служебные файлы.
0
Из вопиющего: достаточно опытный С++ кодер прочитал умной книжке, что константные методы — это хорошо, пометил все поля классов как mutable и сделал методы константными. Win :D.

А вообще есть же govnokod.ru, там такого добра навалом.
+6
Самый ужасный проект, какой я только видел.
У меня такое чувство, когда свой код открываю.
0
Удачи тебе с проЭктом :)
+1
в клубе анонимных жертв чужого кода:
— здравствуйте, я Петя и я пострадал от чужого проекта
— (все хором) привет, Петя!
— этот проект ужасен, в нем весь код в одном классе, функции на девять страниц, переменные названы a,b,c и нет ни одного коммента. С тех пор как мне он достался я не могу нормально спать
+8
В чем прикол обсуждать то, что сделано не тобой, тем более когда не известна предистория создания этого?
Может лучше написать материал о ток как правильно делать, а не кто-как неправильно делает.
Зачем «обсирать» труд других людей? Покажите свой!
  • osa
  • osa
0
Покажите свой!
Смотрите, я ничего не скрываю. На этом сайте я публиковал пару уроков. Если интересно, можете посетить мой скромный гитхаб.
Может лучше написать материал о ток как правильно делать

Можно, могу. Но всё уже давно написано до меня…
+2
Главное, чтобы работало норм )
0
Категорически не разделяю этот подход.
Чтобы всё хорошо работало, нужно, чтобы всё было хорошо устроено внутри.
+1
Поддерживаю.
Мне как-то дали один проект социалочки на флеше. С просьбой «добавить пару новых абилок».
Ну думаю, почему бы и нет.
Открыл код сервера… и слезы на глаза навернулись. Весь сервер был написан на Java, в одном классе. Примерно 10000 строк.
Всего в классе 4 метода. Открытие, закрытие, подключение к БД и один ГодМетод, в котором было ВСЕ.
Это даже не хардкод… это Элита хардкода, Супермен хардкода. Такого я больше никогда не видел.
Клиент был в похожем стиле.
И ведь что характерно работало. Пару лет это произведение приносило доход.

Так что подход «Главное, чтобы работало» это плохой подход.
Игра могла и дальше приносить доход или больше его приносить если бы ее можно было эффективно развивать.
0
Сурьёзные программисты ) Там же смайлик )
.
А так, по некоторым пунктам можно допустить некоторые условности.
Например, что битмапы не в атласах — изначально проект мог не предполагаться на мобильные, или приложение не требовательно к скорости загрузки ресурсов.
Часть графики в SWC — возможно это мувики с анимацией. Не всегда «дешевле» сделать/освоить блиттинг, например.
0
Проект точно изначально делался под мобилы.
В swc есть как мувики, так и отдельные изображения.
0
Мой привычный код XD
Начинаю проект с мыслью все сделать по уму, а под конец все подперто десятками костылей что даже сам удивляюсь как оно работает и после добавление любой фичи делаю копию чтобы нерухнуло).

Следующий проект точно будет по уму XD. Но правда с архитектурой папок у меня норм.
+5
Это вообще какой-то ад, поставь себе тот же svn, нельзя так.
0
я хоть не работаю с svn, но согласен на 146%
0
хм, а там можно потом откатится если что?
0
Конечно, ты можешь посмотреть кто, когда и что делал плюс откатится к нужному состоянию.
0
Ухты, спасибо буду пользоваться.
0
Да еще и несколько веток разработки иметь, если необходимо, с обменом кода между ними.
0
Ага, понял. Благодарю.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.