Pull to refresh
-7
0.3
Some Name @sswwssww

Middle Python Backend Developer

Send message

Мужик, читаю твои комментарии..прости за прямоту, но ты ооочень глуп :) Хватит себя закапывать, остановись.

Раз вы перешли на личности...Спасибо за ссылки на свои же блоги, из них я узнал что вас отовсюду выгоняют ***ми тряпками. И вместо того чтобы брать пользу из тейков ваших критиков вы еще дальше загоняетесь вглубь в свои шизо-теории. Буквально к каждому вашему выступлению вам в комментах пытаются открыть глаза на то что ваши тейки про тесты - на грани бреда.
А еще забавно было почекать проекты гения тестирования, открываю первые несколько случайных и во всех баги :) Чет совсем слабо с тестированием у вас ваших же проектах:

Что самое забавное, у вас указано 53 проекта, однако 90% из этого это hello word'ы и идеи для проектов(какие-то совершенно безумные зачастую). НО! Есть все же 4 'готовых продукта':
1. "Самописный поисковик". Который на самом деле юзает апи гугла(в самом описании вы об этом пишете но во всех остальных местах называете самописным)
2. Список "токсичных" сайтов. Это просто список с проукраинскими сайтами. Мда...оч. крутой проект;
3. Стартовая страница для браузера (судя по всему не работает)
4. Сайт со списком софизмов. Теперь понятно почему вы ведете диалог именно таким образом, не отвечая по существу а переходя на личности.

Ну что тут можно сказать, очень впечатляет(нет). Сильно сомневаюсь что вы когда-нибудь работали в какой-либо коммерческой продуктовой команде потому что с такими скилами и уровнем честности вас бы выгнали в течении недели.
Ну и в целом, я был абсолютно прав с самого начала, вы просто не умеете писать хороший код судя по вашим репам(все что там есть это crud-ы). Поэтому у вас и горит с того что вам приходится постоянно переписывать тесты. Повторюсь, просто научитесь программировать для начала, а уже потом можете давать советы остальным по TDD(судя по вашим же комментам на youtube все что вы о нём знаете это описание из Википедии) и так далее. Потому что TDD просто не работает с плохим кодом. Более того TDD нужен как раз для того чтобы вынуждать нас писать хороший код(но вы не читали книжек поэтому у вас какие-то свои выводы о том зачем нужен TDD)

что даёт основания полагать, что и в других похожих сценариях всё будет ок

то что у вас есть работающий тест на сценарий, не дает НИКАКИХ оснований считать что в других похожих сценариях он так же будет работать даже если схожесть кода 99%. Ваша проблема в том что вы думаете не исходя из абстракций, а исходя из реализаций. Т.е. и код вы пишете скорее всего снизу-вверх, от этого и ваши проблемы с тем что тесты нужно переписывать постоянно при изменении кода. Если вы пишите тесты для вещей которые априори будут постоянно меняться то и тесты вы будете постоянно переписывать, это называется хрупкими тестами.Есть хорошая статья с наглядным примером на эту тему.

Начинаю рефакторинг если он нужен

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

Более того, вы соглашаетесь в своей статье(раздел Когда TDD полезен : когда Заранее известен контракт) с моим посылом про:

А полная шиза получается когда вы пишете тест без абстракций и спецификаций, тогда да, вы будете постоянно выкидывать свои тесты при изменении кода

Поэтому я вообще не понимаю с чем вы тут спорите.

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

отправил в прод недотестированный код

с чего вы это взяли?

потому что даже не понимает, что даже если код уже проходит тесты - это не повод прекращать добавлять ещё тестов

с чего вы это взяли?
Судя по вашей статье и тейкам тут вы прям любитель риторического приема "соломенное чучело". Сами выдумываете аргументы за оппонентов и опровергаете их.

Bounded context и субдомены фактически одно и то же, просто с точки зрения бизнеса это субдомен, а с точки зрения реализации в коде это Bounded context (реализация иногда может отличаться и не маппиться 1 к 1 к бизнес модели). Т.е., условно, субдомен это пространство задач, а Bounded context пространство решений.(а так да, в контексте того что я обсуждаю решение, правильнее было бы использовать термин Bounded context)

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

видимо да.

Как тест может быть зеленым если в моей системе еще нет реализованной функциональности для которой я пишу этот тест? У меня как раз под рукой есть нужный пример из пет проекта:

class Calendar:
    def __init__(self, user: User, uow: UnitOfWork):
        self._user = user
        self._uow = uow

    def add_subscription(self, subscription: Subscription) -> None:
        pass
    ...

в этом примере у меня есть агрегат Calendar, так же у меня есть абстракция UnitOfWork и entities User и Subscription со всеми нужными полями(которые создавались на этапе проектирования). Пришло время писать поведение для системы. Я хочу реализовать метод add_subscription. Пишу для него тест:

def test_add_subscription(calendar: Calendar, subsription: Subscription):
    calendar.add_subscription(subscription)

    assert len(calendar.get_subscriptions()) == 1

запускают тест, он красный. Делаю так чтобы тест стал зеленым, т.е. пишу реализацию add_subscription:

class Calendar:
    def __init__(self, user: User, uow: UnitOfWork):
        self._user = user
        self._uow = uow

    def add_subscription(self, subscription: Subscription) -> None:
        with self._uow as uow:
            uow.subscriptions.add(subscription)
            uow.commit()
    ...

запускаю вновь - тест стал зеленым. Начинаю рефакторинг если он нужен, иначе - готово.

