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

    +117

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    #region methods
    
    private bool _updatingState;
    
    public class ProcessArgs : EventArgs
    {
    }
    
    internal event EventHandler<ProcessArgs> OnBeforeProcess;
    
    public abstract void Process(IEnumerable<DataSource> data);
    
    // Тут еще много всего, на удивление есть и методы
    
    #endregion
    
    #region properties
           private readonly IList<IResult> _results = new List<IResult>(100);
            private void buildResultsList()
            {
               //код
            }
       // ну и немного свойств
    #endregion
    
    #region events
      public delegate IEnumerable<int> Strategy();
    
            public class StrategyEventArgs : EventArgs
            {
                public Strategy Strategy { get; set; }
            }
            public event EventHandler OnResultsLoading;
    
            private void raiseOnResultsLoading() 
           {
              foreach (EventHandler handler in OnResultsLoading.GetInvocationList())
                          handler(this, EventArgs.Empty);
           }
    #endregion
    
    #region members
    // пусто - все мемберы сидят по другим region
    #endregion

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

    Запостил: eval_2009, 05 Января 2011

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

    • foreach (EventHandler handler in OnResultsLoading.GetInvocationList())
                            handler(this, EventArgs.Empty);
      Не знает, написавший, делегатов...
      Ответить
      • В некоторой степени, достаточно:
        OnResultsLoading(this, EventArgs.Empty);
        Ответить
        • А это еще один его способ увеличить количество нечитаемого говна
          http://govnokod.ru/4808
          Ответить
          • >способ увеличить количество нечитаемого говна
            Это не только говно, но ещё и опасное говно с точки зрения многопоточности.

            Что будет, если по среди этого foreach в другом потоке произойдёт добавление нового обработчика события
            _event+=OnОбработчик
            ?
            Конечно же хрень...
            Ответить
            • Ничего не произойдет - он не вызовется только но этого и следовало ожидать (цикл идет по специально созданному листу а не внутреннему, в котором хранятся указатели на обработчики).
              У этого метода есть право на жизнь, но в ограниченных случаях. К примеру когдя я гарантированно хочу вызвать все обработчики несмотря на возможные ошибки:

              foreach (EventHandler logHandler in OnLogEvent.GetInvocationList())
              {
              try
              {
              logHandler(this, dataToLog);
              }
              catch (Exception ex)
              {
              lastResortLogger(ex);
              //Exceptions inside loggers won't be escalated to the app
              }
              }
              Ответить
      • Кстати, похожий пример, я как-то видел в мсдне майкрософта, не смотря на его коренную не корректность.
        Ответить
    • // пусто - все мемберы сидят по другим region
      Это оригинальный комментарий?
      Ответить
    • прикрой говно реджинами
      Ответить
      • реджинами дубовицкими
        Ответить
        • дубинами роговицкими

          в свое время микрософт прикрыл реджинами килолитры автогенеренного кода для страничек в asp.net
          я тогда очень смеялся
          но потом микрософт вынес его в отдельный файл, и придумал паричал классы
          и я понял что реджины -- не так уж и плохо. класс, размазанный по сорока пяти файлам -- куда хуже
          Ответить

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