ООП vs %name%
    , размышления о проектировании
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    Правила раздела:
  | Страницы: (4) 1 [2] 3 4 все ( Перейти к последнему сообщению ) | 
    ООП vs %name%
    , размышления о проектировании
  | 
         
         
         
          
           Сообщ.
           #16
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата Астарот @  При копании в чужом коде все равно не поможет. Какой-нибудь "наблюдатель" можно реализовать сто и одним способом, и когда поймешь, что смотришь именно на него, только в профиль, тогда будет уже поздно - из глаз будут течь кровавые слезы, а уши завернутся в трубочку от мата ![]() А тебе не кажется, что одна из причин этого - отсутствие знаний о паттернах у писавшего код и, как следствие, отсутствие в документации, комментариях и коде всем понятных названий и обозначений?   	  | 
    
| 
         
         
         
          
           Сообщ.
           #17
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата D_KEY @  А тебе не кажется, что одна из причин этого - отсутствие знаний о паттернах у писавшего код и, как следствие, отсутствие в документации, комментариях и коде всем понятных названий и обозначений?  ![]() Так может он и написал, просто не там, где ты копаешься   Добавлено Вообще, если понимать "наблюдатель", как что-то вроде "издатель-подписчик", а этот паб-саб понимать еще шире, то получится, что в какой-то мере аспектно-ориентированный подход в целом реализует этот самый паттрен   Добавлено Цитата D_KEY @  Паттерны есть вообще почти во всем    Вопрос в том, описаны ли они так же хорошо, как для ООП. Для функциональщины вроде видел литературу, но сам не читал. Да ну? Вспоминай, что за зверь, потому что кроме "композиция функций", "рекурсия" и "карринг" фиг что встретишь, не говоря уже о полноценных паттернах     | 
    
| 
         
         
         
          
           Сообщ.
           #18
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Есть мнение, что, если твой язык не позволяет реализовать паттерн один раз в виде библиотечной функции/класса/whatever, то это дерьмовый язык. Что значит «полная поддержка ООП»? В каком языке есть «полная поддержка ООП»? Цитата JoeUser @  2) Есть ли приемы/методики проектирования не менее удобные чем объектно-ориентированное? Есть. Тысячи их. Например: Прикреплённая картинка 
		
			Есть. Монады, например.Аппликативные функторы. CSP. Сотни их.  | 
    
| 
         
         
         
          
           Сообщ.
           #19
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата korvin @  Есть мнение, что, если твой язык не позволяет реализовать паттерн один раз в виде библиотечной функции/класса/whatever, то это дерьмовый язык. Возможно оно и так, но деньги, как правило, платят за код на дерьмовых языках     | 
    
| 
         
         
         
          
           Сообщ.
           #20
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата D_KEY @  Возможно оно и так, но деньги, как правило, платят за код на дерьмовых языках Ну, это уже другой вопрос, вне этого холивара =) Впрочем, в любом случае, паттерны — это не правила, а примеры, не нужно возводить их в абсолют, а то придёт Оби-Ван Кеноби =)  | 
    
| 
         
         
         
          
           Сообщ.
           #21
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата  Есть. Тысячи их. Это очень плохая и манипулятивная картинка.  | 
    
| 
         
         
         
          
           Сообщ.
           #22
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Ох уж эти мне монады. Забавно, что несмотря на то, что, в отличие от хаскеля, в эликсире нет встроеного каррирования и ленивости, некоторые господа все равно тащат в эликсир эти ваши монады в виде странных библиотек делающих странные вещи. Такое впечатление, что многие любители функциональных языков давно перестали страдать от этих  
        
        	  | 
    
| 
         
         
         
          
           Сообщ.
           #23
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         "Устоялся" это слишком громко сказано. Просто "фабрика" достаточно удобное название. А вот в случае с другими думать о том, является вот эта вот штука мостом или адаптером тупо лениво, так что для них находятся более удобные названия. Например, "враппер" - по-моему это самое универсальное слово, описывающее почти что угодно и которое все понимают     | 
    
| 
         
         
         
          
           Сообщ.
           #24
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата OpenGL @  "Устоялся" это слишком громко сказано. Просто "фабрика" достаточно удобное название. Ну вот на мой взгляд в этом и заключается польза от любого паттерна. Удобное название для некоторого вида архитектурных решений, которые прошли проверку временем и в том или ином виде встречаются чуть ли не в любой программной системе.  | 
    
