Android приложение фейсбука превышает лимит в 65000 методов

luna89

http://www.facebook.com/notes/facebook-engineering/under-th...
65000 методов это как-то дофига, как можно превысить такой лимит?

yroslavasako

Да легко. В яве, например, не бывает дефолтных значений аргументов. Хочешь схожую функциональность - говнокодь перегрузку методов или вообще кодогенерируй их

agaaaa

Строго говоря в CLR тоже так. Просто C# и VB это скрывают за приятным синтаксисом.

yroslavasako

Строго говоря в CLR тоже так. Просто C# и VB это скрывают за приятным синтаксисом.
А он умеет перегружать методы с дефолтными аргументами? Кодогенератор скалы, например, не умеет, из всех перегруженных методов только один может иметь параметры по умолчанию.

kokoc88

65000 методов это как-то дофига, как можно превысить такой лимит?
Очень просто. Это следствие того, как устроена работа в Facebook: жёсткие графики релизов, в которые нельзя не попасть, натянутые на команду алгоритмистов, а не программистов; и всё это помножено на костяк из разработчиков на PHP. Как следствие - полнейшее отсутствие рефакторинга и минимальное качество кода. В этом весь Facebook: вместо плавной замены решений на PHP пишут компилятор, вместо рефакторинга кода играют в хакеров и копаются в исходниках Андроида.
P.S. Оказалось, что я немного продублировал первый комментарий к посту по твоей ссылке.

6yrop

жёсткие графики релизов,
Прикинь, да, надо экономить на вспомогательных вещах. ;) Поддержка дубликата базы. Дублирование решений задач из-за опору на code review. Всё это не выживает в жестких политических условиях. :smirk:
А тем не менее у Фейсбук неоспоримый вин. :) Выводы делает каждый сам, исходя из своей философии.

lubanj

http://habrahabr.ru/post/230665/
Прикол в том, что одно только подключение библиотечки Google Play Services уже отжирает 20к методов :)
А у фейсбука на сколько я помню, большая часть кода была получена путем автогенерации из java script. Вот в этом месте куча методов и возникает.
п.с. а вот и перевод оригинальной статьи http://habrahabr.ru/post/171623/

karkar

65000 методов это как-то дофига, как можно превысить такой лимит?
Легко! Написать 18 тысяч классов.
http://quellish.tumblr.com/post/126712999812/how-on-earth-th...

Temach

там код написан полуавтоматически, так что легко.
а что плохого в превышении лимита?

kokoc88

а что плохого в превышении лимита?
Некоторые посты нужно читать между строк. В этом конктерном случае у него между строк написано "Java - говно".

Temach

Java говно , согласен. лучше лежать на пляже на канарах и ничего не делать. но это доступно лишь олигархам)

Anna551

На самом деле за этот лимит действительно несложно перейти - и приходится изрядно изголяться, чтобы его НЕ перейти, особенно, если ты используешь какое-то количество third-party. Хотя FB их и не использует практически, но с другой стороны - разбирая код FB SDK (правда под iOS) я был тоже довольно сильно разачарован в качестве их продукта, так что невозможное-возможно) Все проекты с историей имеют тенденцию к разрастанию.

lubanj

но с другой стороны - разбирая код FB SDK (правда под iOS) я был тоже довольно сильно разачарован в качестве их продукта, так что невозможное-возможно) Все проекты с историей имеют тенденцию к разрастанию.
А я вот частенько сталкиваюсь с ВК сдк (ios). Ппц они там говнокодеры. Постоянно всякая херня лезет. Все через жопу и на коленке. Постоянно косячат.

luna89

