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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    if (_availabilityOfThisPersonnel == null)
         _availabilityOfThisPersonnel = new List<Availability>();
    if (_availabilityOfThisPersonnel.Any())
        _availabilityOfThisPersonnel.Clear();

    vldalx, 10 Июля 2015

    Комментарии (1)
  2. C# / Говнокод #18460

    +142

    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
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    /// <summary>
            /// Обновление данных о объекте
            /// </summary>
            /// <param name="theObject">ссылка на объект</param>
            public void Update(IPersistentObject theObject)
            {
                IDbCommand updateCommand = null;
                try
                {
                    using (updateCommand = CreateUpdateCommand(theObject))
                    {
                        updateCommand.Connection.Open();
                        updateCommand.ExecuteNonQuery();
                    }
                }
                catch (DbException ex)
                {
                    int code = 0;
                    if (ex is SqlException)
                    {
                        code = ((SqlException) ex).Number;
                    }
                    if (code == 229)
                    {
                        ex.Data.Add("Name", theObject.ClassInfo.Name);
                        ex.Data.Add("Description", theObject.ClassInfo.Description);
                        ex.Data.Add("Action", "UPDATE");
                        throw new InvalidOperationException(
                            String.Format("Ошибка обновления объекта [{0}] - {1} (ID = '{2}')",
                                          theObject.ClassInfo.Name,
                                          theObject.ClassInfo.Description,
                                          theObject.ID), ex);
                    }
                    if (code == 207 || code == 208)
                    {
                        throw new InvalidColumnException(theObject.ClassInfo, ex);
                    }
                    //theObject заменен на theObject.ID. Нечитабельно, но ... Т. к. при вычислении ToString()
                    //для показа объекта иногда задействуются методы загрузки данных
                    //названия объекта. Таким образом при высоком уровне изоляции транзакции
                    //мы получим зависание если будет попытка загрузить данные заблокированные транзакцией.
                    TraceLogger.Log(String.Format("Update {0}({1}){4} - {2}\n{3}", theObject.ID, theObject.ClassInfo,
                                                  ex.Message, ex.InnerException, theObject.GetInfoToTraceMessage()),
                                    TraceTypeEnum.UpdateStatement);
                    throw;
                }
                finally
                {
                    if (updateCommand != null)
                    {
                        updateCommand.Connection.Close();
                    }
                }
            }

    смертельный прием using
    и добьем соперника используя finally как фаталити

    перехват исключения тоже хорош, авторский комментарий добавляет изюминку

    vldalx, 10 Июля 2015

    Комментарии (6)
  3. C# / Говнокод #18459

    +142

    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
    public IndividualService Service
            {
                get { return _service; }
                set
                {
                    if (value == null || !value.IsDNSeriaHeader)
                        _service = value;
                    else
                    {
                        if (!IsLoading && Initialized)
                            XtraMessageBox.Show("Услуга по записи о ДН не должна быть заголовком ДН", "Внимание",
                                            MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }

    MessageBox на сеттере в EDM (если говорить в терминах Entity Framework)

    vldalx, 09 Июля 2015

    Комментарии (0)
  4. C# / Говнокод #18454

    +142

    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
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    private MonthCalendarModel GetMonthCalendar(int year, int month, string roleId, string doctorId)
    {
    var days = new List<DayCalendarModel>();
    var today = DateTime.Today;
    var firstDay = new DateTime(year, month, 1);
    int firstDayOfWeek = 0;
    if (firstDay.DayOfWeek == DayOfWeek.Monday)
        firstDayOfWeek = 1;
    if (firstDay.DayOfWeek == DayOfWeek.Tuesday)
        firstDayOfWeek = 2;
    if (firstDay.DayOfWeek == DayOfWeek.Wednesday)
        firstDayOfWeek = 3;
    if (firstDay.DayOfWeek == DayOfWeek.Thursday)
        firstDayOfWeek = 4;
    if (firstDay.DayOfWeek == DayOfWeek.Friday)
        firstDayOfWeek = 5;
    if (firstDay.DayOfWeek == DayOfWeek.Saturday)
        firstDayOfWeek = 6;
    if (firstDay.DayOfWeek == DayOfWeek.Sunday)
        firstDayOfWeek = 7;
    for(int i= firstDayOfWeek-1; i > 0; i--)
    {
        DateTime day = firstDay.AddDays(-i);
        days.Add(new DayCalendarModel{Available = -1, Day = day.Day, Enabled = false, CssClass = string.Empty});
    }
    DateScheduler dateScheduler = GetDateScheduler(roleId, doctorId);
    DateTime date;
    for( date = firstDay; date.Month == month; date = date.AddDays(1)) {
        string cssClass = dateScheduler.CheckDate(date, true) ? "free": "disbl";
        bool enabled = (date >= today);
        cssClass = enabled ? cssClass : string.Empty;
    	days.Add(new DayCalendarModel(){Available = 3, Day = date.Day, Enabled = enabled, CssClass = cssClass, Date = date.ToString(FormatHelper.DateOnlySerializationFormat)});
    }
    if(date.DayOfWeek != DayOfWeek.Monday) {
        for(; GetDayOfWeek(date.DayOfWeek) <= 7; date = date.AddDays(1)) {
            days.Add(new DayCalendarModel()
                {Available = -1, Day = date.Day, Enabled = false, CssClass = string.Empty});
            if(date.DayOfWeek == DayOfWeek.Sunday) {
                break;
            }
        }
    }
    
    // пропущено ...
    }
    
    private int GetDayOfWeek(DayOfWeek dayOfWeek)
    {
        if(dayOfWeek == System.DayOfWeek.Sunday)
    	{
            return 7;
        }
        return (int)dayOfWeek;
    }

    полученный List<DayCalendarModel> используется для отображения пользователю календаря с отмеченными днями работы врача

    vldalx, 09 Июля 2015

    Комментарии (0)
  5. C# / Говнокод #18452

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    var lst = new List<string>();
    foreach (String parameterName in parameters.Keys) // parameters это Dictionary<String, Object>
    {
    	lst.Add(parameterName + ": " + parameters[parameterName].ToString());
    }

    Долгий вариант перебора словаря: перебор ключей в цикле и на каждой итерации получение по ключу значения из словаря

    vldalx, 08 Июля 2015

    Комментарии (136)
  6. C# / Говнокод #18451

    +142

    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
    public String ExecuteInDispancerMonitoring
            {
                get
                {
                    string st = "";
                    IndividualService service = this;
                    int iter = 100;
                    while (iter != 0)
                    {
                        if (service.ParentService != null)
                        {
                            service = service.ParentService;
                            if (service is DispanserMonitoring)
                            {
                                st = service.CalcStrServiceName; // Строковое представление названия услуги
                                if (service.CalcStartDate.HasValue)
                                {
                                    st += " c " + service.CalcStartDate.Value.ToShortDateString();
                                }
                                return st;
                            }
                        }
                        else
                        {
                            return st;
                        }
                        iter--;
                    }
                    return "";
                }
            }

    vldalx, 08 Июля 2015

    Комментарии (8)
  7. C# / Говнокод #18438

    +128

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    1:
    Task task = Task.Factory.StartNew(delegate {
        Program.CirCle(wsdlUrl, new List<int> { RayID });
      });
      Task.WaitAll(new Task[] { task });
    
    2:
    if (recordsForTerm.Length.Equals(0)) {
    }

    Консольная приблуда.
    1. Создаем поток и лочим основной - зачем?
    2. == для слабых?

    zombiee, 06 Июля 2015

    Комментарии (9)
  8. C# / Говнокод #18433

    +144

    1. 1
    bool X = Glob.UserIsAdmin ? true : false;

    alex493049469, 03 Июля 2015

    Комментарии (1)
  9. C# / Говнокод #18428

    +142

    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 int[] ListToArray(List<int> list)
    {
    	try
    	{
    		int[] res = new int[list.Count];
    		
    		for (int i = 0; i < list.Count; i++)
    		{
    			res[i] = list[i];
    		}
    		
    		return res;
    	}
    	catch (Exception) { return new int[0]; }
    }

    А ещё он заполняет List<> в цикле for

    rumpowered, 01 Июля 2015

    Комментарии (4)
  10. C# / Говнокод #18424

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    public int MapToLowerPageBoundary(int rowIndex)
    {
           return (rowIndex / RowsPerPage) * RowsPerPage;
    }

    Нашел этот метод в проекте... Интересно о чем думал автор...

    alex493049469, 01 Июля 2015

    Комментарии (45)