Шлюха программирование
2 поста
2 поста
Как запомнить абстрактный класс в C# за 5 минут? Шлюхи, бордель и ваш мозг в огне! ??
Привет, кодер-лох! ?? Забыл, что такое абстрактный класс в C#? Не плачь в углу с учебником — сегодня я объясню это так, что даже твой кот запомнит. И да, здесь будет много шлюх, мат и сломанные мозги. Поехали!
Что такое абстрактный класс?
Коротко и по-быстрому:
— Нельзя создать экземпляр (т.е. new AbstractClass() — иди нахрен, ошибка).
— Может содержать абстрактные методы (т.е. "сделай это, сука, но я не скажу как").
— Наследники обязаны всё реализовать (иначе — вылетишь как проститутка из борделя за лень).
Мнемоника для тупых: "Мадам-шлюха и её девки"
Представь бордель. В нём есть:
Мадам-мразь (она же абстрактный класс):
— Сама не трахает клиентов (нельзя new Мадам() — только трясёт кокосами и кричит: "Вы что, охуели? Я же мадам, а не шлюха!").
— Говорит правила: "Все девки должны уметь 'трахать по-итальянски' и 'делать массаж с перцем'!" (это ваши абстрактные методы).
— Если не научишься — вылетишь (иначе класс-наследник будет абстрактным, а это путь в никуда, бро).
Девки-проститутки (ваши наследники):
— Обязаны выполнять правила мадам (реализовывать абстрактные методы).
— Могут добавить своё (например, "трах с вибратором — +500 к баблу").
— Если не сделают — вылетят на мороз (ошибка компиляции: "Ты не девка, ты лузер!").
Пример кода, чтобы мозг не взорвало
// Это МАДАМ. Она не шлюха, а УЧИТЕЛЬНИЦА ПОХАБНЫХ НАУК.
abstract class Мадам {
public abstract void ТрахнутьПоItaliani(); // Абстрактный метод — без реализации!
public virtual void ДатьНапиток() {
Console.WriteLine("Виски с цианидом — бесплатно");
} // Виртуальный метод — можно переопределить, но не обязательно.
}
// Это ДЕВКА-ЛУЗЕРКА, которая не выучила урок.
class Ленчик : Мадам {
public override void ТрахнутьПоItaliani() {
Console.WriteLine("Ленчик трахает как сдохшая рыба... Мадам в ярости!");
}
// Забыла про ДатьНапиток()? Не страшно — виртуальный метод можно не трогать.
}
// Это ДЕВКА-ПРОФИ, которая знает своё дело.
class Катя_С_Тату : Мадам {
public override void ТрахнутьПоItaliani() {
Console.WriteLine("Катя в деле — клиенты плачут от счастья!");
}
public override void ДатьНапиток() {
Console.WriteLine("Катя даёт текилу... и сразу к делу!");
}
}
Почему это работает?
— Мадам = abstract class — без неё бордель (программа) рухнет.
— Девки = наследники — без них мадам просто тряпка с криками.
— Правила = абстрактные методы — если не выполнить, получишь баттхерт от компилятора.
Каждый раз, когда забудешь про abstract, вспоминай:
"Мадам не трахается сама, но заставляет всех трахаться правильно!" 💦
Вывод
Теперь ты никогда не спутаешь абстрактный класс с обычным. Помни:
— Нет new — нет проблем (и никаких шлюх в одиночку).
— Правила есть правила (абстрактные методы обязаны реализовать).
— Если не научишься — вылетишь (как Ленчик после первой же смены).
P.S. Если коллега спросит, как запомнить ООП — шли его сюда. Пусть тоже посмеётся... или заревнует. 😈
Ставь лайки, если теперь C# для тебя — как бордель, а не кошмар экзамена. И да пребудет с тобой... override!
Удачного собеседования, малята.
Как шлюхи объясняют ковариантность в C# — запомнишь на всю жизнь (и стыдно будет забыть)! ??
Привет, кодер-неудачник! Ты когда-нибудь путал ковариантность, контравариантность и вообще зачем это всё нужно? Не стесняйся — все мы там бывали. То in, то out, то компилятор орёт, что «cannot convert...», а ты как дурак смотришь на экран и думаешь: «Бля, это же как с этими... шлюхами в том сериале!»
Ну что ж, сегодня я объясню тебе всё на пальцах, но с использованием шлюх. Потому что если не на эмоциях — не запомнишь.
Почему это больно?
В C# есть три сценария работы с типами:
- Ковариантность (out) — когда ты можешь подсунуть более конкретный тип вместо общего.
- Контравариантность (in) — когда ты можешь подсунуть более общий тип вместо конкретного.
- Инвариантность — когда никакой хуйни не будет, только строгий тип.
Звучит как магия? Нет, братан, это проституция в ООП.
Шлюха №1: Ковариантность (out)
Фишка: «Вышла с олигархом — считай, что с мужиком».
Представь:
- У тебя есть шлюха, которая работает только с олигархами (Derived).
- Но ты её записываешь в список «работает с мужиками» (Base).
- Почему можно? Потому что олигарх — это мужик, а не наоборот!
Код для тупых:
class Мужик {}
class Олигарх : Мужик {} // Наследуется, да
IEnumerable<Олигарх- олигархи = new List<Олигарх>();
IEnumerable<Мужик- мужики = олигархи; // Работает! Ковариантность (`out`)
- IEnumerable<T> — ковариантен благодаря out T. Ты выпускаешь (out) олигархов как мужиков.
Мнемоника:
- «Out — шлюха выебала олигарха, считай, что мужика!
- Если вышла с Rolls-Royce — значит, с машиной вышла».
Шлюха №2: Контравариантность (in)
Фишка: «Ебёт мужика — считай, что олигарха».
Теперь:
- У тебя есть шлюха, которая работает со всеми мужиками (Base).
- Ты её нанимаешь для олигархов (Derived).
- Почему можно? Потому что мужик может оказаться олигархом (а не наоборот)!
Код для тупых:
Action<Мужик- обработатьМужика = (m) =- Console.WriteLine("Ебашим мужика");
Action<Олигарх- обработатьОлигарха = обработатьМужика; // Работает! Контравариантность (`in`)
- Action<T> — контравариантен благодаря in T. Ты принимаешь (in) мужиков как олигархов.
Мнемоника:
- «In — шлюха ебёт мужика, считай, что олигарха!
- Если взяла любого в подъезде — может, это Ротенберг».
Шлюха №3: Инвариантность (никакой in/out)
Фишка: «Ты — олигарх? Нет? Тогда вали нахуй!».
А теперь представь самую принципиальную шлюху:
- Она работает ТОЛЬКО с олигархами (Derived).
- Если ты предложишь ей просто мужика (Base) — она скажет: «Ты шо, еблан? У меня контракт только с Ротенбергом!».
- И даже если олигарх придёт — она не согласится считать его «просто мужиком».
Код для тупых:
List<Олигарх- олигархи = new List<Олигарх>();
List<Мужик- мужики = олигархи; // ОШИБКА! Инвариантность.
- List<T> — инвариантен. Нету in/out - никаких преобразований. Тип жёстко фиксирован, как принципы шлюхи после 30.
Мнемоника:
- «Инвариантность — шлюха не ебёт никого, кроме олигархов.
- Ни мужиков, ни бомжей — только паспорт Ротенберга!»
Как не облажаться?
- out = выходи с олигархом, но считай его мужиком - сужение типа (Derived - Base).
- in = входи к мужику, но считай его олигархом - расширение типа (Base - Derived).
- Без in/out = только как в контракте - никаких хитростей (инвариантность).
Лайфхак:
Каждый раз, когда пишешь List<T> или Dictionary<TKey, TValue>, вспоминай:
- «Если шлюха не ставит галочку «подходит для всех мужчин» в профиле — значит, она инвариантна. Ищи другую».
Почему это гениально?
Потому что:
1. Эмоции = память. Ты не забудешь про шлюх, даже если забудешь синтаксис C#.
2. Юмор снимает стресс. Теперь компилятор будет кричать «invariant», а ты улыбнёшься и поправишь код.
3. Ты станешь легендой в команде. «Братан, а как ты запомнил контравариантность?» — «Да шлюхами, чё».
P.S.
Если после этого ты всё равно запутаешься — значит, ты слишком трезвый. Или не смотрел «Горько!».
А если запомнил — ставь лайк, комментируй «Спасибо, теперь шлюхи в моём коде», и не забудь: в C# всё решают контракты... и проститутки. ??
P.P.S. Инвариантность — это когда шлюха сказала: «Ты не Ротенберг? Тогда даже не звони». А ковариантность/контравариантность — это когда она согласна на компромисс. Выбирай, какая тебе ближе.
P.P.P.S. Автор не несёт ответственности за ваши мысли о ковариантности на свиданиях. Но если помогло — пиши в личку, устроим контравариантный квест. ??
Материал предназначен для новичков программирования. Сегодня мы изучим принципы SOLID.
Вот мнемоника для принципов SOLID, построенная на ярких, провокационных примерах с элементами чёрного юмора (требуется осторожность в использовании, но зато запомнится надолго):
---
S — Single Responsibility
«Саша-шлюха не моет окна и не продает спайс — у неё ОДНА работа: клиент кончил и ушёл, а не в шоке от её „многофункциональности“!»
Если она пытается совмещать всё подряд (проституция, ремонт, нарко-дилерство), клиенты сбегут. Как класс в коде — одна ответственность = меньше багов и паники.
---
O — Open/Closed
«Оля-шлюха НЕ переделывает базовый прайс-лист (закрыто для изменений), но добавляет VIP-опции через партнёров (открыто для расширения) — клиенты не в обиде, а в экстазе!»
Хочешь новую услугу? Не ломай старое — расширяй через наследование (например, «золотой дождь» для новых клиентов, а старым — как раньше).
---
L — Liskov Substitution
«Лена-шлюха: если в объявлении „элитный сервис за 5к“, клиент не должен получить „бюджет-версию“ за те же деньги — иначе он разобьёт дверь!»
Подкласс («VIP-Лена») должен безболезненно заменять суперкласс («обычная Лена»). Если пообещал «люкс» — не подменивай на «хрущёвку».
---
I — Interface Segregation
«Инна-шлюха не впаривает „премиум-пакет“ с массажем тому, кто хочет просто поговорить — интерфейсы разделены, и клиент не в ярости!»
Не заставляй клиента платить за то, что ему не нужно (как класс, зависящий от ненужных методов). Лучше дай выбор: «только разговор», «разговор+объятия», «разговор+…».
---
D — Dependency Inversion
«Диана-шлюха работает ЧЕРЕЗ агентство (абстракция), а не напрямую с клиентами-маньяками — зависимости инвертированы, и нервы целы!»
Высокоуровневый модуль (Диана) не зависит от низкоуровневого (клиенты). Всё через контракт (агентство) — если клиент сбежал, найдут нового, а Диана не в депрессии.
---
Как запомнить?
Повтори 3 раза:
«Саша Ольга Лена Инна Диана — каждая знает своё дело, а не лезет в чужое! Как в SOLID: одна роль, не ломай рабочее, не ври в обещаниях, не навязывай лишнее, держи дистанцию!»
Удачного собеседования, малята.
Это было 3000 лет назад когда били сайты знакомств lovePlanet, open24 и примерно в то время зародился вконтакте. Я был студентом и познавал романтические знакомства. Я познакомился с девушкой и уже было три свидания, но она куда то пропала. Я погрустил три дня и пошёл на новое свидание. Хотя эта девушка мне очень понравилась. Почти влюбился. Сижу с новой девушкой, приятно общаемся. Приходит SMS "Привет меня предки вывезли на дачу, но я вернулась. Когда встретимся? ". С новой дамой я ещё был мало знаком, а к старой пригрелся. Думаю как же отвадить новую. Так как бабочки заиграли с новой силой. Тогда я был человек чувствительный, не хотел обидеть. И придумал хз почему сказать, что я парень в сексе бывалый и хочу попробовать сделать анилингус. В моей голове я думал после этой фразы получу по щам и останется только заплатить за счёт и ехать к первой. Но новая дама согласилась. К такому жизнь меня конечно не готовила. После чаепития мы телепортировалась ко мне домой. Душ. Чмоки. После она спокойно села на кровать раздвинула рогатку и видимо ждёт. У нас ещё в то время среди пацанов было принято держать слово. Итог. Много лет женаты трое детей. В годовщину свадьбы всегда вспоминаем эту историю и смеемся. Мне было конечно любопытно почему она согласилась на это странное предложение. А потом жена рассказала, что когда была в лагере был там парень. Вожатый или отдыхающий не помню. Он предложил соитие, но не обычное, а "языческое". Потому что резины не было. И всё там вылезал, как голодная собачка. И на неё это произвело впечатление. Всё таки это был её первый раз. Вот такая романтика. Пишу с мобилы, а это не просто. Жена передаёт всём привет.
Мне 36 лет, и я подозреваю, что у меня легкий аутизм. В какой-то момент я осознал, что упускаю что-то важное.
Обычно я не смотрю людям в глаза, когда разговариваю. Это отвлекает меня от мыслей. Раньше я не придавал этому значения, но потом обратил внимание на детали.
Вел напряженный разговор с одним парнем и глянул на его лицо, и оно немного другое, какие-то гримасы непонятные. Потом я поспрашивал, и оказалось, это были злые глаза, как мне объяснили, он пытался меня напугать.
Я обычно строил конфликты так. Анализировал действия и слова. Действия — высший приоритет. Скажет это — скажу то, начнет действия — отвечу. Иногда сам начинал действовать. Иногда словами выводил на действия, чтобы мне не предъявили, что первый начал драку.
И это получается, что я что-то важное упускал. Может, глаза используют не только в конфликтах, вот буду разбираться.
Я программист и приболел депрессий. Но не той когда ходишь грустный и что то от тебя хочет девочка с голубыми волосами, а когда ломается память и ты забываешь на какой свет надо переходить улицу по светофору. Уволился, сходил к доктору и сижу на качественных американских антидепрессантах и все налаживается. Думаю чем заняться и решил делать ремонт в ванной и понял что все самое лучшее это немецкое. Инсталляции, клеи для плитки, смесители, инструмент и.т.д. И задумался почему так. Вот пример купил, как то раньше унитаз и что то пошло не так и я научился по звуку и запаху определить, что соседи на всех этажах сверху делают в ванной. Кто покакал, кто пописал, като зубы почистил. В этот раз этот навык не пригодился потому что фрицы предусмотрели и добавили заглушки причем каркасного цвета. Красный цвет ты видишь и не спотыкаешься. Как они догадались, как все предусмотрели загадка. На моих работать в ИТ думать о пользователе вообще не приветствуется. Есть всегда главный инженер программист по совместительству дегенерат который диктует свою аутистическую волю всем остальным включая начальству и говорит клиентам что они не правильно хотят и хотеть надо другое. Другой пример купил насос отечественный для подкачки шин. Ты его можешь достать из коробки, но вот засунуть обратно целая логическая задачка. Опять думаю за техническим дизайном стоит отечественный инженер по совместительству вы знаете кто. Есть лобзик от бош там можно уложить в два раза больше провода. Наши бы ребята интеллектуальной мысли локти кусали говоря если не можешь уложить провод то и лобзиком пользоваться не надо тебе. Моему дому 4 года и стоит домофон где есть две загадочные кнопки решетка и звездочка. Я руку даю на отсечение, что главный мыслитель на заводе домофонов кричал можете убить меня, но я вам не позволю написать на кнопках отмена и вызов. Так же я люблю собирать мебель, но вот схемы к ним думаю вы знаете. Их можно понять только тогда когда мебель уже собрана. А предложение нарисовать нормально без всяких М8 и М6 и добавить QR код где сисятенькая девушка все подробно соберет и все покажет думаю закончится убийством или самоубийством. У многих гигантов мысли сразу возникнет возражение ну ты же образован ты же изучал черчение и прочее. Но только вот я не любитель схем, страданий, читаний инструкций на говно техническом языке я любитель собирать мебель, устанавливать инсталляций и быстро убирать насос в кейс.
Предлагаю на пикабу дать возможность пользователям править комментарии и посты если там есть что то не грамотно написано, а так же ставить запятые где нужно. Ну и за это давать ачивки. Если что сам я из малограмотных. Но порыв у людей что то исправить виден не вооруженным взглядом. Так я думаю можно автопроверялку прикрутить по мимо браузерной.
Мы семья программистов работающих на удаленке и живем то ли на Урале то ли в Урале кому как нравится. Но у нас короткое лето и не хватает теплого апреля - мая и сентября - октября. Хочу на эти месяцы переезжать и снимать жильё. Но условия там должна быть такие красивая природа, хороший интернет, часовой пояс Москва +-2 часа и детский сад. Тащусь от гор учусь летать на параплане. Какой город посоветуйте?