Re: Как не стоит писать код
От: Undying Россия  
Дата: 01.03.12 11:39
Оценка:
Здравствуйте, Огинский Евгений, Бурда Роман, Вы писали:

ОЕБ>В статье рассматриваются некоторые ошибки, которые часто встречаются в коде программ. Даны рекомендации, как не стоит писать код, на какие этапы разработки кода нужно обращать внимание в первую очередь.


Кстати, вы не видите противоречий между этими двумя приемами упрощения?

Первый прием. Код:

// Не отправлено ли уведомление ранее и наступило ли время отправки уведомления.
if (!context.Order.Fields.ContainsKey("OrderMailSend") 
  && (context.Order.PaymentStatus == PaymentStatus.Paid 
      || (context.Order.PaymentStatus == PaymentStatus.InProgress 
        && GetPaymentMethod(context).StartsWith("banktransfer")
     )
   )
)
{
  IEnumerable<string> email = GetEmailAddress(context);
  MailNotification.SendOrderConfirmation(email, context.Order);
  // Отмечаем что уведомление о заказе отправлено
  context.Order.Fields.Add(
    new EntityField { Name = "OrderMailSend", Value = true });
}


Заменен на:

if (!OrderMailSent(context) && MailNotificationRequired(context))
{
  IEnumerable<string> email = GetEmailAddress(context);
  MailNotification.SendOrderConfirmation(email, context.Order);
  MarkOrderAsSent(context);
}


Что здесь по сути сделано? Сложные вызовы заменены на короткие псевдонимы.


Второй прием. Код:

public int Quantity
{
  get
  {
    int quantity;
    if(int.TryParse(TxtQuantity.Text, out quantity))
      return quantity;
    
    return 0;
  }
}


Заменен на:

public int Quantity
 {
   get
   {
     if (!int.Valid(TxtQuantity.Text))
       return 0;

     return int.Parse(TxtQuantity.Text);
   }
 }


Что здесь по сути сделано? Множественное использование короткого псевдонима заменено на множественное использование сложных вызовов.

Можно объяснить почему в первом примере хорош один прием, а во втором примере хорош прием обратный первому?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.