LINUX.ORG.RU
ФорумTalks

Почему в гугле работают такие говнокодеры?

 


0

1

Субжект. Можно сказать, эта тема впридачу к той, где обсуждают CVE в хроме - >350 критических уязвимостей, найденных за год.

Известно ли вам то, что почти весь гуй в Android написан Java? А известно ли вам то, что только в одном базовом классе для всех виджетов на экране (кнопок, картинок, полей для ввода) - более 18 тысяч строк в одном файле? И такое там повсеместно.

Ппц, как ревью это вообще могло пропустить? Понятно, что в Java нет partial-классов как в шарпе, но разделить функционал на несколько подклассов нельзя было чтоле? Вы че там курите, наркоманы? КАК ЭТО ОБСЛУЖИВАТЬ!???

https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r2.1/core/java/android/view/View.java

Ответ на: комментарий от bugs-bunny

Я не математик, и на жабе под андроид писал немного и давно. В жабе, насколько помню, нет множественного наследования.

да я не про то, а про слово «функционал». А множественное наследование интерфейсов есть.

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от snizovtsev

Процентов 80% там - при беглом просмотре, особенно в начале. Сложность логики внутри - два, максимум три уровня вложения для for/if, функции довольно короткие.

bender ★★★★★
()
Ответ на: комментарий от t184256

Как это связано с потоком

Очень просто. Этот поток — у тебя в голове. Отдохни от ЛОРа, сходи прогуляйся. Станет легче. А то совсем уже в вахтёра превратился.

i-rinat ★★★★★
()
Ответ на: комментарий от theNamelessOne

Ты с ума сошёл? Это невозможно. Ловите неадеквата, жизнь есть, хех, скажешь тоже. :D

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от i-rinat

Вово, можно ко мне на огород картофан выкапывать, а то я уже задолбался и траву косить тоже, а то я тоже задолбался. Натуре фитнес.

LINUX-ORG-RU ★★★★★
()
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Java                             1              0          15003          14308
-------------------------------------------------------------------------------

Посмотрите лучше на количество (и качество) коментариев в исходнике.

Fizzika ★★
()
Ответ на: комментарий от LINUX-ORG-RU

а то я уже задолбался и траву косить тоже

Ну если вы не в южных широтах обитаете, то не парьтесь, скоро «само пройдет» :) А если в сильно южных и рядом с морем/океаном, то трансфер за ваш счет. :)

anc ★★★★★
()

https://www.oberlo.com/statistics/how-does-google-make-money

Цитата из ссылки: According to recent data, Google’s top revenue source in 2022 was search ads

Гугол получает деньги из рекламы и использует их для захвата IT. Им плевать на качество кода. Они сертефицировоанные говнокодеры.

imatveev13
()
Ответ на: комментарий от monobogdan1337

Жизненные топики всегда добавляли ламповости любому форуму. Не все это видят просто.

Так ты аниматором на ЛОР устроился?

Tigger ★★★★★
()
Ответ на: комментарий от t184256

Я, конечно, солипсист

Не особо заметно. Скорее ты считаешь себя д’Артаньяном.

но ты — страус.

Ну вот, да, классика просто. Ты — д’Артаньян, а все вокруг… не д’Артаньяны.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Нет, дядя Ринат, не передергивай. Список не-Дартаньянов я в треде озвучил, и, хоть три автора в нем и порождают половину тредов на ЛОРе, три автора — это далеко не все.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

три автора в нем и порождают половину тредов на ЛОРе

Причем тут три автора? На лоре может зарегаться кто угодно, и писать что угодно.
Причина скатывания лора в говно - модераторы, которые это позволяют.
Вот хотя бы на это позорище посмотри: Какой-то модер обиделся и снес мне скор (комментарий)

arax ★★
()
Ответ на: комментарий от arax

Причем тут три автора? На лоре может зарегаться кто угодно, и писать что угодно.

А пишут эти трое.

Причина скатывания лора в говно - модераторы, которые это позволяют.

Всецело согласен, но

Вот хотя бы на это позорище посмотри: Какой-то модер обиделся и снес мне скор (комментарий)

только вот почему ты привёл в качестве примера чуть ли не единственное за неделю исключение, когда вместо ношения шланга на руках и сюсюканья с ним его заморозили?

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

когда вместо ношения шланга на руках и сюсюканья с ним его заморозили?

Нет, я это привел, потому что его сразу же разморозили, скору накинули и теперь это чудище с радостным улюлюканьем скачет по всем темам и несет бред.

arax ★★
()
Ответ на: комментарий от arax

Это я заметил, но кто виноват и что делать — непонятно. Обвинять в этом димеза, который его заморозил — ИМХО странный шаг.

