LINUX.ORG.RU

Паттерны проектирования в Python

 , ,


0

3

Продолжаем цикл нубских вопросов :) Решился я таки сурьезно сесть за паттерны. Да еще на своем любимом Python... Так вот, сами паттерны особой проблемы не представляют, только вот одним чтением вики да книг сыт не будешь. Практики хочется. С адаптером и фабрикой я быстро разобрался, пару старых проектов поднял, да отрефакторил по самое не балуйся. С остальными тяжелее... Может лоровцы подкинут пару идей, чтоб вот так вот прям из практики, небольшие примеры (до пары тысяч LOC), чтобы прочувтвовать всю мощь красивой архитектуры живьем, так сказать?

Ответ на: комментарий от Virtuos86

затем, что на Django пишут крупные и очень крупные проекты. Когда объем переваливает за 50k LOC, проще переписать с нормальной архитектурой, чем поддерживать это говнецо. Я повидал достаточно проектов меньших по размеру, от которых просто воротит, и браться за них неохота, ибо без пол литра, ну вы сами понимаете

foreigner_web
() автор топика

С адаптером и фабрикой я быстро разобрался, пару старых проектов поднял, да отрефакторил по самое не балуйся.

Это как? Насовал одних только фабрик и адаптеров где только можно? А фабрику адаптеров сделал? А фабрику фабрик? А адаптер фабрики? Без этого - не тру!

yoghurt ★★★★★
()
Ответ на: комментарий от vasilenko

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

foreigner_web
() автор топика
Ответ на: комментарий от foreigner_web

Я к тому, что цель паттернов не в направленном их применении, и «разработка через паттерны» (иными словами поиск очередного паттерна, который бы тут применить) - тупиковый путь.

yoghurt ★★★★★
()
Ответ на: комментарий от foreigner_web

Разработка архитектуры - искусство, оно приходит с опытом. Надо много писать и ещё больше читать чужие исходники. Механическое вкорячивание паттернов или чего угодно - это ёбаный стыд.

vasilenko ★★
()
Ответ на: комментарий от yoghurt

я такого не писал... цель разобраться с ними на реальных примерах, а не совать их куда не попадя :) Посмотрите, хотя бы, примеры на википедии. Что-то из них понятно? Сомнительно. Пара «крайне абстрактных» классов, которые довольно тяжело привязать к какой-либо реальной ситуации. Когда я говорил про адаптер и фабрику, я поднял старый проект. Суть в том, что был написан парсер, который из нескольких форматов файлов (json, xml, csv и обычный dict в pickle файле) он рисовал хтмлку. Туда они встали просто как нельзя лучше. Точно такое же я хочу видеть и для остальных паттернов.. может не для всех, но хотя бы каких-нибудь. Пощупать, посмотреть, написать.

foreigner_web
() автор топика
Ответ на: комментарий от vasilenko

ебаный стыд - их не знать. сначала матчасть, потом практика... Вы привыкли иначе? лично я нет. Почему все думают, что если паттерны, то счас буду пихать их абы были? Как их выучить? Давайте, ваш метод? Чужие исходники... чем оно лучше? увидел хорошее решение и давай его вкорячивать во все места в своих проектах. Ага, путь самурая.

foreigner_web
() автор топика
Ответ на: комментарий от vasilenko

что общего между знанием паттернов и опытом? «лучше не знать, чем знать неправильно». можно написать сотни приложений и делать в них тупые ошибки. Как в принципе большинство пхпшников и делает...

foreigner_web
() автор топика

Для написания статей в Пандоре нужен редактор текста на базе Gtk с поддержкой тегов [b], [i], [u], [url] и т.д.
Чтоб читал/сохранял для начала два формата: lorcode и html.
Можешь также сделать подсветку синтаксиса, например для форматов python и ruby (для начала).

А вообще:

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

Novator ★★★★★
()
Ответ на: комментарий от Novator

вот это уже что-то))) благодарю)))

на цитату снова отвечу)) смысла заучить паттерны лично я не вижу. Суть в том, чтобы научиться... на конкретных ситуациях, и постепенным понимаем. А открыть вики или GoF и при каждом случае лезть туда «а какой бы мне паттерн впихнуть»... такое бывает от незнания или полнейшего непонимания.

foreigner_web
() автор топика
Ответ на: комментарий от anonymous

налетели, блин... Вы, если на Python писать не умеете, не нужно сюда свои 5 копеек совать. Если у Вас код - лапша, то это Ваша проблема, а не Python.

foreigner_web
() автор топика

Иногда что-то интересное пролетает на planet.python.org.

Вообще, не понятно что тебе нужно. Ты хочешь паттернов проектирования увидеть или идиоматический питонячий код?

PS о ненужности паттернов громче всех кричат те кто их не знает :).

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

увидеть я хочу действительно хорошую архитектуру))) а вообще, ближайшая цель - поближе познакомиться с паттернами, пощупать :)

foreigner_web
() автор топика
Ответ на: комментарий от foreigner_web

Если хочешь посмотреть на боевые проекты то рекомендую bottle.py . Не знаю как сейчас, а год назад меня оно впечатляло своим кодом.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

благодарю! хоть пару человек что-то смогли посоветовать)

foreigner_web
() автор топика
Ответ на: комментарий от vurdalak

