|
Страшные слова
|
|||
---|---|---|---|
#18+
Скажите пожалуйста, что такое Design Patterns (шаблоны проектирования), где их берут, с чем их едят и вообще кто их использует и зачем? А то мне тут говорят, что это вроде как самое элементарное и каждый должен это знать и если не знаешь, то вроде ты и не программер уже. А я вроде как-то 5 лет программлю на Delphi, сейчас на C#, и потом еще PHP, JavaScript, а про Design Patterns не в зуб ногой. И еще мне тут наговорили страшных слов из 3 букв: DDD, TDD, UML. И главное, что мне хотелось бы узнать насчет этих слов - насколько это все сложно изучить быстро и вообще сколько времени на это нужно? Куда сходить по этому поводу, что почитать?. И второе - кому это нужно и насколько распространено? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2009, 12:23 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MikeKSИ второе - кому это нужно и насколько распространено? Нужно это самим разработчикам, больше никому. Однако, если Вам незнание этого никак не мешает зарабатывать деньги программизмом, то и не забивайте голову. Это, знаете, сродни открытию того, что макароны, оказывается, удобнее есть ложкой. Однако, если вы и вилкой до этого справлялись неплохо, то ради чего заморачиваться-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2009, 23:20 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MikeKSИ второе - кому это нужно и насколько распространено?Тут один человек красиво сказал: Дедушко_Но_молодойпетушинное потрясание красивым программистским гребнем ввиде тяги к технологическим изыскам вместо функциональности и сопровождаемости. Есть специалисты, которые решают проблемы бизнеса, а есть такие, которые не решают, и со знанием Design Patterns и UML это слабо коррелирует. Хотя в принципе знание Design Patterns, так же как и остального, не повредит. И вообще образование - это хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 00:04 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
Уважаемые господа! Нигде меня не забанили, напротив, я сейчас активно ищу информацию по этим позициям. Как я понял из разговора с одной из западных компаний, они считают знание TDD, UML и Design Patterns как само собой разумеющееся, точнее они считают, что это основы, без которых и программистом Вас считать никто не будет. Так вот я и пытаюсь теперь понять, в действительности ли это так а) за бугром и б) у нас. И сколько у нас компаний (в %), которые ведут разработки подобным образом? Я, вообще, правильно понимаю, что это все инструменты, которые в основном используются на больших проектах, где нужно организовать работу многих программистов? Или еще многие пишут, что это позволяет сократить время на разработку, повысить ее качество и читабельность кода за счет унификации и т.п. Это действительно так? Кто-нибудь из присутствующих это на себе ощутил? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 00:28 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
И что такое DDD? Что почитать на тему UML, DDD, TDD, Design Patterns!? Чтобы научиться работать с этим барахлом!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 00:32 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MikeKSИ что такое DDD? Я только про отладчик знаю. MikeKSЧто почитать на тему ... Design Patterns!?Понять, что такое Design Patterns - Шаблоны проектирования , далее уже читать литературу и специальные сайты. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 10:41 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MikeKS, паттерн это стандартный подход к реализации типовой задачи грубо говоря если знать достаточно паттернов и уметь сводить свои задачи к типовым - время на проектирование сокращается время на разработку и дальнейшая поддерживаемость реализованного зависит исключительно от того насколько типизация и паттерн были притянуты за уши в одной статье про паттерны видел замечательные ступени в их изучении: 1. сначала вы используете их неосознанно .... N. в конце концов вы снова используете их неосознанно Что касается юмл - он просто нагляден для создания объектной модели (кстати модель суть часть паттерна, который так или иначе осознанно или неосознанно используют все) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 12:06 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
И шаблоны, и UML нужны не для разработки как таковой, а для общения в комманде, в том числе - с клиентами и подрядчиками. Это то же самое, что знание языков. Восточная мудрость гласит что-то вроде - человек, который знает один язык - один человек, два языка - два человека, и так далее. Хорошее применение и изучение шаблонов, это когда прочтя книжку, вы поняли, что и так правильно пользуетесь всем этим, но не знали, что кто-то это так назвает. Что касается UML, его нужно знать как дорожные знаки, потому как есть некие соглашения, и вы будете тупо выглядеть, если нарисуете схему похожую на UML, но обозначать она будет нечто совсем другое, одному вам понятное. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 13:15 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
CoolibinЭто, знаете, сродни открытию того, что макароны, оказывается, удобнее есть ложкой. Однако, если вы и вилкой до этого справлялись неплохо, то ради чего заморачиваться-то? Да, но единожды попробовав спагетти с ложкой, уверен, вы уже не станете крошить макарон. на эту тему ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 14:14 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MikeKSСкажите пожалуйста, что такое Design Patterns (шаблоны проектирования), где их берут, с чем их едят и вообще кто их использует и зачем? Патерны полезны, когда работаешь с языками низкого уровня, например С или С++. Если трудишся "под фраймверком" или со скриптовыми языками, то заморачиваться не приходится. В "фраймверках" и многие технологические решения уже приняты, что освобождает от множества проблем. MikeKSА то мне тут говорят, что это вроде как самое элементарное и каждый должен это знать и если не знаешь, то вроде ты и не программер уже. Не обращай внимания. Т.к.: MikeKSА я вроде как-то 5 лет программлю на Delphi, сейчас на C#, и потом еще PHP, JavaScript Оно тебе и не надо, т.к. работаешь не под теми инструментами, где важны эти знания. Меня например это знание хорошо выручает, т.к. работаю не только с 1С, но и с с++. Хотя стал замечать, что некоторые элементы применяю и в 1С. Наверно просто стал "узнавать" патерны в коде. вкусите множество сексуальных наслаждений с нашей новой платформой... (с) 1С ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 14:36 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MikeKS пишет: > Я, вообще, правильно понимаю, что это все инструменты, которые в > основном используются на больших проектах, где нужно организовать работу > многих программистов? Не совсем, только TDD, UML могут этому понять. Design Patterns - скорее элемент общей грамотности программиста, хотя конечно, знание их поможет понимать других. Или еще многие пишут, что это позволяет сократить > время на разработку, Не всегда. повысить ее качество и наверное, да. читабельность кода за счет > унификации и т.п. Это действительно так? Ну, и да, и нет. Это- инструменты, если уметь ими пользоваться,то будет эффект. Если не уметь, эффекта не будет. Даже, на счёт времени разработки, может появиться отрицательный эффект, поскольку и TDD, и UML -- это всегда некая накладуха, на которую нужно тратить время. Кто-нибудь из присутствующих > это на себе ощутил? Ощутил. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 16:31 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
gp пишет: > И шаблоны, и UML нужны не для разработки как таковой, а для общения в > комманде, в том числе - с клиентами и подрядчиками. На кой хрен заказчику видеть твои классы ? Ему знаешь ли до этого по барабану. Если речь идёт о диаграммах типа Use Case, то именно к разработке на мой взгляд они мало отношения имеют. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 16:34 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
trdm пишет: > Патерны полезны, когда работаешь с языками низкого уровня, например С > или С++. > Если трудишся "под фраймверком" или со скриптовыми языками, то > заморачиваться не приходится. > В "фраймверках" и многие технологические решения уже приняты, что > освобождает от множества проблем. Как раз при работе под фреймворками патерны полезны как никогда. Потому что во фреймворках часто эти паттерны и реализованы. Если ты их знаеш, то уже знаеш априори пол фреймворка. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 16:37 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
Вот так 'Вера Ивановна открыла для себя ТайДД'. Я начал реализовывать некий численный метод. В процессе использования обнаружил, что метод не всегда корректно работает, точнее - почти всегда некорректно. Оказалось, что он корректно сработал единственный раз, когда я его тестировал "обычным порошком". Я запускал некий метод из меню программы, он открывал окно, и вываливал график функции. Я вприглядку определил, что "пятен нет" и забыл. К моменту, когда выявилась неисправность, я уже благополучно вымарал и вывод графика из рабочей программы, и пункт меню, где "тестировал". Меня взбесила собственная тупость, и я решил так больше не поступать. Я незадолго прочел кой-что о TDD, и хотел применить на практике. Начал с того, что вынес метод и поля, которые методом использовались из хрен-знает-какого класса в собственный класс, отвечающий именно за данный численный метод. Вынес класс в собственный библиотечный проект. Это помимо всего прочего гарантировало, что я не использую какую-либо переменную из класса, который я не тестирую. Создал по одному тесту для известных свойств функции из мат. справочника. Сразу оказалось, что не все свойства напрямую представимы в виде тестов типа: f(X) = Y Более ценными оказались несколько теорем и их следствий, который рассматривались в том же мат. справочнике, и которые как раз выдавали эти самые связки f(X) = Y. Всего их было около 12-и. Естественно, я так же создал по одному тестовому методу для каждого известного проблемного случая. Каждый из этих методов имел вид типа: Assert.AreEqual(y, f(x)); Первое что я отметил, запустив NUnit, была скорость. Во-первых, я не ждал компиляции большущего приложения. Я тестировал малюсенький проект. Во вторых, я не лазил по меню, чтобы вызвать тестовый метод. Можно исправлять и запускать хоть по нескольку раз в минуту. Я тут же получил почти все красные лампочки, даже для тех наборов параметров, с которыми я тестировал при разработке раньше. Последнее меня удивило, ведь так точно работало в тот раз ! Начал разбираться, оказывается, в коде закомментирована одна строка, которую я много раз комментировал и откомментировал туда сюда, и в конце концов - оставил неправильный вариант каким то образом. После исправления одна зеленая лампочка таки-зажглась. ... Не могу вам передать, сколько раз я видел, что горят 3 из 20 лампочек, 18 из 20, 1 из 20 в разных комбинаторных сочетаниях, пока я переделывал код всего-навсего одного метода, чтобы добиться правильной его работы. Теперь представьте, сколько у меня было шансов решить, что наконец-то все заработало, и можно дальше не париться, тогда как метод работал только для некоторых параметров, но не для других. В процессе я выделил в тестируемом методе еще два служебных, которые могли самостоятельно использоваться как библиотечные функции для решения своих математических задач, и написал для каждой собственный набор тестов, штук по 10 для каждой, опять же прибегнув к авторитету предметной области - мат. справочнику. Оказалось, что в обеих подпрограммах основной программы были свои ошибки, но "погасить красные лампочки" в этом случае оказалось гораздо проще. Добившись, что все лампочки в конце-концов зажглись зеленым, я понял, что только теперь у меня есть гарантия что хоть это хоть как-то работает. Обозрев чудовищную простыню тестовых методов, я понял, что она уже гораздо длиннее тестируемого кода. И это было великолепно, потому что именно этот код имел ценность, а не код метода, который можно переписывать по 100 раз на дню, и все мало будет. По крайней мере я потратил время на то, чтобы создать гарантию правильного решения задачи, который и после моей смерти будет стандартным способом описывать правильное решение. Но в то время я еще не понимал этого, и считал, что я сделал нечто ламерское, неправильное и ненужное. Моей смерти ждать не пришлось, ибо стало ясно, что хотя метод работает теперь блестяще правильно, он все еще далеко не оптимален по времени и по памяти. И вот тут я понял, что усилия были в правильную сторону. Началось самое test-driven, до этого это была просто попытка привести к этой парадигме. Теперь у меня была свобода воротить в коде метода все, что хочется, я точно знал, что ничего не сломаю, потому что "волшебные пузырьки" тут же все покажут красным светом. От алгоритма и камня на камне не осталось: я все переписал заново, убрав рекурсию, и много кой чего еще. Два служебных метода тоже были полностью переписаны. Я еще никогда так легко и уверенно не переписывал ничего. Тут до меня стало доходить, в чем сила TDD. Сам код не так уж и ценен. Гораздо ценнее усилия по проверке, что этот алгорити работает. И эти усилия аккумулируются в необходимом и достаточном колличестве в виде отдельных тестовых методов, и поэтому больше не будет никакого: "главное ничего здесь не трогать, слава богу - работает", потому что код, покрытый тестами, легко поставить с ног на голову и обратно, если понадобится, и быть уверенным, что ничего не сломается. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2009, 18:50 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MasterZiv trdm пишет: > Патерны полезны, когда работаешь с языками низкого уровня, например С > или С++. > Если трудишся "под фраймверком" или со скриптовыми языками, то > заморачиваться не приходится. > В "фраймверках" и многие технологические решения уже приняты, что > освобождает от множества проблем. Как раз при работе под фреймворками патерны полезны как никогда. Потому что во фреймворках часто эти паттерны и реализованы. Если ты их знаеш, то уже знаеш априори пол фреймворка. малость уточню. я 10 лет занимаюсь 1С-ом и не разу у меня не встал вопрос "как организовать код" Потому что выбор не приходилось делать: инструменты ограничены. Вот когда связался с проектом на С++ сразу почувствовал что чего-то мне не хватает, полез разбираться: http://www.forum.crossplatform.ru/lofiversion/index.php?t379.html Вот тут на них напал и понял, что самое оно.... отседа и выводы, так сказать по своему опыту... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2009, 01:56 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
trdm Патерны полезны, когда работаешь с языками низкого уровня, например С или С++. Здраааавствуйте!.. Когда это С и С++ стали языками низкого уровня? Я что опять в своей жизни что-то проспал? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2009, 03:34 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
trdm wrote: > малость уточню. я 10 лет занимаюсь 1С-ом и не разу у меня не встал > вопрос "как организовать код" Потому что это - 4GL, там все эти паттерны на фиг не нужны, там для всего этого должны быть языковые средства. Эти все особенности давно известны (в смысле об этом много сказано и написано), т.е. -- что применение Design Patterns очень зависит от языка программирования. -- что в некоторых языках некоторые паттерны просто не нужны, поскольку либо встроены в язык, либо проблем, которые они решают, не существует. Например, хорошо известно, что всяческие фабрики в языках с метаклассами типа SmallTalk-а не нужны вообще. Или не нужен паттерн Visitor в языках, поддерживающих мультиметоды (множественную диспетчеризацию). Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2009, 11:25 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
VxS_ wrote: > Здраааавствуйте!.. Когда это С и С++ стали языками низкого уровня? Я что > опять в своей жизни что-то проспал? Ну как, они конечно формально языки высокого уровня, но есть языки и более крупные. Есть просто т.н. 4GL, есть и в рамках языков высокого уровня более "крупные" языки. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2009, 11:27 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
VxS_trdm Патерны полезны, когда работаешь с языками низкого уровня, например С или С++. Здраааавствуйте!.. Когда это С и С++ стали языками низкого уровня? Я что опять в своей жизни что-то проспал? По всей видимости - проспали, потому как С и С++ действительно являются языками низкого уровня. Точнее они охватывают диапазон уровней, в том числе и низкий, чем в значительной мере и обусловлена их популярность. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2009, 16:19 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
gpVxS_trdm Патерны полезны, когда работаешь с языками низкого уровня, например С или С++. Здраааавствуйте!.. Когда это С и С++ стали языками низкого уровня? Я что опять в своей жизни что-то проспал? По всей видимости - проспали, потому как С и С++ действительно являются языками низкого уровня. Точнее они охватывают диапазон уровней, в том числе и низкий, чем в значительной мере и обусловлена их популярность. Что в вашем понимании "охватывают несколько уровней"? И что вы понимаете под "низкоуровневым языком"? В моем понимании - низкоуровневый язык - это язык, в котором мы напрямую работаем с машинными командами. Если вы считаете, что assembly-вставки делают С++ низкоуровневым, то тогда делфи с его asm ... end; вы тоже считаете низкоуровневым, а точнее "охватывающим несколько уровней"? На мой взгляд, какая-то отсебятина. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2009, 23:57 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
MasterZiv Ну как, они конечно формально языки высокого уровня, но есть языки и более крупные. Есть просто т.н. 4GL, есть и в рамках языков высокого уровня более "крупные" языки. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2009, 00:01 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
VxS_, Низкоуровневым С и C++ делает работа с памятью. Посредством работы с памятью в C и С++ есть возможность писать системно-зависимый код, не прибегая к нестандартным расширениям языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2009, 01:31 |
|
Страшные слова
|
|||
---|---|---|---|
#18+
gpVxS_, Низкоуровневым С и C++ делает работа с памятью. Посредством работы с памятью в C и С++ есть возможность писать системно-зависимый код, не прибегая к нестандартным расширениям языка. Вот оно что... У нас с вами совершенно разное понимание "что есть низкоуровневый язык". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2009, 04:22 |
|
|
start [/forum/topic.php?fid=33&fpage=38&tid=1548543]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 167ms |
0 / 0 |