Говнокод - необязательно писать код и рефакторить одновременно
HTML-код
- Опубликовано: 14 фев 2023
- В этом видео поговорим о критике, говнокоде, рефакторинге... Все это в принципе связанные темы, но просто эмоции немного бушуют и хотелось высказаться.
Стрим Диджитализируй • Стрим! Пишем Telegram ...
Поддержать меня: boosty.to/mflenov
Обо мне: www.flenov.ru
Мой ИТ блог www.flenov.info
Мой просто блог blo.moe
Twitter: / flenov
Инстаграм: / mflenov
Телеграм: t.me/mflenov
Это видео надо включить в список обязательных к просмотру для всех новичков. Ведь именно АГРЕССИВНАЯ критика может на корню деморализовать человека и он окончательно потеряет и без того не крепкую веру в себя в этом деле. Так что писать говнокод в самом начале это не страшно. А с большим опытом тем более не страшно :- ))
А с большим опытом уже все равно, что скажут критики
Да, действительно, это как глоток свежего воздуха, от Михаила
Когда-то давно услышал такую мысль: "Хороший код - это не написанный код"
То есть создавая код мы создаем Зло. Увеличиваем затраты на понимание, сопровождение и в итоге стоимость поддержки. При том часть кода ни когда не дойдёт до прода.
Поэтому кода должно быть всего лишь достаточно :) И не больше. А критерии достаточности разные в зависимости от условий.
P.S. Поговорку про грязь слышал от бабушки))
Здравстуй читатель. Хочу сказать тебе: 'Не отчаивайся'. Все у тебя может получиться. Не нужно думать что те у кого получилось достичь своих целей им просто случайно повезло. Это только так кажеться. Поверьте случайного везения не бывает.
Ребята хочу вам сказать что случайностей вообще не бывает и вот почему:
Представь себе выходишь ты в сад и видишь что все деревья в твоем саду повалены. Какая мысль придет к тебе в голову? Вполне возможно ты подумаешь что ночью прошел сильный ураган поваливший деревья. А теперь представь себе что ты также выйдешь в свой сад и увидишь что не все деревья в твоём саду повалены, а каждое третье дерево повалено. Какая мысль придет к тебе в голову на этот раз? Ну врят ли ты здесь все спишешь на ураган. Вполне возможно ты подумаешь что ночью поорудовал какой нибудь злоумышленник.
А теперь представь что у тебя в коробке 3000 (три тысяча) буквенных символов. И представь что ты подкинул все эти буквы в воздух. Упав на асфальт какова вероятность что эти буквы образуют какое нибудь слово? А какова вероятность что эти буквы образуют какое нибудь предложение? А какова вероятность что эти буквы образуют какой нибудь абзац? А какова вероятность что эти буквы образуют какой нибудь текст? А какова вероятность что эти буквы образуют какую нибудь книгу? Вероятность равна почти нолю.
А ведь двойная спираль днк намного сложнее устроена чем текст на асфальте.
Верить в то что там где то сверкнула молния и вот там тоже где то сверкнула молния, а потом произошла химическая реакция и химические элементы бац соединились и образовали сложное химическое вещество, которая вдруг стало бороться за свое сохранение и не просто сохранение, а ещё и воспроизведение себе подобных- это глупо.
Это все равно что будучи археологом ты наткнешься на руины древнего города и первая мысль которая к тебе в голову придет- это что здесь когда то жили люди построившие этот город. Ну, а если твой коллега скажет: "неа, это просто вон там сверкнула молния и вон там тоже сверкнула молния, а потом началось землетрясение и вот таким образом и образовался этот город". Ты после этого разговора скорее всего попросишь руководство что бы твоего коллегу отстранили от работы в связи с тем что у него поехала крыша.
Так вот предыдущая ситуация с молнией и химической реакцией еще более нелепая.
Бытует мнение что наша вселенная хаотична. Но я с этим не соглашусь. Я уверен что наша вселенная упорядоченна.
Так что ребята случайностей не бывает. Случайного везения просто нет. Наша вселенная не хаотична, а упорядоченна. Просто ставьте цели и достигайте их. И верьте что у вас тоже может получиться. Не сдавайтесь ребята.
Мой девиз в жизни такой:
Терпеливо
Активно
Учитесь
Хорошим
Искренним
Делам.
Запомните эту аббревиатуру. И пусть этот девиз сопровождает вас везде.
Привет Михаил. К сожалению, почему-то раньше не видел ваши видео, по ссылке от Алексея перешёл. Посмотрел несколько роликов, зашло. У вас просто и доступно получается доносить инфу, продолжайте в том же духе. Спасибо за ваш контент🤝. Всех благ вам!
Спасибо
Хорошие советы! Часто ловлю себя на том, что пытаюсь отрефакторить код на этапе создания фичи) в итоге темп замедляется, а выхлопа особого это не дает.
Но в некоторых случаях, я считаю, нужно писать сразу чистый и масштабируемый код (насколько это возможно), особенно когда заказчики постоянно меняют ТЗ) иначе получаешь кашу, которую даже мэйнтейнер не может поддерживать. Встречал такие проекты, это ад
Сразу прям чистый не всегда можно написать. Если поставить цель писать читаемый код, поддерживаемый код, вот это можно достигнуть на первых этапах, а дальше полировать по мере надобности.
@@programisli почему сразу нельзя? Если фичи небольшие и разработчик годами использует одни и те же инструменты, вполне реально с ходу писать поддерживаемый код с минимумом рефакторинга.
Исключения здесь - когда фича действительно большая, либо ТЗ нечёткое.
Михаил, отличное видео! Спасибо!
Спасибо вам за вашу работу 👍. Продолжайте!
Здравстуй читатель. Хочу сказать тебе: 'Не отчаивайся'. Все у тебя может получиться. Не нужно думать что те у кого получилось достичь своих целей им просто случайно повезло. Это только так кажеться. Поверьте случайного везения не бывает.
Ребята хочу вам сказать что случайностей вообще не бывает и вот почему:
Представь себе выходишь ты в сад и видишь что все деревья в твоем саду повалены. Какая мысль придет к тебе в голову? Вполне возможно ты подумаешь что ночью прошел сильный ураган поваливший деревья. А теперь представь себе что ты также выйдешь в свой сад и увидишь что не все деревья в твоём саду повалены, а каждое третье дерево повалено. Какая мысль придет к тебе в голову на этот раз? Ну врят ли ты здесь все спишешь на ураган. Вполне возможно ты подумаешь что ночью поорудовал какой нибудь злоумышленник.
А теперь представь что у тебя в коробке 3000 (три тысяча) буквенных символов. И представь что ты подкинул все эти буквы в воздух. Упав на асфальт какова вероятность что эти буквы образуют какое нибудь слово? А какова вероятность что эти буквы образуют какое нибудь предложение? А какова вероятность что эти буквы образуют какой нибудь абзац? А какова вероятность что эти буквы образуют какой нибудь текст? А какова вероятность что эти буквы образуют какую нибудь книгу? Вероятность равна почти нолю.
А ведь двойная спираль днк намного сложнее устроена чем текст на асфальте.
Верить в то что там где то сверкнула молния и вот там тоже где то сверкнула молния, а потом произошла химическая реакция и химические элементы бац соединились и образовали сложное химическое вещество, которая вдруг стало бороться за свое сохранение и не просто сохранение, а ещё и воспроизведение себе подобных- это глупо.
Это все равно что будучи археологом ты наткнешься на руины древнего города и первая мысль которая к тебе в голову придет- это что здесь когда то жили люди построившие этот город. Ну, а если твой коллега скажет: "неа, это просто вон там сверкнула молния и вон там тоже сверкнула молния, а потом началось землетрясение и вот таким образом и образовался этот город". Ты после этого разговора скорее всего попросишь руководство что бы твоего коллегу отстранили от работы в связи с тем что у него поехала крыша.
Так вот предыдущая ситуация с молнией и химической реакцией еще более нелепая.
Бытует мнение что наша вселенная хаотична. Но я с этим не соглашусь. Я уверен что наша вселенная упорядоченна.
Так что ребята случайностей не бывает. Случайного везения просто нет. Наша вселенная не хаотична, а упорядоченна. Просто ставьте цели и достигайте их. И верьте что у вас тоже может получиться. Не сдавайтесь ребята.
Мой девиз в жизни такой:
Терпеливо
Активно
Учитесь
Хорошим
Искренним
Делам.
Запомните эту аббревиатуру. И пусть этот девиз сопровождает вас везде.
Стараюсь писать красивый код, но если время поджимает и ничего не придумывается красивого приходится делать так как получается, главное выполнить задачу
Даже если время пожимает, код все же должен оставаться читабельным. А до идеала можно довести потом.
@@programisli Скажите с чего начать хочу работать в сфере айти... смотрю вас постоянно спасибо
@@user-ut5vq9tu6o направление сперва выбери
@@programisli если разработчик
Еще в книги "Чистый код" говорится, что без тестов код отдавать как-то не правильно...если "говнокод" работает под тестами, то это великолепно)
В реалиях, чаще код без тестов и попадает на Code Review, и без чистоты в коде сложно судить о его работоспособности
Я верю, что попаду в фирму где пишут тесты) когда нибудь
Или делают вид, что пишут. Я работал там, где тесты были обязательными, но их писали только для вида
@@programisli тоже грустный сценарий, так я не хочу :)
В таком случае можно подсидеть техлида, потому что с таким подходом провалы на проекте будут частые
Прекрасный канал я нашёл. Отдельное уважение за C#
Стивен Кинг называл это открытой и закрытой дверью. Первый раз ты пишешь для собственного понимания (с закрытой дверью), а второй раз чтоб тебя поняли все остальные
Полностью подписываюсь под каждым словом. Если решать задачу и сразу думать как ее оптимизировать, мысль по древу растеклась. Неважно, кодите вы или задача из любой другой сферы деятельности. Сначала сделаем, потом улучшаем. Залог производительности. Хорошо, если методы решения сразу оптимальны. Для этого приходится развиваться… Вроде демагогия, но это блин работает
При сопровождении главное консистентность! Если в проекте год говно, значит пишем такое же говно как вокруг, если не говно - пишем так же хорошо.
Если смешивать гавно с золотом, золота не получается. Нужно или убирать мусор или уж оставлять так
Комментаторам можно посоветовать попробовать так же без отрыва девять часов с нуля написать свою фичу
Я пишу сейчас и выкладываю на бусти, но с перерывами
С примера про поездку за хлебом в голос посмеялся) спасибо
У меня обычно итерациями мелкими происходит смена 2х шапок на автомате, пишешь кусочек кода средней паршивости качества, в какой то момент рефакторишь, меняешь имена, разбиваешь по функциям, генерикам. В какой то момент уже более сложный рефакторинг затрагивающий кучу всего. Без всяких книжек, по опыту)
Я делаю так, пишу метод не сильно смотря на его красоту, как только с ним заканчиваю, потом его рефакторю уже
каждую новую функцию/метод/переменную называю foo, а следющию bar. бессоница больше не мучает.
Как там Кнут говорил: "предварительная оптимизация, корень всех зол". Но всё-таки каких-то рамок, SOLID и код стайла нужно придерживаться.
Конечно нужно писать нормально, иначе потом никакой рефакторинг не поможет.
Просто спасибо! полезные мысли услышал. Я новичок в этой сфере и каждый раз когда смотрел чужой код который более красиво написан, замарачивался, что бы переписать свой, хотя он работает и хорошо читаем. Вместо того, что бы дальше изучать язык и кодить, что то новое.
Всё сильно зависит. Если это ваш личный проект или проект какой-нибудь компании "рога и копыта", то да, тут говнокод он имеет место быть, чтобы когда-нибудь к нему вернуться. Во первых потому что скорее всего у вас не будет ревьювера, а если и будет, то он либо лоялен к вам, либо тоже любитель говнокодить
Но если вы будете отправлять патчи в какой нибудь gcc или ядро линукса, то там уже такое вряд-ли прокатит
Согласен
Всегда придерживаюсь правила - сначала код должен работать и выполнять поставленную задачу, потом наводим красивости. Самый красивый и оптимизированный код в мире нафиг не нужен если дедлайн был 2 дня назад.
Дополнительно.
Плохой код, если его не убрать, делает проект плохим ( с т з программиста), т к последующие исправления будут требовать больше нервов и денег.
Плохой код пишется из-за незнания всех деталей решения.
Рефакторинг надо делать на следующий день после написания решения.
Рефакторинг обязательно включается в планируемые сроки.
Нельзя релизить плохой код (это установка, т к выполнить это в принципе невозможно, но с этой установкой можно существенно его уменьшить). Его исправление после релиза может стоить существенно дороже чем его оставление.
В случае с личным годом рефакторинг легко организовать. В случае с компаниями - розно понимание со стороны бизнеса, что рефакторинг необходим
@@programisli Согласен. Но, даже когда топы понимают необходимость рефакторинга (видят что теряют миллионы из-за плохого кода), его всё равно как правило не делают. Во-первых, нужны о-очень высококлассные специалисты; во-вторых, возможные потери от ошибок часто превышают плюсы. В моей практике, как правило, все (и я в том числе) переходили на другой движок / архитектуру / новую-версию, если продукт уже эксплуатируется.
Ты очень тошнотворный человек
Работает, не трогай
Большое спасибо. Это важная тема.
Привет тоже смотрел видео Алексея ответ на критику был очень аргументирован. Михаил, а что вы думаете про chatgpt , на самом дауны уже не нужны и в будущем программисты будут нужны но не в таком количество? Вообще было б интересно посмотреть про эту тему вообще видео.
Пока еще мы не дошли до того, чтобы заменить программистов. chatGPT заменяет программистов не больше, чем библиотеки. В телеграмме на эту тему общались - менеджеры не могут программистам задать задание, а уж искусственному интеллекту пока и близко не смогут. Может когда-нибудь, но мы еще далеко не там
НА БРОСКИ С КОНЦЕПТА АЛЬФЫ КОДА
ШАГ ЗА ШАГОМ ОТ ЛВЛ К ЛВЛ ОТ 1 ДО 100 ПРОГРЕСС
Оба принципа хорошие, только со вторым (про постоянные улучшения) важно не переборщить) потому что если улучшать всё подряд, то на ревью будет сложно смотреть такой скоуп изменений, суть задачи потеряется в улучшениях
Улучшать нужно только то, что изменяешь.
"Если работает не трогай" - верно не всегда. Есть случай, когда даже если ничего не понялось - трогать надо... Это ситуация, когда достаточно регулярно меняются фреймворки. Потому что перескакнуть с фреймворка скажем 3.0 на 4.0, если он выходит там раз в полгода год - это легко, но вот если переходить с 2.0 на 8.0 - это уже может вылезти куча проблем, которые надо будет решать.
В .NET например достаточно один раз в 2 версии обновлять (как раз с LTS До LTS), а вот в каких нибудь Жабоскриптовых можно и 3-4 версии пропустить, но потом - обязательно надо - даже если работает и изменений не требуется - делать свитч. Потому что иначе можно огрести проблем - что-то перестанет поддерживаться, какие-то сисьюрити апдейты.....
НА ЛЕГКОЙ ВОЛНЕ НА ЧИЛЕ..............
делаем как можно проще KISS и строим сложные системы по всем законам только по мере надобности
Говнокод необходим, вот что я скажу. Без него никак.
Как говорится, не лезь в рабочий агрегат)
Подскажите пожалуйста что значит менять шапку
Идея Файлера том, что ты не можешь одевать две шапки одновременно. Если ты хочешь писать код, то одеваешь шапку кодера и пишешь код. Если видишь необходимость улучшения, то одеваешь шапку рефакторинг и улучшаешь. Но не делаешь и то и другое одновременно. Это есть в книге Рефакторинг Фаулера. Шапка - это просто метафора, которая указывает на то, что нельзя носить две шапки одновременно. Я скриншот с презентации Фаулера повесил у себя в телеграмме, можешь зайти и посмотреть.
@@programisli спасибо
короч, даже добавить особо нечего
через тернии ( г-код) к звездам , от одной , потом к другой . только в спокойствии и с огромным интересом нужно продвигаться в перед , не понимаю тех кто живет с желчью и с завистью ....... Спасибо за идеи и добрые мысли !!!!!!!!
Работать в разных шапках вроде придумал Уолт Дисней :)
Не знаю, как Дисней, а у Фаулера точно было, я в телеграмме скрин выложил
Мишель поговори пжалуста про C, C++
Отличные интересные ролики!
Антонио
Про Лешину критику критики - бинго!! 🤪
Я сказал в видео, что критика норм, когда она аргументирована и ответ Леши более аргументирован.
@@programisli а мне понравилось про вежливость и конструктивность Леши, и очень емкое его определение про гуид 🥴
Если говнокод, это проблема. То это не моя проблема 😉
А если это твой код говнокод?
@@programisli Так я и говорю, мой говнокод это не моя проблема ))
Прошу скинуть канал с Лёшей. Оч интересно посмотреть.
Ссылка в описании
@@programisli блин, даже и не подозревал, что он проводит стримы. Его смотрел только из-за ноутбуков, о которых он рассказывал.
Смотрю ваши видео взахлёб и не могу нарадоваться, желаю всем смотрящим найти такого же критически мыслящего и банально понимающего людей, ментора, который не боится говорить как всё есть на самом деле. Неужели так мало людей это ценят раз вокруг у всех на кого ни наткнись по 2 короны дома лежит?)
Здравстуй читатель. Хочу сказать тебе: 'Не отчаивайся'. Все у тебя может получиться. Не нужно думать что те у кого получилось достичь своих целей им просто случайно повезло. Это только так кажеться. Поверьте случайного везения не бывает.
Ребята хочу вам сказать что случайностей вообще не бывает и вот почему:
Представь себе выходишь ты в сад и видишь что все деревья в твоем саду повалены. Какая мысль придет к тебе в голову? Вполне возможно ты подумаешь что ночью прошел сильный ураган поваливший деревья. А теперь представь себе что ты также выйдешь в свой сад и увидишь что не все деревья в твоём саду повалены, а каждое третье дерево повалено. Какая мысль придет к тебе в голову на этот раз? Ну врят ли ты здесь все спишешь на ураган. Вполне возможно ты подумаешь что ночью поорудовал какой нибудь злоумышленник.
А теперь представь что у тебя в коробке 3000 (три тысяча) буквенных символов. И представь что ты подкинул все эти буквы в воздух. Упав на асфальт какова вероятность что эти буквы образуют какое нибудь слово? А какова вероятность что эти буквы образуют какое нибудь предложение? А какова вероятность что эти буквы образуют какой нибудь абзац? А какова вероятность что эти буквы образуют какой нибудь текст? А какова вероятность что эти буквы образуют какую нибудь книгу? Вероятность равна почти нолю.
А ведь двойная спираль днк намного сложнее устроена чем текст на асфальте.
Верить в то что там где то сверкнула молния и вот там тоже где то сверкнула молния, а потом произошла химическая реакция и химические элементы бац соединились и образовали сложное химическое вещество, которая вдруг стало бороться за свое сохранение и не просто сохранение, а ещё и воспроизведение себе подобных- это глупо.
Это все равно что будучи археологом ты наткнешься на руины древнего города и первая мысль которая к тебе в голову придет- это что здесь когда то жили люди построившие этот город. Ну, а если твой коллега скажет: "неа, это просто вон там сверкнула молния и вон там тоже сверкнула молния, а потом началось землетрясение и вот таким образом и образовался этот город". Ты после этого разговора скорее всего попросишь руководство что бы твоего коллегу отстранили от работы в связи с тем что у него поехала крыша.
Так вот предыдущая ситуация с молнией и химической реакцией еще более нелепая.
Бытует мнение что наша вселенная хаотична. Но я с этим не соглашусь. Я уверен что наша вселенная упорядоченна.
Так что ребята случайностей не бывает. Случайного везения просто нет. Наша вселенная не хаотична, а упорядоченна. Просто ставьте цели и достигайте их. И верьте что у вас тоже может получиться. Не сдавайтесь ребята.
Мой девиз в жизни такой:
Терпеливо
Активно
Учитесь
Хорошим
Искренним
Делам.
Запомните эту аббревиатуру. И пусть этот девиз сопровождает вас везде.
нужно стараться в начале писать clean code, хотябы базовые приципы такие как
- выделять код в отдельные функции-методы по смыслу.
- страться назыть переменые лонично
Мне тяжело читать страницу кода с одной функцией
Я разделяю чистый код и читабельный и поэтому я в видео сказал, если код читабельный, то это хороший кандидат для коммита. Чистота для каждого своя. Читабельность тоже, но код с функцией в страницу - это нечитабельный.
На эту тему делал как то свое видео с тезисом "Писать гавнокод это нормально", но с разбором конкретного примера как он возникает и как его отрефакторить, тут затравка ruclips.net/video/l58fiWuGXko/видео.html и есть продолжение на моем канале ...
Это как получается - я пишу код, понимаю что тут можно написать лучше, но не делаю этого, пишу херово, говоря себе что я вернусь потом может быть и напишу нормально? Нет уж, меня такой подход не устраивает. Если можешь лучше сделать прямо сейчас делай лучше прямо сейчас. Я могу согласиться только с тем, что если ты сейчас понимаешь что то что ты написал херово, но ты не знаешь как сделать это лучше - то да, можно пока оставить и вернуться потом со свежей и еще раз подумать. Но специально писать плохо, я бы никому не рекомендовал.
Потом мы все знаем правило нет ничего более вечного чем временное.
Ну или еще могу согласиться, если ты понимаешь что ты сразу после написания кода будешь его рефакторить, то да можно сначала решить задачу, а потом думать как улучшить код, но точно не оставлять в таком виде.
Во первых, почему ты пишешь херово?
Во вторых, шапки можно менять хоть каждые пять минут. Закончил писать функцию, если херово, рефакторинг.
Хреново получается само. Что бы было хорошо - надо стараться. В нашем случае надо делать делать с головой.
Не спорю, чтобы было хорошо, нужно стараться и действительно, нужно делать с головой. Само ничего не получится.
Я из-за невероятной токсичности, огромного количества ненормативной лексики, беспонтовых нюдсов удалил свой аккаунт в твиттере.
Иногда тоже появляются мысли удалить, токсичность просто на высочайшем уровне.
Твиттер - это тру.
Согласен! Говнокодил несколько дней, сегодня рефакторил чтобы поднять производительность :) Действительно правильный подход! За красоту не парюсь, лишь бы компактно и понятно. Ида, закон автомеханика: в работающий механизм не лазят!
байтящий заголовок))
Если это байтящий, то какой нет для такого видео?
Поговорим о коде, который чистое говно!
Не понял, почему ты такой вывод сделал
Согласен. KISS и YAGNI принципы.
Да, и эти принципы тоже нужно было упомянуть в видео, спасибо.
KISS и YAGNI никак не относятся к г-коду
КТО ВСЁ-ТАКИ ПИСАЛ ПРО ШАПКИ??
Martin Fowler, помять меня не подвела, я нашел на его сайте презенташку. Сейчас начал читать последнее издание его книги рефакторинг
@@programisli ❤❤❤
Злых людей очень много я сделал проект два года назад большой 100% одна логика классный и до сих пор этой программой пользуюсь но меня так за хейтали сказали что все говно то что я передовал вектор по значению а не по ссылки и сказали что каждый мой проект хуже другого я аж стиснялся показывать код хотя он вполне читабельный
Как говорится, если в вашем проекте нет говнокода - у меня для вас плохие новости
Тот случай, когда не знал, но писал код по Мартину
Только если именовал и оформлял верно. Можно срезать углы, но главное не мусорить
Думаю что Твиттер виноват.. как их аву вижу хочется чужой код обгадить..)))
Орешек Виталий
Ты про Батю?
У меня есть предположение что твиттер - это наглядное представление "ошибки выжившего": адекватные люди просто меньше комментируют, либо, вообще, реже заходят в твиттер.
Я редко захожу и комментирую, потому что просто не хочу.
Многие порядочные люди, заходя в Твиттер, начинают жутко гадить, врать и выводить на эмоции. В жизни возвращаются к этичному поведению, и начинают оправдываться, что Твиттер для того и предназначен.
У меня только одно предположение - виновато ограничение на короткие посты
@@Sander38rus это просто место для безопасного слива эмоций без последствий, как и другие соцсеточки в целом. в некоторых странах за вербализацию своих мыслей собеседнику можно получить по лицу, что дисциплинирует. Обратной стороной этого служит меньший градус недовольства в реальном мире, что порой губительно для общества
А богатые уроды его просто покупают))
Я думаю, что вся проблема кроется в токсичности современной аудитории, а не в чистом (говняном) коде 😊
Мне кажется, что проблема современного айти, как и нынешнего поколения, в том, что когда чью-то работу критикуют, то людям стало проще назвать человека токсичным, чем решать проблему. Этакий бодипозитив в мире айти. 'Это не г-код, это ты просто ты токсичный".
Первый!
Второй
Есть говнокод и есть говнокритика.
Нет смысла держать в гараже Ламборгини, если в твоей деревне нет ни дорог, ни заправки...
У Ламборгини есть SUV