Глупость сказал ты. А я сказал, что в динамических языках программирования, и в Python в том числе, выразительные средства языка не сковывают прогера и позволяют запиливать свои велосипедные паттерны. Зачем кому-то какие-то канонические паттерны. Сказал неосилятор, да. Но не видел/слышал я литературы про паттерны проектирования в лиспах, питонах, перлах. Нет востребованности, ибо не энтерпрайзные платформы, то бишь мало больших проектов? P.S. я когда-то натыкался на питоновский пакет, в котором автор реализовывал как-раз паттерны. Выглядело это странно, да и сейчас я его не найду.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Зачем кому-то какие-то канонические паттерны.

Затем что каноническими становятся наиболее часто применяемые и хорошие решения. И особенности языка тут ни при чем, в любом языке они есть.

Но не видел/слышал я литературы про паттерны проектирования в лиспах, питонах, перлах.

Потому что паттерны везде одинаковые, отличается их реализация и нужность/ненужность в конкретном языке. Синглтон — он и в лиспе синглтон.

vurdalak ★★★★★
()
Ответ на: комментарий от Virtuos86

Зачем кому-то какие-то канонические паттерны.

Ну, декоратор - это, внезапно, паттерн «декоратор». Собственно, почему не пользоваться паттернами, если они полезны? Command, Interpreter, даже Visitor.

tailgunner ★★★★★
()
Ответ на: комментарий от Virtuos86

Но не видел/слышал я литературы про паттерны проектирования в лиспах, питонах, перлах

Есть замечательная книжка «Design Patterns Smalltalk Companion», которая по сути является пересказом идей GoF на как-раз таки динамически типизированный Смолток.

yoghurt ★★★★★
()
Ответ на: комментарий от Virtuos86

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

foreigner_web
() автор топика
Ответ на: комментарий от yoghurt

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

Virtuos86 ★★★★★
()
Ответ на: комментарий от foreigner_web

Мне кажется, то, что вы ищете, в питоне решается на уровне создания библиотек/пакетов, типа PEAK-Rules, например.

Virtuos86 ★★★★★
()

Посмотри код bzr. Там паттерны во все поля. Удачи не блевануть.

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

anonymous
()
Ответ на: комментарий от vurdalak

Синглтон — он и в лиспе синглтон.

В питоне синглтон это модуль. Кто ваяет класс, тот конченный идиотик, ушибленный GoF. Та же ситуация с другими паттернами, например завязанными на систему типов.

anonymous
()
Ответ на: комментарий от foreigner_web

Я вот никак не могу только понять

Это потому что ты зелен еще. Паттерны нужны не для для разработки, а для общения, просто специализированный словарик, для быстрого выражения мыслей.

Сначала были куски кода, которые обозвали, а не наоборот, не забывай об этом.

anonymous
()
Ответ на: комментарий от Virtuos86

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

Так уже.

yoghurt ★★★★★
()
Ответ на: комментарий от anonymous

Какая разница, реализовывать паттерн как модуль или как класс? Он от этого не перестает быть паттерном.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Он от этого не перестает быть паттерном.

Золотые слова. Осталось только понять, что идиоматический код писался за три десятка лет до этой номенклатуры.

После этого остается последний шаг до озарения — Programming Motherfucker.

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

anonymous
()
Ответ на: комментарий от anonymous

После чтения книжки можно увидеть «о, а вот в этом месте ведь можно было сделать так вот!» раньше, чем выработаешь тот же шаблон сам. В этом и смысл.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

После чтения книжки можно увидеть

Юный неокрепший разум увидит разве что весь мир состоит из гвоздей.

anonymous
()
Ответ на: комментарий от anonymous

То есть посыл таков: книжки как способ систематизации знаний о ремесле — win, как обучение ремеслу — fail.

anonymous
()

С адаптером и фабрикой я быстро разобрался, пару старых проектов поднял, да отрефакторил по самое не балуйся

Кстати, ТС, покажи отрефакторенный код, xD.

anonymous
()
Ответ на: комментарий от anonymous

Паттерны нужны не для для разработки, а для общения, просто специализированный словарик, для быстрого выражения мыслей.

Открываешь чужой код и пишешь/звонишь/кричишь предыдущему разработчику, чтоб пообщаться и разобраться... Отчасти вы правы, не спорю, но лишь от части. Выражаться в терминологии паттернов все же понятнее, нежели на пальцах объяснять как там и что должно быть. Паттерны позволяют быстрее въехать в структуру. имхо, читабельность сейчас так же важна, как и функциональность. З.Ы. ну не совсем прям так же, но вы мыслю поняли

foreigner_web
() автор топика
Ответ на: комментарий от anonymous

я безусловно с Вами соглашусь, что правильная модульность рулит... но а что при чем? Давайте, best practices по модульной архитектуре и слабой связности.

foreigner_web
() автор топика
Ответ на: комментарий от anonymous

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

foreigner_web
() автор топика
Ответ на: комментарий от anonymous

Вы перед тем как за руль сесть сначала в автошколу ходите... а потом уже опыта набираетесь :) сделал - проанализировал - исправил и заново...

foreigner_web
() автор топика
Ответ на: комментарий от foreigner_web

Вы перед тем как за руль сесть сначала в автошколу ходите... а потом уже опыта набираетесь

Отличный пример, автошкола это тупая практика под присмотром инструктора.

Идеальная методика обучения разработке: лид, который бьет палкой, больно — никаких книжек не надо.

anonymous
()
Ответ на: комментарий от foreigner_web

Помочь хотите?

Конечно, линч это святое.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.