Комментарии 10
Большинство программных систем используют менее 1% ресурсов современных процессоров
Как опознать теоретика за одну фразу.
У меня в данную минуту открыто 27 окон chrome (более 500 вкладок), 4 окна PowerPoint, 2 окна Excel, Notepad++, IntelliJ IDEA с запущенным внутри сервером Structurizr, Acrobat Reader с тремя документами, клиент MatterMost. И это только моё, операционку не считаю. Общая загрузка процессора - 2-5%. А, еще WinAMP c музыкой
Дак у вас большинство сервисов в таком режиме спят, работает текущее окно ну и фоновое чуток (WinAmp).
А теперь возьмите и запустите архивацию чего-нибудь большого, штук 5 - сразу будет другая картина, характерная для серверной загрузки.
Я когда запускаю Activity Monitor посмотреть на загрузку процессора, собственно Activity Monitor отжирает 2%. MBP 2023 года, Apple M2 Max.
Это всё не дает нам никаких данных (кучка личного опыта — не данные). Давайте запустим, скажем, Cyberpunk 2077 и посмотрим среднюю загрузку процессора, пока проходим первую миссию. Cyberpunk 2077 это очень типичная программа.
После окончания этой дискуссии я видел мнения о том, что чистый код был компрометирован в её процессе и больше не заслуживает внимания
А я часто вижу, что в результате наблюдения этой дискуссии люди (особенно неопытные) впадают в очень детское заблуждение:
если код чистый, то он автоматически медленный. Поэтому гоните его, насмехайтесь над ним.
если код не чистый, то он автоматически не медленный. Поэтому отрицайте эту чепуху Мартина ради перфоманса.
А в реальности средний код он и не чистый и не быстрый, а просто кусок вонючего техдолга. Писать чисто - это скилл, писать оптимально - это тоже скилл. А чаще всего никакого скилла нет, а есть "херак херак и в продакшн". Утверждать, что только на одном из скиллов, полностью отрицая другой, можно вытащить современное приложение на миллионы строк кода - тоже бред какой-то.
Чистый код это вопрос личного вкуса и предпочтений. Для каждого есть своё понятие чистоты. Один считает break в цикле грязным кодом. Другой goto на метку в конце функции - стандартом. Поэтому всегда теряюсь на собесе, когда спрашивают, пишу ли я чистым кодом.
С одной стороны - геймдев, где (грубо говоря) нужно за 10 мс на любом процессоре и с 4 ГБ ОЗУ пересчитать состояние всего игрового мира, а потом ещё и отрендерить его в миллиард полигонов. Потом это дело зарелизить, за 2 месяца выпустить патчи и забыть навсегда.
С другой стороны - кровавый энтерпрайз, где нужно написать процессинг заявки пользователя уложившись хотя бы в 10 секунд, на 96-процессорном сервере с 256ГБ ОЗУ, но ещё нужно, чтобы другой сотрудник через 15 лет не имея документации смог добавить фичу в этот процессинг, а ещё все эти 15 лет надо будет дописывать и переписывать. А ну и ещё текучка джунов, постоянно уходят-приходят и нужно научиться погружать максимально быстро.
Так что ответ очевиден - каждому ПО свои критерии.
Эти правила конкретизируют, как написать код так, чтобы он считался "чистым".
Главное правило чистого кода - это от общего к частному (про контроль уровней абстракций, функция может вызывать только функции с более низким уровнем абстракции).
У меня сложилось ощущение что весь их спор - из-за разного подхода к необходимости написания тестов. Мартин изначально пишет под тесты, его подход так и выглядит - много мелких объектов/функций.
PS: больше спасибо за перевод.
Чистый код — дар или проклятие? Акт I. Конфронтация