Необязательно сразу реализовывать ВСЮ доменную область(это зачастую невозможно). Нужно отталкиваться от необходимого, от того какой минимум нам нужен здесь и сейчас для решения конкретной проблемы бизнеса. Берешь домен, дробишь на субдомены, определяешь агрегаты(вместе с Entity, VO), и далее для реализации поведения уже юзаешь TDD.При таком подходе можно спокойно работать по agile. Да, соглашусь с тем что за счет этапа стратегического проектирования - DDD сильно буксует в начале(что попахивает waterfall), но потом уже ничто не мешает реализовывать фичи итерационно.

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

Вы определитесь, либо для вас из DDD следует waterfall(что не так), либо вы умудряетесь совмещать DDD с разработкой снизу-вверх(что есть оксюморон), либо считаете что DDD(и выражение разработка сверху-вниз) это не про "сначала разработать доменную модель".

А можете пояснить логику вашего утверждения DDD -> waterfall?

Если логика работы на верхнем уровне неочевидна

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

Если логика работы на верхнем уровне неочевидна, то при разработке «снизу вверх» нередко возникает необходимость менять спецификации интерфейсов к классам нижнего уровня (а то и выбрасыать эти классы целиком). То есть, часть труда пойдет на выброс.

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

У меня почти все вкладки(включая текущую) жрут +-140 мб

По каким дорожкам? Урезать функционал(отказаться от VR) чтобы нельзя было в игры играть и фитнесом заниматься?

Право - это искусственный конструкт, язык - это искуственный конструкт. Удачи жить в обществе без законов и языков.
Как из того что что-то является искусственно созданным - следует что этого существовать не должно? Иначе в чем ваш аргумент заключается?

Ну, то есть вы выступаете против интеллектульной собственности? Вы осознаете что это маргинальная позиция? Вы достаточно хорошо обдумали последствия отмены концепции интеллектульной собственности? Как пример, вы будете совсем не против если кто то 1 в 1 скопирует ваш сайт, логотип, название бренда, книгу, статью, любые патенты, ваши конфеденциальные данные? Если не против жить в таком обществе - то остается единственный вопрос. И он довольно актуален в таком цифровизированном мире как наш - в чем разница между "информацией" и материальным объектом?

Если бы этот бред не заплюсовали я бы прошел мимо, но раз на хабре так много марксистов...

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

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

Развитие производственных отношений определяется развитием производящих сил

- нет. Жду аргументов, а пока это ничем не подкрепленное утверждение (аппеляция к книжке 1867 года выпуска с теориями в вакууме за аргумент не считается, иначе все атеисты приняли бы христианство если бы им показали библию). Для начала, дайте хотя бы определение термину "развитие" в этом контексте.

Ну вот нет свободы слова в Саудовской Аравии. Лишнее это чтобы нефть добывать

Б****, может быть в Саудовской Аравии нет свободы слова потому что там шариат который ее наличие не подразумевает?
РФ конца 90х и начала 2000х - это хороший пример страны бензаколонки, с разваленным производством - но при этом имевшей достаточно высокий уровень свободы слова, по крайней мере с если сравнивать с текущей обстановкой.
А что скажете насчет Китая в котором нет демократии, но по уровню развития производства входит топ 2 стран мира? Вы совсем слепы со своей теорией, не видите что вокруг происходит.

Я даже уже не говорю о том что в США(это ведь основная тема нашего разговора) не демократия, в США конституционная республика.

Нынешнее ухудшение ситуации с демократией вызвана консолидацией капиталов

как же я устал слышать этот коммунистический бред. Эту хрень про "консолидацию капиталов" коммунисты несли весь 20-ый век. Когда Генри Форд открыл свои первые заводы по производству автомобилей - коммунисты начали со всех щелей выкрикивать "вот оно! Форд монополизирует рынок автомобилей! Первый признак краха капитализма!"(не напоминает вам типичную секту которая каждые несколько лет предвещает судный день? Это оно и есть, но в обертке материалистической диалектики), но потом начали появляться десятки других концернов и капитализм зацвел как никогда раньше. Скажу больше, мы никогда за всю историю развития человечества не видели такой разнообразный рынок, с такой высокой конкуренцией. А вы застряли в своем манямирке, где каждый год в мире все меньше и меньше компаний и конкуренции.

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

В вашей стране нет ЕЩЕ демократии не потому что уровень производства низкий, а потому что у власти люди которым она не нужна. Вот и все. Не нужно выдумывать причину опираясь на книжки из 20 века, достаточно снять розовые очки посмотреть на окружающую действительность.

Независимых игроков становится меньше. Технофеодализм подступает. А когда реальных игроков не сотни и тысячи, а десятки, то договориться проще келейно

да да да. Я вам показываю графики показывающие чуть ли не экспоненциальный рост количества независимых игроков на рынке - на что вы всегда можете сказать "а, ну так эТо нЕ РеаЛьныЕ игРоКи". Круто.
И не надо экстраполировать на весь мир пример из вашей нерыночной страны, где государство тупо вмешивается в рынок забирая компании себе и уничтожая конкуретнов(иногда буквально). В стране с ,как вы сказали, "демократическими" институтами любая мелкая компания может подать в суд на РеАльНоГо участника рынка - и выиграть, за примерами ходить далеко не надо.

Итог:
1) Мир устроен не так как писали об этом Маркс и Энгельс;
2) В мире есть страны со свободой слова. В вашей стране ее нет, но это не значит что ее нет нигде.

Information

Rating
2,337-th
Location
Cascade Station, None, Австралия
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle
From 250,000 ₽
Python
PostgreSQL
Fastapi
Google Cloud Platform
Kubernetes
CI/CD
Docker