Си диез / Говнокод #16266 Ссылка на оригинал

0

  1. 1
IEventDetails evt = logger.GetEvent((Int32)((Object[])msg.ID)[0], (Int64)((Object[])msg.ID)[1]);

Нашёл свой код бородатой давности в одном решении, в котором присутсвует дедлок, а лезть в код не хотелось.
Вот теперь думаю, ковырять компонент дальше или пусть себе с дедлоком живёт.....

Запостил: TauSigma TauSigma, (Updated )

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

    • Дедлок я ещё не нашёл...
      Это что сразу глаза резануло.
      А используется это всё в стареньком озере потоков и msg передаётся из разных клиентов с разными параметрами.

      Я уже склоняюсь к мысли, что пора всё переписывать... Вот так выглядит объявление msg:
      internal enum EventsMessageId
      	{
      		Applications,
      		Events,
      		EventDetails,
      	}
      	internal class EventsMessage
      	{
      		public EventsMessageId Message { get; private set; }
      		public Object ID { get; private set; }
      
      		public EventsMessage(EventsMessageId message)
      			: this(message, null, null) { }
      		public EventsMessage(EventsMessageId message, Object id)
      		{
      			this.Message = message;
      			this.ID = id;
      		}
      	}

      Полиморфизм? Не, не слышал...
      Post/SendMessage какой-то получился...
      Ответить
      • так ID это Object или Object[] ?
        а то смысл (Object[])msg.ID)[0] мне не понятен
        Ответить
        • ID - это Object, который в потоке 2 раза кастуется в Object[] и распаковывается в Int32 и Int64...
          Ответить
      • >>: this(message, null, null)
        Куда конструктор с 3 параметрами спрятал?
        Ответить
        • Там WPARAM в строковом виде.
          Прятать в ID ещё и String мне совести не хватило...
          Ответить
            • Если EventsMessageId.Application, то ID=null
              EventMessageId.Events, то ID={ApplicationId}
              EventMessageId.EventDetails, то ID=new Object[] { {ApplicationId}, {EventId}, };
              Ответить
              • new Object[] { {ApplicationId}, {EventId}, }; сурово

                Id - хреновое имя для этой хуерги.
                Ответить
      • public EventsMessage(EventsMessageId message, Object id)

        О, стало быть можно создать 100500 обьектов с одним ID... Недурно.

        : this(message, null, null)

        А можно и без ID. Код настолько гибкий что высказывает из рук)
        Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8