Некоторые посты нужно читать между строк. В этом конктерном случае у него между строк написано "Java - говно".
Знаешь, раньше думал что на java где-то пишут нормально, тем более под анроид - все же ресурсоограниченная платформа. Когда создавал этот тред, думал что может быть есть какие-то объективные причины для такого количества методов.
Теперь склоняюсь к тому, что андроид разработка в фейсбуке ничем не отличается от остальной джава-разработки.
Ты, кстати, продемонстрировал новый подход к оправданию джавы. Раньше джава-программисты в ответ на критику (в том числе и на этом форуме) отвечали в стиле "я работаю над webscale high-performance проектом на джаве, который настолько секретен, что NDA запрещает о нем говорить, а ты наверное не работал над нормальными проектами, только в каком-то говноинтеграторе". Теперь в провале Android приложения оказалась виновата не java, а алгоритмисты, пхпшники и дедлайны (а где их нет?).

lubanj

в провале Android приложения оказалась виновата не java, а алгоритмисты, пхпшники и дедлайны (а где их нет?)
минуточку. а где провал-то?
приложение работает, хомячки довольны. 30 миллионов закачек

luna89

там код написан полуавтоматически, так что легко
То есть там применяется какая-то кодогенерация? Зачем? Откуда ты это узнал?
а что плохого в превышении лимита?
65000 осмысленных функций - это большое количество функционала, явно больше чем требуется для просмотра фоточек в фейсбуке. Возникает подозрение, что там низкое соотношение осмысленного кода к бойлерплейту, что характерно для java.

kokoc88

Теперь в провале Android приложения оказалась виновата не java, а алгоритмисты, пхпшники и дедлайны (а где их нет?).
Я правильно понимаю твою мысль о том, что код не на Java в Facebook просто идеальный? Что от кода на PHP не будет плеваться ни один PHP-шник, от кода Objective C - ни один iOS разработчик, от кода на C# - ни один .NET программист?

luna89

минуточку. а где провал-то?
Я сам не пользовался, но в комментах пишут, что приложение плохое - быстро сажает батарею и проще открыть сайт.
Возможно, это нельзя назвать провалом, но все же с ресурсами фейсбука можно было бы и лучше.

lubanj

да нормально оно работает (и ios и android), может и бывают проблемы с батарейкой - ну и ладно. ничто не мешает прибить приложение после того, как им попользовался. Заявления про "самое функциональное приложение" - чистая правда. Мы тут тоже пишем клиент соцсети. На ФБ частенько поглядываем. Ваще ни разу не просто. ФБ проделал хренову тучу работы.

luna89

Я правильно понимаю твою мысль о том, что код не на Java в Facebook просто идеальный? Что от кода на PHP не будет плеваться ни один PHP-шник, от кода Objective C - ни один iOS разработчик, от кода на C# - ни один .NET программист?
Я не думаю, что в фейсбуке код на java и php хуже чем в среднем - думаю что даже лучше. Но тут сложно сравнивать.
Можно для примера сравнить web-версию и android-версию фейсбука. Много где рекомендуют не ставить android версию, а просто использовать мобильный сайт:
http://lifehacker.com/use-facebooks-mobile-site-for-a-faster...
it's a little slow, drains your battery even when you aren't using it, and requires all sorts of permissions on your phone. Want something better? The Facebook mobile site is nearly identical...without all the crap.

http://bgr.com/2015/02/28/battery-draining-smartphone-apps-f...
Even if you’re someone who’s addicted to Facebook, you really ought to consider just accessing it through your mobile browser. Business Insider directs our attention to antivirus software firm AVG’s rankings of the worst mobile apps for your phone’s battery and its overall performance, and Facebook is not surprisingly one of the worst offenders.

kokoc88

Можно для примера сравнить web-версию и android-версию фейсбука.
И окажется, что PHP/WEB разработчики и алгоритмисты не умеют писать толстых клиентов под мобильные платформы на Java. Внезапно!

6yrop

