SORU
10 Ocak 2011, PAZARTESİ


Switch ifadeleri her zaman varsayılan bir madde içermelidir?

İlk kod yorumları (bir süre önce), iyi uygulama tüm geçiş deyimleri varsayılan bir madde içerir olduğunu söylediler. Geçenlerde bu tavsiyeyi hatırladı ama gerekçesi neydi hatırlayamıyorum. Bana oldukça garip geliyor şimdi.

  1. Her zaman varsayılan bir açıklama dahil olmak üzere, mantıklı bir nedeni var mı?

  2. Bu dile bağlı? Zaman kullandığımı hatırlamıyorum - belki bu diğerleri için bazı diller için geçerlidir?

CEVAP
9 Mart 2011, ÇARŞAMBA


Gerektiği durumlarda geçinneredeyseher zaman default bir dava var.

default kullanma nedenleri

1.'Beklenmeyen bir değer

switch(type)
{
    case 1:
        //something
    case 2:
        //something else
    default:
        // unknown type! based on the language,
        // there should probably be some error-handling
        // here, maybe an exception
}

2. İdare 'varsayılan durumlarda özel bir davranış olduğu.' eylemleri,

Bu menü tabanlı programlar ve bash kabuk betikleri bir SÜRÜ görürsünüz. Ayrıca bir değişken durum anahtarı ama başlatılmamış dışında bildirirken bu görebilirsiniz, ve her durumda farklı bir şey için yeniden başlatır. Burada varsayılan aşağı değişkeni erişen satır kod bir hata yükseltmek değil de başlatmak gerekiyor.

3. Birini göstermek için bu davayı halletmişsiniz kodunuzu okuma.

variable = (variable == "value") ? 1 : 2;
switch(variable)
{
    case 1:
        // something
    case 2:
        // something else
    default:
        // will NOT execute because of the line preceding the switch.
}

Bu aşırı basitleştirilmiş bir örnek oldu, ama önemli biri kod okuma variable 1 veya 2 dışında olamaz neden merak gerekmez mi.


default kullanmak için aklıma gelen tek durumanahtarı onun oldukça açık bir denetleme olduğu zaman diğer seçeneklerden çok mutlu bir şekilde yok sayılabilir

switch(keystroke)
{
    case 'w':
        // move up
    case 'a':
        // move left
    case 's':
        // move down
    case 'd':
        // move right
    // no default really required here
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cdgotx

    cdgotx

    8 Kasım 2011
  • martin shervington

    martin sherv

    7 EKİM 2011
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008