t184256 ★★★★★
()
Ответ на: комментарий от DarkAmateur

Это для завсегдатаев лора филиал /b/ не вызывает ярких эмоций. А зайдет человек на волне импортозамещения интересующийся чем-то по онтопику, а тут бесноватые. Так мы виндекапец не приблизим!

cobold ★★★★★
()

Так 65k limit жеж. Или он не про системные классы?

cobold ★★★★★
()
Ответ на: комментарий от arax

Ты жалок и мыслишь крайне узко. Сейчас по всем темам скачете только вы с тем челом, я в пределах своих топиков обитаю.

monobogdan1337
() автор топика
Последнее исправление: monobogdan1337 (всего исправлений: 1)
Ответ на: комментарий от bugs-bunny

На самом деле, даже с архитектурной точки зрения это плохо. В одном классе View запихнули вообще всё что можно - там и методы для работы с разными подсистемами анимации (которых в ведре 2 или 3), и позиционирования, и отрисовки, и подготовки каких-то ресурсов, и что-то связанное с layoutinflater’ом (десериализатором интерфейса из xml). Всё таки гораздо лучше было это распихнуть по разным классам и определить в View геттеры на них. И файл был бы чище, и дока бы не грузилась по полчаса и вообще это хороший подход.

Не стоит забывать про AppCompat - библиотека, которую цепляет с собой каждое приложение (сейчас заменена на androidx правда), которое хочет юзать новые фишки на старых версиях системы - там все это еще раз перереализовано.

monobogdan1337
() автор топика

И в чём @monobogdan1337 тут не прав?

В Google реально работают одни макаки. Других туда не нанимают, банально судя по качеству кода того что попадает в open-source типа Android и Chrome. Да и того что не попадает тоже, потому что у каждого на Android телефоне есть их проприетарные приложения, которые адекватно никогда не работали.

a1ba ★★
()
Ответ на: комментарий от monobogdan1337

В нульпосте линк на View.java из Android 4.3. Для контраста, вот View.java из main бранча:

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/java/android/view/View.java

Более 30.000 строк кода в ОДНОМ файле.

Кто тебе сказал, что Google волнует качество кода?

hateyoufeel ★★★★★
()
Ответ на: комментарий от a1ba

Выходит, что все эти алгоритмические собеседования и задачи на количество канализационных люков в Галактике отбирают исключительно макак?

static_lab ★★★★★
()

более 18 тысяч строк в одном файле? И такое там повсеместно.

Ппц, как ревью это вообще могло пропустить

А в чем вобще проблема? Не, я бы понял если бы одна функция была на 18 тыс строк с хотя бы парой десятков уровней вложенности блоков if/for/while и т.д. или там портянка из switch-ей.

Сдаётся мне ты говнокода ещё не видел :)

sergej ★★★★★
()
Ответ на: комментарий от static_lab

Я полагаю что тут как с зубрением перед экзаменом. Сама по себе зубрежка умнее не делает и понимания не прибавляет. Но экзамен (в данном случае собеседование) пройти дает.

a1ba ★★
()

Женится вам надо, пацаны. А то жигули уже не удовлетворяют...

shTigrits ★★★
()

А известно ли вам то, что только в одном базовом классе для всех виджетов на экране (кнопок, картинок, полей для ввода) - более 18 тысяч строк в одном файле?

Ещё раз повторюсь, а мне потом говорили, что в моём кроссворде большие функции больше 100 строк кода. Так это тоже самое я считаю. Так что мой кроссворд написан на уровне продакшон кода.😎

xwicked ★★☆
()

партиалы это привет из процеДУРного программирования и антипаттерн(одинаковые имена для всего), но гопоте конечно главное сделать бочку, утереть нос, навести шорох, четка, опа-на

Syncro ★★★★★
()
Ответ на: комментарий от sergej

Я уже расписал, почему с архитектурной точки зрения это плохо. Там проблемы не в кодстайле как таковом, и не каких то конкретных решениях.

monobogdan1337
() автор топика
Ответ на: комментарий от dictator2000

не совсем такая же, они нанимают галеры в качестве аутсорс-прокладок, формально это объясняется необходимость «отчуждать» результаты труда, если ты вонючий раб^Wэмигрант из восточной европы то скорее всего не станешь претендовать на долю в проекте или что-то в таком ключе, а если пролетариев постоянно менять, то складывается некий устойчивый процесс в котором контроль всегда принадлежит кому-надо, а остальные боятся

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от Syncro

Эт смотря кто и как юзает. Партиалы - оч удобная штука для кейсов как в нульпосте.

Вместо View на 20к строк у нас мог бы быть View.layout.java на 1000, View.visual.java, View.animation.java и.т.п.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