"я работаю над webscale high-performance проектом на джаве, который настолько секретен, что NDA запрещает о нем говорить, а ты наверное не работал над нормальными проектами, только в каком-то говноинтеграторе".
О :D , раз уж Майк рассказал о собеседовании, то я тоже буду рассказывать. Когда я начал расспрашивать что за проект, как у них всё устроено, в ответ — NDA. :)
Словосочетание high-performance тоже звучало. :D Точнее было так. High-performance было в вакансии. Когда в начале собеседования я начал расспрашивать параметры, сколько запросов и т.д. Майк такой: "Я раньше думал, что проект будет высоконагруженным, но сейчас оказывается, что не высоконагруженный". :)
Еще я спросил, почему в вакансии написано "стартап" это же обычное бизнес приложение для Связного? Мне пришел ответ: "Проект называется стартапом, потому что он пишется с абсолютного нуля". Оказывается каждый новый проект стартап. :)

luna89

О , раз уж Майк рассказал о собеседовании, то я тоже буду рассказывать.
Мне на этом форуме про NDA и highperformance писал не Майк, а кто-то другой.

6yrop

Булшиты передаются от одного мегаархитектора к другому.

yroslavasako

"Java - говно".
Причём тут java? На jvm куча других языков базируется. Возьми какую-нибудь схемку на jvm, она тоже дофига методов нагенерирует.

kokoc88

Причём тут java? На jvm куча других языков базируется. Возьми какую-нибудь схемку на jvm, она тоже дофига методов нагенерирует.
Ты мой пост прочитал? Там два предложения. И оба не про технологии.

yroslavasako

"java - говно" - это про остров или про кофе что ли?

kokoc88

"java - говно" - это про остров или про кофе что ли?
В контексте поста - про то, что у кого-то баттхёрт от Java.

yroslavasako

Так java - и есть технология. Разве нет?

kokoc88

Так java - и есть технология. Разве нет?
Давай ещё раз. Я написал пост, про то, что у очень сильный баттхёрт от Java. Никакого другого смысла этот пост не несёт, и поэтому не является постом про технологии. Вопрос "при чём тут Java" в связи с этим постом можно задать только в том же контексте.

Werdna

А тем не менее у Фейсбук неоспоримый вин. Выводы делает каждый сам, исходя из своей философии.
Вывод: выживает ВОПРЕКИ неграмотным техническим решениям, а не благодаря.
Уже сейчас постепенно функционал ФБ начинает всё больше и больше глючить. Новые фичи ломают старые костыли, система пока держится на огромной команде тестеров, и плавно подходит к критической точке, когда муравейник начнёт глючить в процессах. Всё это уже проходили с другим софтом, об этом писали книги ещё в 90-е.
Ну и предсказание тут простое, ровно то же что и с ЖЖ:
1. Костяк состоящий из фанатских групп будет сидеть до последнего. Например, либерасты будут там глотать последний глоток свободы, хотя всю их переписку будут читать кураторы всех стран (и ржать).
2. Обязательно появится новый какой-то сайт и мода перейдёт на него, котики основные перейдут туда, на ФБ останутся только старожилы дрочилы. Новая площадка не будет так глючить, там будут другие правила игры.
3. Глюки софта будут изматывать технарей, работа годами выработает стойкую депрессию, катализатором выступит стойкое падение популярности. Самые смышлёные будут уходить с пониманием, что надо строчку из резюме использовать для поиска чего-то более перспективного.
Это были медицинские прогнозы, без вангования.

zya369

2. Обязательно появится новый какой-то сайт и мода перейдёт на него, котики основные перейдут туда, на ФБ останутся только старожилы дрочилы. Новая площадка не будет так глючить, там будут другие правила игры.
вот тут-то пианист и допишет щелкунчика свой форум!

Werdna

Теперь небольшое вангование: сплавят какому дохерарху доживать, как ЖЖ сплавили Мамуту.

6yrop

Вывод: выживает ВОПРЕКИ неграмотным техническим решениям, а не благодаря.
А как ты отличаешь благодаря или вопреки? Может ты сам неграмотный?

apl13

лучше лежать на пляже на канарах и ничего не делать. но это доступно лишь олигархам)
Еще канарцам.

apl13

А не поэтому его разделили на собственно FB и Messenger?
Оставить комментарий
Имя или ник:
Комментарий: