1. C# / Говнокод #8217

    +968

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    private TList<ProductType> ProductTypeListTable
            {
                get
                {
                    ProductTypeService productTypeService = new ProductTypeService();
    
                    TList<ProductType> productTypes = productTypeService.GetAll();
                    foreach (ProductType pt in productTypes)
                    {
                        pt.Name = Server.HtmlDecode(pt.Name);
                    }
                    
                    return productTypes;
                }
            }

    Некая дорогущая АСП.НЕТ платформа. Ну и че там, будем читать базу, пока не надоест...

    Запостил: MagisterCrazy, 17 Октября 2011

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

    • >пока не надоест...
      базе
      Ответить
    • Прекрасный образец IoC/DI и ленивой загрузки данных
      Ответить
    • http://multator.ru/toon/5itkz3f9bxrj
      Ответить
    • кроме того что нет кеширования, еще и попытка изменения коллекции в foreach
      Ответить
      • А можно поподробнее, где тут изменение коллекции?
        Ответить
        • pt.Name = Server.HtmlDecode(pt.Name);
          Ответить
          • А я думал, тут изменяются элементы коллекции, а не сама коллекция.
            Ответить
            • и я об этом-же в своем первом сообщении. просто немного некорректно выразился
              Ответить
              • и что плохого в таких изменениях?
                Ответить
                • изменения коллекции во время проходом форича - приводит к выкидыванию исключения
                  Ответить
                  • как мы только что выяснили, коллекция тут не изменяется
                    Ответить
                  • В коллекции лежат объекты-ссылки типа ProductType. Они не меняются, меняются данные, на которые они ссылаются. А если там окажутся объекты-значения, то просто изменятся их копии.
                    Ответить
                  • учи мат-часть :Р
                    Ответить
    • Вообще-то из приведенного кода совершенно не понятен сарказм автора. Ну обрабатываем коллекцию, ну и что? Server.HtmlDecode всего лишь предобразовывает текст, а не обращается к базе.
      Ответить
      • а ProductTypeService список из воздуха, наверное, порождает
        Ответить
        • А почему вы считаете, что ProductTypeService этот список уже не породил? Там ProductTypeService.GetAll() вызывается всего единожды, а не в цикле.

          Кроме того, откуда такая уверенность, что ProductTypeService сам не кеширует этот список (если он например из базы берется)?
          Ответить
          • Отсюда мораль: внешне код - говно, но не зная тип ProductTypeService нельзя сказать: работоспособное это говно или нет.
            Ответить
          • > А почему вы считаете, что ProductTypeService этот список уже не породил?
            > new ProductTypeService();
            Ну не знаю, что там может заранее породить только-что созданный объект

            > ProductTypeService.GetAll() вызывается всего единожды
            Он вызывается при каждом обращении к свойству

            Кроме того, цикл с HtmlDecode как бэ намекает, что айтемы в списке всегда свеженькие
            Ответить
            • Я прокомментировал сарказм автора по поводу обращения к базе пока не надоест. В приведенном коде этого нет. Если бы автор указал где и как эта проперти вызывается, тогда да, можно было бы и посудачить о криворуких программистах.
              Ответить
            • Только, что созданный объект может читать данные из static переменной, или из Cache объекта. При этом, это может быть правильно реализовано с поддержкой многопоточного окружения. Говнокод тут в основном в создании сервиса внутри геттера, и в неправильном использовании этого геттера, т.к. я почти уверен в том, что тут подразумевался метод GetProductTypeListTable.
              Ответить
    • показать все, что скрытоvanished
      Ответить

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