سؤال

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

veryLongVariableName.Id = datasetVeryLongVariableName.Id
veryLongVariablename.Something = datasetVeryLongVariableName.Something
etc.

يمكن أن يساعد استخدام VB.NET مع الكلمة الرئيسية.

With veryLongVariableName

    .Id = datasetVeryLongVariableName.Id
    .Something = datasetVeryLongVariableName.Something

End With

الآن ، سؤالي ، هل هناك أي طريقة لاستخدامها ، أو شيء مشابه ، ولكن لعدة متغيرات في نفس الوقت؟ شيء مثل:

With veryLongVariableName As a, datasetVeryLongVariableName as b

    a.Id = b.Id
    a.Something = b.Something

End With

أنا جميعًا من أجل اتفاقيات التسمية الوصفية ، لكنها تميل إلى فوضى الأشياء. خاصة في VB!

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

المحلول

إذا كان الرمز الذي يقوم به مجموعات المهام هذه جزءًا من إجراء منطقي واحد ، فيمكنك إعادة تجهيزه في مكالمة طريقة/وظيفة خاصة به. على الرغم من أن هذا لا يجيب على وجه التحديد على سؤالك حول مضاعف مع الاستخدام ، إلا أنه سيحسن المستعمرة في خطوط مع اقتراحات موجودة في الكتب الشائعة مثل Code Complete.

نصائح أخرى

لا، هذا غير ممكن.

With يعمل مع كائن واحد فقط. نرى MSDN.

ومع ذلك ، يمكنك ، عش With صياغات (على الرغم من أن هذا لا ينصح به لأنه قد ينتهي بك الأمر إلى جعل الكود الخاص بك غير قابل للقراءة حقًا).

وراء الكواليس ، كل With الكلمة الرئيسية تفعل هو إعلان متغير مؤقت يشير إلى الكائن الذي تحدده. سيتم تجميع مراجعها إلى نفس رمز IL مثل التأهل بالكامل لاسم الكائن ، لذلك لا توجد عقوبة أداء. يمكنك بسهولة القيام بذلك بنفسك:

Dim a as MyClass = veryLongVariableName
Dim b as MyOtherClass = datasetVeryLongVariableName

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