Search
Write a publication
Pull to refresh
-3
0
Send message

Кодовая база самого большого приложения над которым я работал.

Статистика
Основной паттерном был выбран MVC + Coordinator
Swift - (195331 строк кода) на (2743 файлов)
Objective-C - (5211 строк кода) на (33 файла)

Примерно 75к строк кода занимал только слой Model
• Получение отправка данных по REST
• Хранение данных в DB
• Коммуникация с внешними устройствами
• И вся логика работы данными

Примерно 120к строк кода это слои View и Controller
• Навигация между экранами
• Логика экранов
• Общие View
• Аналитика
• и все прочее

Были еще внешние библиотеки которые позволяли сильно уменьшить boilerplate код, например при работе с таблицами или коллекциями и практически полностью исключали реализацию UITableViewDelegate | UITableDataSource и тд. Они конечно в подсчеты не попали.

При этом всем было всего несколько экранов огромных экранов
Например:
Самой большой (8660 строк кода) на (91 файл)
ViewController (488 строк кода)
TablеController (1272 строк кода)
и еще около 40 табличных ячеек уникальных для этого экрана

Рабочих тестов было очень мало в основном они касались слоя Model (например для проверки корректности функций расчетов) для View и Controller слоев было всего несколько и только для проверки сложно воспроизводимых при ручном тестировании кейсов (например показ экранов ошибок)

В основном паттерн MVC использовался, для того чтобы сделать Mock для слоя Model, который будет возвращать нужные данные и разработчик не будет ждать пока бекэнд закончит разработку своей части.

Нет общего правила какой паттерн лучший. Важно как вы будите использовать его подхода его лучшие стороны и как минимизировать ущерб от слабых.

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

Первый
Уменьшение количества ошибок. Для этого можно писать тесты и/или пользоваться возможностями компилятора или использовать разнообразные анализаторы/линтеры чтобы не давать "плохому" коду попадать в прод.

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

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

В iOS первым паттерном был MVC и он часто приводил к увеличению количества кода в ViewController-е до пугающих значений и этот паттерн окрестили Massive View Controller. Мне BPN сильно напоминает именно этот период истории.

Такой оговоркой можно оправдать все. А выглядит приемлемо далеко не для всех.

MVVM
Кажется что сделано с сильным перегибом и можно убрать такие сущности как CountdownAnimationServiceProtocol, CountdownAudioServiceProtocol, CountdownCoordinatorProtocol, CountdownFactory но даже в таком случае у вас будет возможность писать тесты разнообразные тесты для CountdownViewModel и CountdownViewController.

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

А качественное сравнение паттернов по одному параметру (количество строк кода) просто не имеет смысла.

гос-во и не думает организовывать рабочие места? 

А это задача государства создавать рабочие места? Это же тогда госмонополия какая-то получается? Что плохо для страны которая стремиться к рыночной экономике.

В министерстве экономики и ЦБ сидят либо не очень умные люди, либо откровенные предатели

Почему не умные? Предатели кого? Лично Вас предали? Или лично Вам что то гарантировали отличное от того что имеем?

Кто будет создавать бизнес, когда у него нет возможности взять кредит хотя бы по 2% годовых, если это не банк или монополия?

А лично Вы будите создавать бизнес с окупаемостью 2% в год? Ведь только у идиота можно взять 100 рублей, заработать 1000 рублей, вернуть 102 рубля.

чтобы финансировать развитие хотя бы легкой промышленности

А если представить обьем работы чтобы сделать то самое развитие
1 - Продумать программу
2 - Правильно внедрить
3 - Мониторить выполнение
И все это титанический обьем, и самое главное не понятно какой итог должен получиться и за чей счет это все будет.

Свое все уничтожено

Вот был СССР, в нем делали очень многое сами. Но все равно что-то не нравилось. Решили развалить страну что бы построить что то другое с другими целями. Мне кажется к чему стремились к тому и пришли.

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

Тяжелые времена стимулируют изменения в обществе. Они могут быть либо прогрессивными либо реакционными. А государство выполняет только функцию удовлетворяющую интересы правящего класса. То есть если выгнать самого "некрасивого" гос. служащего на его место придет другой, но такой же "некрасивый". Если вы живете в обществе где прилично ходить "голыми" то вы тоже будите ходить "голым".

А вы случаем не слышали выражение «Человек с большой буквы»?
Я действительно не понимаю как можно выгореть. Работаю уже больше 10 лет всегда по 12+ часов. Конечно были сложные времена когда устаешь работать но достаточно найти подходящую отдушину и становится интересно жить. Первые 5 лет очень помогало переключение на другие проекты (коммерческие или личные не столь важно), потом настал период когда проекты стали очень сильно походить друг на друга и пришло увлечение фильмами/сериалами/играми. Последние 3-4 месяца переключился на столярку (думаю жене это увлечение нравится больше чем мне ;)). Из своего опыта могу сделать вывод главное найти занятие которое в корне отличается от основной работы и перестать желать себя.
то если бы пользователи покупали пустой компьютер, и сами решали, какую операционку на нее поставить

как раз те самые домохозяйки с навыками автоматизации?

монопольный сговор Microsoft с производителями железа

А вам не кажется что производитель так сокращает свои издержки? И почему он по вашему мнению должен заботится о мизерном проценте эксгибизионистов с желаниями поставить любую ОС?
Почти в каждом посте обязательно будет человек который ПУБЛИЧНО укажет на грамматические ошибки автора. При чем одним из первых комментариев. Можно вопрос? Зачем? Если нет нечего конструктивного сказать по СМЫСЛУ поста, большая просьба писать в ЛИЧКУ автору. Спасибо!
А может напишите статью о вашей реализации или поделитесь исходниками?

Information

Rating
11,648-th
Registered
Activity