паттерны программирования
Jul. 5th, 2022 03:53 pmГлавная боль с ними - это отсутствие нормальной документации.
Я только что хотел показать человеку "adapter". Казалось бы, пять строчек. Всё, что я нашёл - это какая-то бездна, и мой мозг стекает ещё до того, как я заканчиваю читать. Я понимаю паттерн, я не понимаю, что эти авторы хотят сказать.
Или, фабрика. Тривиальная же вещь: верни функцию с замыканием вместо значения. Но нет, всё, что идёт в статьях со словом "pattern", кажется, написано людьми, которые *любят* xml, писают кипятком от синтаксиса java и хочень бы хотели xlst вот ту вот очаровательную soap.
... Отсюда, вопрос, а есть ли кто-то, кто этим вопросом занимался и кто бы написал вменяемый обзор? Я понимаю, что у разных языков программирования разный уровень бойлерплейта (builder pattern для Rust/Java - это база и так и надо, в питоне можно, но будет выглядеть странно, потому что в аргументах можно много и выразительно варьироваться), но всё-таки, самый базовый простой обзор? Желательно, без махрового ООП.
Я только что хотел показать человеку "adapter". Казалось бы, пять строчек. Всё, что я нашёл - это какая-то бездна, и мой мозг стекает ещё до того, как я заканчиваю читать. Я понимаю паттерн, я не понимаю, что эти авторы хотят сказать.
Или, фабрика. Тривиальная же вещь: верни функцию с замыканием вместо значения. Но нет, всё, что идёт в статьях со словом "pattern", кажется, написано людьми, которые *любят* xml, писают кипятком от синтаксиса java и хочень бы хотели xlst вот ту вот очаровательную soap.
... Отсюда, вопрос, а есть ли кто-то, кто этим вопросом занимался и кто бы написал вменяемый обзор? Я понимаю, что у разных языков программирования разный уровень бойлерплейта (builder pattern для Rust/Java - это база и так и надо, в питоне можно, но будет выглядеть странно, потому что в аргументах можно много и выразительно варьироваться), но всё-таки, самый базовый простой обзор? Желательно, без махрового ООП.
no subject
Date: 2022-07-06 12:27 pm (UTC)> приложению не передали имя файла как аргумент, надо читать с stdin.
Как фича application framework'а например.
> разделять приложение foo на libfoo и само foo, которое использует libfoo.
Как фича системы сборки, которая определяет, например, собираемся ли мы под условный дебиан и включает это разделение. Вопрос лишь в том, нужны ли нам настолько умные фреймворки.
no subject
Date: 2022-07-06 12:32 pm (UTC)Ну то есть я хочу сказать, что утверждение, что "существование паттерна - это наша недоработка", это чрезмерный максимализм.
Хотя бы потому, что паттерны приходят и уходят по мере обнаружения, что они не решают какой-то (другой) класс вопросов.
Например, был паттерн garbage in garbage out, а сейчас это фу-фу-фу и так делать не надо. Просто так перестали писать. В старом коде это осталось. Если бы это было кодифицровано в инструменте, то было бы очень больно всё менять.
Короче, паттерны разработки - вполне себе разумное понятие и знание их тоже разумно. Если кто-то хочет часть паттернов утащить на уровень языка (например, тот же Питон в себя всосал и "decorator", и "builder"), то ура, ура. Но это не отменяет самой концепции и пользы разумного (не перегруженного оопшностью) каталога оных.
no subject
Date: 2022-07-06 01:10 pm (UTC)no subject
Date: 2022-07-06 01:11 pm (UTC)Для меня это паттерн (ок, анти-паттерн) разработки. Я его могу идентифицировать и либо ему следовать, либо с ним бороться.