| 
         
         
         
          
           Сообщ.
           #25
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата applegame @  Ох уж эти мне монады. Забавно, что несмотря на то, что, в отличие от хаскеля, в эликсире нет встроеного каррирования и ленивости, некоторые господа все равно тащат в эликсир эти ваши монады в виде странных библиотек делающих странные вещи. Такое впечатление, что многие любители функциональных языков давно перестали страдать от этих  ![]() Учитывая что монады как бы совсем не из функциональщины - да     | 
    
| 
         
         
         
          
           Сообщ.
           #26
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата D_KEY @  Ну вот на мой взгляд в этом и заключается польза от любого паттерна. Удобное название для некоторого вида архитектурных решений, которые прошли проверку временем и в том или ином виде встречаются чуть ли не в любой программной системе. Ну хз. По-моему эти названия нифига неудобные потому что они не говорящие абсолютно. Вот, допустим, ты забыл, что такое "мост" или "посетитель" - вспомнишь, для чего они, зная только их название?  | 
    
| 
         
         
         
          
           Сообщ.
           #27
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата OpenGL @  Вот, допустим, ты забыл, что такое "мост" или "посетитель" - вспомнишь, для чего они, зная только их название? Раз забыл, значит редко используешь. Значит да, лучше обсудить детали. И значит в этом конкретном случае от паттерна толку не было. Но я таки видел большие монолитные системы, которые жили лет по 10 минимум и там паттернов применялось много(как правило по делу), а их знание упрощало жизнь во всех смыслах(как минимум - поддержка кода и обсуждения). Другое дело, что мне не нравятся монолитные системы и последние тенденции в разработке вроде как тоже от этого отходят. А там и кода меньше и сложности. Добавлено Цитата Астарот @  Учитывая что монады как бы совсем не из функциональщины - да  ![]() Раскрой мысль, плиз   Добавлено Цитата Астарот @  Цитата D_KEY @  Паттерны есть вообще почти во всем    Вопрос в том, описаны ли они так же хорошо, как для ООП. Для функциональщины вроде видел литературу, но сам не читал. Да ну? Вспоминай, что за зверь, потому что кроме "композиция функций", "рекурсия" и "карринг" фиг что встретишь, не говоря уже о полноценных паттернах ![]() Сходу не нашел. В процессе наткнулся на статью на хабре Вот ещё что-то Последняя ссылка может быть интересна автору темы   Но мне почему-то кажется, что была или книжка или прям серия статей на буржуйском. Но видимо глючит память     | 
    
| 
         
         
         
          
           Сообщ.
           #28
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата D_KEY @  Раскрой мысль, плиз  ![]() Монада - это такой хитросделанный пальцем зверек, который по сути про точки. То есть монада Try выглядит как-то так: Цитата  Try.of(...) .success(....) .failure(....) А функциональщина она как раз про бесточечную нотацию, кажется. Почему монады постоянно относят к ФП для меня загадка   Да и слышно про них только при слове "хаскель". Добавлено Цитата D_KEY @  Сходу не нашел. В процессе наткнулся на статью на хабре Ее видел, там вообще статья странная. Вон та картинка в ней тоже встречается. Народ в комментариях матерится   Добавлено Кстати, тут спрашивали про монады в эрланге - http://erlang.org/pipermail/erlang-questio...rch/042557.html  | 
    
| 
         
         
         
          
           Сообщ.
           #29
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Есть такое паттерн "Цепочка обязанностей", а не монада ли это случаем?   
        
          | 
    
| 
         
         
         
          
           Сообщ.
           #30
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата Астарот @  Монады и точки - это взаимно перпендикулярные сущности.Монада - это такой хитросделанный пальцем зверек, который по сути про точки. То есть монада Try выглядит как-то так Цитата Астарот @  Потому что в императивщине монады используются достаточно редко и всегда можно обойтись и без них, а в Хаскеле, наоборот, без монад вообще невозможно жить.Почему монады постоянно относят к ФП для меня загадка  Да и слышно про них только при слове "хаскель".  В последнее время, монады активно применяются в C# и JS для асинхронного I/O, просто многие не знают, что это монады. Я говорю о Promise и async/await. Но это тоже костыли на самом деле. Цитата JoeUser @  Нет. 	 Есть такое паттерн "Цепочка обязанностей", а не монада ли это случаем?    |