1. ActionScript / Говнокод #17295

    −93

    1. 1
    2. 2
    -			facade.registerCommand(<enterprise>Constants.CUT_PUST_TRACKS_COMMAND, CutPustTracksCommand);
    +			facade.registerCommand(<enterprise>Constants.CUT_PUST_TRACKS_COMMAND, CutPasteTracksCommand);

    Ну, почти.

    Запостил: wvxvw, 11 Декабря 2014

    Комментарии (32) RSS

    • "Синглтоны зло! Ок назову тогда класс фасадом и совесть спокойна"...
      Последнее время при виде мвц фреймворков меня начинает колбасить. Такая штука чтобы отключить мозг и срать кодом.

      пс, разглядела константу
      Ответить
      • >Синглтоны зло
        Это зеленный или я что то пропустил.
        ЗЫ сейчас работаю над проектом. в нем кстати нет не одного сингелтона, конфиг к примеру выгружается из бД каждый раз когда нужно чего нить в нем узнать. причем каждый раз когда это нужно есть конечно местами обходные маневры типа funct($config) или global $config но это редкость. Когда я спросил у автора, что за нех? он ответил пока работает ничего менять не буду.
        Ответить
        • Вот тут обсуждали недавно: http://govnokod.ru/17198#comment257387
          Ответить
        • > сейчас работаю над проектом. в нем кстати нет не одного сингелтона
          Проект на PHP?
          В php синглтоны настолько одиноки, что умирают от одиночества по окончании обработки запроса.
          Ответить
          • не всегда есть же reactphp https://github.com/reactphp/react на некоторых фреймворках на пример slim можно получить ускорение. пытаюсь на писать интернет магазин на связке react + slim.
            Ответить
        • На самом деле в этом есть смысл, только не для приложений которые работают всегда меньше пятнадцати секунд. Если конфигурацию нигде не кешировать, то если ее поменяют, есть шанс, что приложение не нужно будет пререзапускать.

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

          Еще из смешных вещей. Вот не знаю, откуда оригинальные афторы почерпнули:
          public class ApplicationMediator extends Mediator implements IMediator
          {
              public static const NAME:String = "ApplicationMediator";
              . . .
          }
          . . .
          facade.retrieveMediator(ApplicationMediator.NAME);

          Т.е. задумка-то была сделать так, чтобы можно было заменить один медиатор другим, чтобы не создавать зависимости. Но дурак с иконой...
          Ответить
      • http://s9.postimg.org/b8z2hiljj/singletons_everywhere.jpg
        Ответить
      • Лен, а просто при виде фреймворков тебя не колбасит? куча фреймворков, которые исповедуют философию "единственного пути" и позволяют клепать проекты не приходя в сознание.
        это тот же jQuery...
        Насчет синглтонов: пусть у нас будут фабрики, и пофигу, синглтон отдается или у нас там пул
        Ответить
        • DI.
          Ответить
        • На самом деле - нет, не пофигу. Если там их много стоит за интерфейсом, то нельзя обещать, что состояние синглтона не поменяется. И такой любимый хомячками код:
          ApplicationControlerSingleton.getInstance().foo();
          ApplicationControlerSingleton.getInstance().bar();

          Начнет творить чудеса, если foo() поменяет что-то у одного из объектов, но на второй вызов getInstance() нам дадут не поменяный, а новый.
          Ответить
        • Каждый уважающий себя фреймворк, обязан исповедовать единственно верный путь. Свой. Иначе какой из него фреймворк?
          Ответить
        • Нет Вась, я люблю каждый раз изобретать вилосепед. Зачем мне уже готовый MVC или ORM или templating engine? Напишу-ка я свой! Тем паче что Главпитухпхпист завещал фреймворки вообще не использовать.
          Ответить
          • Как бы значение (и назначение) слова framework - рамка, ограничение. Использовать фреймворк - значит ставить себя в рамки, сознательно отказываться от каких-то возможностей в угоду соблюдения каких-то конвенций. Отсюда следует, что фреймворк, по определению (которое см. выше) не может быть однозначно хорошей вещью (если бы можно было наперед предсказать все, что хорошо кончается, то этот мир был бы скорее всего двухмерным, конечным, листом бумаги вставленным в печатающую машинку, умеюую печатать только одну букву).

            Рамки - это же не цель, и даже не инструмент. Вот тот же всем надоевший MVC - его нельзя получить из ограничений. Его можно только сконструировать, и фреймворк тут не помощник. Перефразируя: нет возможности создать такой фреймворк, который бы гарантировал, что при его использовании в приложении появится MVC. Вотличие, например, от возможности создать библиотеку для операций с разными типами данных, врезультате использования в которой обязательно в приложении будут использованы операции над типами данных.
            Ответить
            • > Вотличие, например, от возможности создать библиотеку для операций с разными типами данных, врезультате использования в которой обязательно в приложении будут использованы операции над типами данных.
              Это довольно странно. А если я буду использовать эту библиотеку из машинного кода - в машинном коде появятся операции с различными типами данных и сами типы данных?
              Ответить
              • Что значит "в машинном коде"? - весь код для электронных вычислительных машин всегда используется в машинном коде.
                Ответить
                • Значит что я пишу сразу в машинных кодах, и при этом использую эту библиотеку (вызываю функции из нее).
                  Ответить
                  • И что? Код в библиотеке все равно работает с типами данных, потому что ему все равно как и кто его вызывает.
                    Ответить
            • Использование операционной системы накладывает на меня определенные ограничения: я не могу монопольно забирать процессор в свое пользование, не могу напрямую общаться с оборудованием, и потому операционная система не может являться однозначным благом.


              Использование процессора накладывает на меня определенные ограничения: я могу пользоваться лишь тем, что представляет ассемблер этого процессора, потому использование процессора не всегда является благом.

              Использование одежды накладывает на меня определенные ограничения: например я не могу помочиться когда захочу: для этого мне нужно снять трусы, так что одежду нельзя использовать без ограничений
              Ответить
              • > Использование операционной системы накладывает на меня определенные ограничения.
                Именно так, и поэтому существуют програмы, которые не пользуются операционной системой.

                > Использование процессора накладывает на меня определенные ограничения
                Нет, не накладывает ограничения (т.как не известно, что такое процессор). Но если говорить о конкретном процессоре, или типе процессоров - то, конечно накладывает, именно поэтому есть програмы которые не работают на всех процессорах.

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

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

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

                Но речь не о конкретных фреймворках (тут ни один не упоминался), а о том, что под собой подразумевает это понятие. А так же об обычной ошибке, когда набор правил пытаются реализовать как набор утилит (MVC - это набор требований к системе вобщем, который не получится удовлетворить добавляя части к системе, если какие-то другие ее части этому требованию уже не удовлетворяют).
                Ответить
                • Не известно что такое процессор, но известно что такое операционная система, одежда и программа?
                  Ответить
                  • Именно: процессор может нетривиально выполнять разные роли в описаном контексте. А остальные - нет. Т.е. например, одежду можно использовать как ветошь для производства бумаги, но из контекста понятно, что такое использование не подразумевается. Процессор может быть абстракцией, или может быть чем-то конкретным, и при этом результат будет разным. Об операционной системе можно говорить и как об абстракции, и о какой-то конкретно выбраной, и результат будет тот же.
                    Ответить
                    • Просто для ясности, мы сидит на сайте govnokod.ru, на котором постят код говнопрограмм.
                      > Процессор может быть абстракцией..
                      Когда на этом сайте употребляется слово процессор, то имеется ввиду конкретное устройство, установленное в гнездо процессора на материнской плате. Какие еще абстракции, зачем тут все эти темы, я не могу понять, почему Вы вечно наравите от коекретики перейти к каким то абстрациям, говоря о том, что никто ничего не понимает кроме Вас, делая это в тех местах где это вообще не нужно.
                      Может тогда будем вести все разговоры оперируя только абстрациями? Простите конечно, но Вы какой то философией занимаетесь.
                      Ответить
                      • Какие еще обстракции, Василий? Ну тыж сам только что обстракцию зделал. "конкретное устройство, установленное в гнездо процессора на материнской плате" - это обстракция, Василий, такие дела.
                        Ответить
            • Все бы хорошо, да вот только slovari.yandex.ru/framework/en-ru/
              Ответить
              • И в чем противоречие? У многих слов есть много переводов, но для того, чтобы понять почему они стали такими, нужно так же знать этимологию, да и много еще чего.
                Ответить
                • >Использовать фреймворк - значит ставить себя в рамки, сознательно отказываться от каких-то возможностей в угоду соблюдения каких-то конвенций.
                  > И в чем противоречие?
                  > framework - рамка, ограничение
                  > slovari.yandex.ru/framework/en-ru/ -> framework - каркас, скелет
                  Просто Вы так говорите, как будто люди специально занимаются тем, что придумывают ограничения для себя, но ведь фреймворки делаются не ради ограничений, а ради предоставления определенного функционала, ограничения появляются как следствие. Использование фреймворка, есть использование того функционала, который был заложен в этот фреймворк, ведь он не может содеражать все на свете и на все случаи жизни, отсюда и ограничения, плюс сама реализация этого функционала так же накладывает ограничения, ведь могут не все учесть при реализации.
                  Ответить
                  • Не как будто, а так и есть. Люди специально придумывают ограничения себе. И, да, кроме того, чтобы словарь читать, его еще и понимать нужно. То, что одно из значений подходит для какой-то инерпретации еще не значит, что это то самое значение, которое нужно использовать. Более того, не нужно переносить смысл присущий в переводе слова на его источник.

                    Смылс фреймворка в добавлении правил, это эквивалентно более строгому ограничению. А вот представьте, есть такой язык Пролог, например, и в нем все - правила. Т.е. что-бы ни написали на прологе - все ограничивает, и как так жить?

                    Почему люди придумывают себе ограничения - вот это интересный вопрос, но на него есть ответ! Это следствие frame problem! Которая, если по-простому, говорит нам о том, что мир бесконечен, возможности бесконечны, и если мы их постараемся победить дедукцией, то мы никогда не сдвинемся с мертвой точки, потому, что дедукция работает только в мирах Хербранда, т.е. в конечных мирах.
                    А люди-то как с этим справляются? - Правильно, ограничивают себя, создают конечные модели, которые позволяют к ним применить дедукцию, чтобы получить какие-то универсальные знания о мире.

                    А еще с ограничениями связано много парадоксов, в том числе и в информатике, вот, например, Буриданов осел: чем больше осел знал о двух разных копнах сена, тем сложнее ему было выбрать лучшую копну.
                    Ответить
            • > будут использованы операции над типами данных
              Вы же доказывали что типов не существует, они уже появились?
              Ответить
              • Естесственно, я нигде не доказывал, что типов не существует. Я доказывал, что большинство выражающих свое мнение по этому поводу на говнокоде не имеют представления о предмете разговора.
                Кроме того, типы данных и програмные типы - это совсем разные вещи, которые описывают разные аспекты програм. Первые описывают сложность операций с данными, а вторые - правила логики первого порядка доказывающие возможность композиции функций.
                Ответить
                • > Кроме того, типы данных и програмные типы - это совсем разные вещи, которые описывают разные аспекты програм. Первые описывают сложность операций с данными, а вторые - правила логики первого порядка доказывающие возможность композиции функций.
                  Сложность? А может все таки они показывают объем памяти, выделяемый под хранение этого типа данных в ОЗУ? Другими словами говорят о том, как представляются эти данные в памяти.
                  Ответить
                  • Нет, типы данных ничего не говорят об объеме памяти. Типичный пример - можно не гарантировать что два немутабельных объекта, равных по значению будут занимать отдельные ячейки в памяти.
                    Более обобщенно, это нарушение (или соблюдение) правила субструктурной логики (логики не соблюдающей всех требований классической логики), а именно обмена (пермутации).
                    Ответить

    Добавить комментарий