вот в вас где-то в сложных условиях бомбануло, ошибка пишет «в методе таком-то класса View» и больше никакой информации нет, вы запартиалили свой вью на 10 кусочков по 2000 строк, станет легче разобраться где проблема?

Syncro ★★★★★
()
Ответ на: комментарий от monobogdan1337

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

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от Syncro

Так это же джава. Если исключение вылетает в дебаг-режиме, то там пишется подробный коллстек, что вылетело и в какой строке, по какой причине. А при желании можно с дебаггером даже натурально посмотреть значения переменных на стеке/полей класса и.т.п - в этом управляемые языки очень удобные :)

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

но, в жизни все бывает несколько сложнее, без дебагера, и даже без размотанного стека и с каким-то косвенным указанием на «неизвестную проблему»

Syncro ★★★★★
()
Ответ на: комментарий от Syncro

Вот с этим пожалуй соглашусь, да. Хотя мне в этом плане больше концепция ObjPas нравится - в начале юнита interface с объявлениями, а потом уже их реализация по факту + в IDE есть хоткеи типа Ctrl + Shift + C для создания реализации класса.

Правда возникают проблемы с циклическими включениями - поэтому «глобальные» включения uses можно использовать только «один файл -> одно включение», а uses в implementation может с десяток разных файлов подключать.

monobogdan1337
() автор топика
Ответ на: комментарий от Syncro

Если мы все же говорим именно про ведро, то там есть возможность перехватить Unhandled Exception и снять коллстек даже в рантайме из release-билда. т.е можно при краше оставить дамп, а при следующем запуске предложить пользователю отправить отчет - вполне стандартная практика.

Правда, вроде в гуглплее итак этот функционал уже есть в консоли (но это не точно). В Windows Phone все краши летели автоматом в магазин.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

один файл - одно включение/класс стимулирует соблюдать single responsibility, если в редакторе открыта структура у которой только одна ролевая модель это ок, если в одном файле десятки структур, даже если они виртуально являются членами одного класса это уже какая-то каша, контекст воспринимается как помойка, локальный метод/структура как абсолютный объект для всего

Syncro ★★★★★
()
Ответ на: комментарий от Syncro

Дак в жабе тоже самое же. Там вложенные классы есть везде, причем не-статичные вложенные классы еще и будут иметь доступ к полям и методам класса-папы как будто это их собственный класс. Если очень условно, то уже на уровне VM реализована концепция Parent-классов: создать инстанс такого класса не из класса-родителя нельзя.

monobogdan1337
() автор топика
Последнее исправление: monobogdan1337 (всего исправлений: 3)
Ответ на: комментарий от monobogdan1337

вложенные классы это не partial’ы, в жаве можно делать даже анонимные, тут проблем нет если нет злоупотребления инкапсуляцией

Syncro ★★★★★
()
Ответ на: комментарий от a1ba

В Google реально работают одни макаки. Других туда не нанимают, банально судя по качеству кода того что попадает в open-source типа Android и Chrome.

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

FishHook
()
Ответ на: комментарий от seiken

А мне нравится. Вообще, раньше было проще: включаешь девайс и сразу же начинаешь на нём прогать, на бейсике. А сейчас, монструозные IDE со встроенной виртуалкой, которые требуют не самый слабый комп для компиляния Hello, world! - и неслабый же целевой девайс, дабы разворачивалось всё быстренько.

tiinn ★★★★★
()
Ответ на: комментарий от t184256

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

Это ж прекрасно, ТС создаёт темы, которые позволяют делать вид, что ЛОР живой, хотя он уже, фактически, умер.

tiinn ★★★★★
()

Красивый код нигде не работает. Красивые не работают.

lenin386 ★★★★
()

Это самый что ни на есть продакшен код крупного проекта. Там не один Вася все это усердно и аккуратно пилил, сверяясь с букварем с пыльной полки бабушкиного серванта, сидя в уютной квартирке, доставшейся от той же бабушки. Это плод коллективного труда многих чуваков в течении длительного времени. Каждый из чуваков все что мог и должен делать в рамках проекта-это что-то добавить, согласно таске, ему прилетевшей, в течении времени для этого отведенного. Ни времени, ни права, что-то в корне там переделывать по его усмотрению, каждому из участников никто не давал. Что до огромных файлов или каких-то там антипаттернов кода: код должен делать требуемое и удовлетворять заданным требованиям. Должен быть покрыт тестами. Точка. Что там внутри неважно. Все остальное лирика для книжек с пыльной полки бабушкиного серванта, которые будет читать только гик, ничем не занятый, и мнящий себя разрабом невпендюренным, после прочтения этих книжек с пыльной полки. Но которого в компании подобные гугелу работать никогда не возьмут. Недорос.

slew
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)