هل هناك سبب لتفضيل التحول على تعليمة if مع شرط واحد فقط؟

StackOverflow https://stackoverflow.com/questions/1638241

سؤال

ولقد وجدت التعليمة البرمجية التالية في مشروع فريقي:

Public Shared Function isRemoteDisconnectMessage(ByRef m As Message)
    isRemoteDisconnectMessage = False
    Select Case (m.Msg)
        Case WM_WTSSESSION_CHANGE
            Select Case (m.WParam.ToInt32)
                Case WTS_REMOTE_DISCONNECT
                    isRemoteDisconnectMessage = True
            End Select
    End Select
End Function

وناهيك عن أن وظيفة لايوجد نوع الإرجاع (I يمكن بسهولة إضافة 'كما منطقية')؛ ما أنا أتساءل غير، يمكن أن يكون هناك أي سبب لتفضيل فوق على (بالنسبة لي، أكثر قابلية للقراءة من ذلك بكثير) رمز التالية؟

Public Shared Function isRemoteDisconnectMessage(ByRef m As Message) As Boolean
    Return m.Msg = WM_WTSSESSION_CHANGE AndAlso _
           m.WParam.ToInt32() = WTS_REMOTE_DISCONNECT
End Function

لطرح السؤال بشكل عام: هل يعقل أن استخدام switch (أو، في هذه الحالة، Select Case) كتلة - و / أو كتل متداخلة - لاختبار حالة واحدة؟ هذا ربما أسرع من if مباشرة؟

هل كانت مفيدة؟

المحلول

إذا كنت قلقا حول أداء ... الشخصي. وإلا لا يمكنك الذهاب الخطأ المخطئين على جانب القراءة ...

نصائح أخرى

وأنا لا أعتقد أنه يهم في الواقع من حيث السرعة، وينبغي أن يكون المترجم قادرا على تحسين ذلك.

وأعتقد أنه سيكون مجرد مسألة تفضيل.

وبلدي وبحكم التجربة هو أن استخدام عبارة التبديل عندما يكون عدد من إذا / الشروط شيء آخر أكبر من الثلاثة. ليس لدي أي بيانات وراء لماذا هذا الأمر يبدو معقولا تماما بخلاف قراءة / الصيانة ويبدو أن الانخفاض حيث بلغ عدد إذا زاد / شيء آخر الشروط.

وأعتقد أن الإجابة في حالة معينة كنت قد أعطيت ليست - أنه لا معنى له، كما هو مقترح في إجابات أخرى المرء يأمل أن المجمعين أن تحسين بعيدا أي خلافات العملية

.

وكنت وضعت المال على هذا يجري قليلا من قطع ولصق وحذف الترميز - اتخاذ مجموعة المعمم للبيانات حالة متداخلة واستخراج أن بت واحد والتي تمنحك نعم / لا نتيجة تحتاج

.

إذا كان هذا شيئا من هذا القبيل في الخط و / أو كان هناك استدعاء دالة حيث تم تعيين علامة عودة ثم ربما واحدة، ربما تكون في نقطة حيث يمكن للمرء أن يبدأ لتبرير ذلك، ولكن ليس كما هو عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top