اصطلاحات البرمجة في Visual Basic

يتم استخدام هذه الإرشادات من قبل Microsoft لتطوير ‏‫النماذج والوثائق. لا تحدد مواصفات لغة Visual Basic مقياس برمجة.

  • اصطلاحات البرمجة تنشئ مظهر متناسق للتعليمات البرمجية, بحيث يمكن للقراء التركيز على المحتوى و ليس التخطيط.

  • الـاصطلاحات تساعد القراء على فهم التعليمات البرمجية بشكل أسرع, لأنه يسمح لهم بوضع افتراضات استناداً إلى التجارب السابقة.

  • الـاصطلاحات تجعل من النسخ, التغيير, وصيانة التعليمات البرمجية أسهل.

  • تعرض الاصطلاحات Visual Basic "أفضل الممارسات."

مناقشة

اصطلاحات التسمية

  • تغطى الإرشادات التسمية في إرشادات التصميم الخاصة بتطوير مكتبات فئة.

  • لا يلزم تغيير اسم الكائنات التي تم إنشاؤها بواسطة أدوات مصمم ‏‫Visual Studio لجعلها ملائمة للإرشادات.

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

    Dim collection As System.Diagnostics. 
           InstanceDataCollectionCollection
    
  • لا تستخدم "My" أو "my" كجزء من اسم المتغير. يؤدي هذا إلى إنشاء التشويش مع My الكائنات.

اصطلاحات التخطيط

الـتخطيط الجيد يستخدم تنسيق للتأكيد على بنية التعليمات البرمجية و جعل التعليمات البرمجية سهلة القراءة.

  • استخدام ميزة إدخال قائمة البارع لتنسيق تعليمات برمجية بالإعدادات الافتراضية (ترك مسافة بشكل ذكى, ترك مسافة 4 أحرف, حفظ علامات الجدولة كمسافات). لمزيد من المعلومات، راجع خاص VB مربع حوار خيارات Basic محرر نص.

  • استخدم كشف واحد فقط لكل خط. عدم استخدام حرف متابعة السطر Visual Basic (:).

  • استخدم تعريف واحد فقط لكل خط.

  • إذا كانت الجدولة البارعة لا تنسق تتابع الأسطر, تتابع ترك مسافة بادئة تخطط ايقاف تبويب واحد.

  • قم بـإضافة خط فارغ واحد على الأقل بين تعريفات الأسلوب و الخاصية.

اصطلاحات التعليق

  • لا تستخدم تعليقات في نهاية خط من التعليمات البرمجية. ضع التعليقات على خط منفصل.

  • بدء التعليق بنص ذي أحرف كبيرة.

  • قم بـإنهاء التعليق بنقطة.

  • إدراج مسافة واحدة بين محدد التعليق (') و نص التعليق.

    ' Here is a comment.
    
  • لا تقم بإنشاء مقاطع المنسقة من العلامات النجمية التي تحيط التعليقات.

بنية البرنامج

  • عند استخدام Main الأسلوب, استخدم البناء الافتراضي لـتطبيقات الستشار الجديد واستخدام My لوسيطات خط الأوامر.

    Sub Main()
      For Each argument As String In My.Application.CommandLineArgs
        ' Add code here to use the string variable.
      Next
    End Sub
    

إرشادات اللغة

نوع بيانات السلسلة

  • استخدام و ربط السلاسل:

    MsgBox("hello" & vbCrLf & "goodbye")
    
  • لالحاق السلاسل في حلقات, استخدمStringBuilder الكائن:

    Dim longString As New System.Text.StringBuilder
    For count As Integer = 1 To 1000
      longString.Append(count)
    Next
    

استنتاج النوع

استفد من استنتاج النوع للمتغيرات المحلية:

Public Sub GetQuery()
  Dim filterValue = "London"
  Dim query = From customer In customers 
              Where customer.Country = filterValue
End Sub

مفوضون مسترخون في معالجات الأحداث

استخدم تفويضات حالة وترك وسيطات الحدث إذا لم تكن تستخدم وسائط الحدث في التعليمات البرمجية:

Public Sub Form1_Load() Handles Form1.Load
End Sub

نوع بيانات دون اشارة

  • استخدم Integer بدلاً من أنواع دون اشارة إلا إذا كانت الذاكرة في متميّز.

الصفائف

  • استخدم بناء الجملة القصير عند تهيئة الصفائف على خط التعريف:

    Dim letters1() As String = {"a", "b", "c"}
    

    بدلاً من ذلك:

    Dim letters2() As String = New String() {"a", "b", "c"}
    
  • وضع مصمم الصفيف على المتغير, وليس على النوع:

    Dim letters3() As String = {"a", "b", "c"}
    

    بدلاً من ذلك:

    Dim letters4 As String() = {"a", "b", "c"}
    
  • استخدم بناء الجملة {} عند التصريح و تهيئة صفائف من أنواع بيانات الأساسية:

    Dim letters5() As String = {"a", "b", "c"}
    

    بدلاً من ذلك:

    Dim letters6(2) As String
    letters6(0) = "a"
    letters6(1) = "b"
    letters6(2) = "c"
    

استخدم الكلمة الأساسية مع

عند استخدام سلسلة الاستدعاءات لكائن واحد, فعليك استخدام With الكلمة الأساسية:

With orderLog
  .Log = "Application"
  .Source = "Application Name"
  .MachineName = "Computer Name"
End With

استخدام استنتاج النوع للتكرار الحلقي للمتغيرات في كشف For أو For Each

السماح استنتاج النوع لتحديد نوع متغير نطاق التكرار الحلقي.

التالي مثال باستخدام استنتاج النوع في For الكشف:

For count = 0 To 2
  MsgBox(names(count))
Next

التالي مثال باستخدام استنتاج النوع في For Each الكشف:

For Each name In names
  MsgBox(name)
Next

استخدم كشوف Try...Catch و Using لمعالجة الاستثناء

  • لا تستخدمOn Error Goto.

  • لـمعالجة الاستثناءات, استخدم Try...Catch الكشف:

    Dim conn As New SqlConnection("connection string")
    Try
      Conn.Open()
    Catch ex As SqlException
    
    Finally
      Conn.Close()
    End Try
    
  • Using الكشف يدمج Try...Catch الكشف مع استدعاء لـ Dispose الأسلوب و تبسيط التعليمات البرمجية. إذا كنت تستخدم Try...Catch الكشف و تعليمات برمجية الوحيدة في Finally المقطع هو استدعاء لـ Dispose الأسلوب, استخدم Using الكشف بدلاً من ذلك:

    Using redPen As New Pen(color.Red)
      ' Insert code here.
    End Using
    

استخدم الكلمة الأساسية IsNot

استخدم IsNot الكلمة الأساسية في تفضيل من Not...Is Nothing.

استخدم الكلمات الأساسية AndAlso OrElse

لـتجنب الاستثناءات و زيادة الأداء عن طريق تخطي تعليمات برمجية غير ضرورية, استخدم AndAlso بدلاً من And و OrElse بدلاً من Or عند تنفيذ مقارنات:

' Avoid a null reference exception. If the left side of the AndAlso 
' operator is False, the right side is not evaluated and a null 
' exception is not thrown.
If nullableObject IsNot Nothing AndAlso nullableObject = testValue Then

End If

' Avoid an unnecessary resource-intensive operation. If the left side
' of the OrElse operator is True, the right side is not evaluated and 
' a resource-intensive operation is not called.
If testCondition OrElse ResourceIntensiveOperation() Then

End If

مثيلات افتراضية لنماذج

استخدم Form1.ShowDialog بدلاً من My.Forms.Form1.ShowDialog.

الكلمة الأساسية الجديدة

  • استخدام إنشاء المثيل القصير:

    Dim employees As New List(Of String)
    

    الـخط السابق يكافئ هذا:

    Dim employees2 As List(Of String) = New List(Of String)
    
  • استخدم مُهيآت الكائن لكائنات جديدة بدلاً من الدالة الإنشائية بدون معلمات:

    Dim orderLog As New EventLog With { 
        .Log = "Application", 
        .Source = "Application Name", 
        .MachineName = "Computer Name"}
    

معالجة الحدث

  • استخدم Handles بدلاً من AddHandler:

    Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click
    End Sub
    
  • استخدم AddressOf، و لا تقوم بإنشاء تفويض بشكل واضح:

    Dim closeItem As New ToolStripMenuItem( 
        "Close", Nothing, AddressOf ToolStripMenuItem1_Click)
    Me.MainMenuStrip.Items.Add(closeItem)
    
  • عندما تقوم بتعريف حدث, استخدم بناء الجملة القصير و اجعل المترجم يقوم بتعريف المفوض:

    Public Event WhatHappened(ByVal source As Object, 
                              ByVal e As WhatHappenedEventArgs)
    
  • عدم التحقق من ما اذا كان الحدث هو Nothing (خالية) قبل استدعاء RaiseEvent الأسلوب. RaiseEvent يتحقق من Nothing قبل أن ترفع هذا حدث.

استخدام الأعضاء المشتركة

استدعاء Shared الأعضاء باستخدام اسم الفئة, و ليس من متغير المثيل.

استخدام دالة MsgBox

استخدم MsgBox بدلاً من MessageBox.Show أو Console.WriteLine. في البيئات التي لا تعتمد دالة MsgBox مثل Silverlight ، استخدم بديل مناسب.

استخدام مساحة الاسم My

استخدم ميزات My في تفضيل على مكتبة فئة .NET Framework أو مكتبة وقت التشغيل Visual Basic. لمزيد من المعلومات، راجع الكائنات (Visual Basic).

استخدام القيم الحرفية XML

القيم الحرفية XML تقوم بتبسيط المهام الأكثر شيوعاً التي تواجهها عند العمل مع XML (على سبيل المثال، تحميل, استعلام, و التحويل). عند التطوير مع XML, اتبع هذه الإرشادات:

  • استخدام القيم الحرفية XML لإنشاء مستندات XML و الأجزاء بدلاً من استدعاء API XML مباشرة.

  • قم بـاستيراد مساحات الاسم XML في مستوى الملف أو المشروع للاستفادة من تحسينات الأداء لـلقيم الحرفية XML.

  • استخدم خصائص محور XML للوصول الى العناصر والسمات في مستند XML.

  • استخدم التعبيرات المضمنة لتضمين القيم و و لإنشاء XML من قيم موجودة بدلاً من استخدام استدعاءات API مثل Add الأسلوب:

    Private Function GetHtmlDocument( 
        ByVal items As IEnumerable(Of XElement)) As String
    
      Dim htmlDoc = <html>
                      <body>
                        <table border="0" cellspacing="2">
                          <%= 
                            From item In items 
                            Select <tr>
                                     <td style="width:480">
                                       <%= item.<title>.Value %>
                                     </td>
                                     <td><%= item.<pubDate>.Value %></td>
                                   </tr> 
                          %>
                        </table>
    
                      </body>
                    </html>
    
      Return htmlDoc.ToString()
    End Function
    

استعلامات LINQ

  • استخدم أسماء ذات معنى بالنسبة متغيرات الاستعلام:

    Dim seattleCustomers = From cust In customers 
                           Where cust.City = "Seattle"
    
  • عناصر اسم مستعار في استعلام للتأكد من أن أسماء الخصائص لأنواع مجهول كتبت بحرف كبير بشكل صحيح باستخدام حالة الأحرف Pascal:

    Dim customerOrders = From customer In customers 
                         Join order In orders 
                           On customer.CustomerID Equals order.CustomerID 
                         Select Customer = customer, Order = order
    
  • إعادة تسمية الخصائص عندما تكون أسماء الخصائص في الناتج غامضة. على سبيل المثال، إذا كان لديك استعلام يقوم بإرجاع اسم عميل و هوية طلب, بدلاً من تركهم كـ Name و ID في النتيجة, قم باعادة تسميتهم:

    Dim customerOrders2 = From cust In customers 
                          Join ord In orders
                            On cust.CustomerID Equals ord.CustomerID 
                          Select CustomerName = cust.Name, 
                                 OrderID = ord.ID
    
  • استخدم استنتاج النوع في تصريح متغيرات الاستعلام ومتغيرات النطاق:

    Dim customerList = From cust In customers
    
  • قم بـمحاذاة عبارات الاستعلام ضمن From الكشف:

    Dim newyorkCustomers = From cust In customers 
                           Where cust.City = "New York" 
                           Select cust.LastName, cust.CompanyName
    
  • استخدم Where العبارات قبل عبارات الاستعلام الأخرى للتأكد من أن عبارات الاستعلام الأحدث تعمل على مجموعة مصفاة مقللة من البيانات:

    Dim newyorkCustomers2 = From cust In customers 
                            Where cust.City = "New York" 
                            Order By cust.LastName
    
  • استخدم Join الجملة للتعريف بوضوح ربط بدلاً من استخدام Where الجملة لتعريف ضمنيًا ربط:

    Dim customerList2 = From cust In customers 
                        Join order In orders 
                          On cust.CustomerID Equals order.CustomerID 
                        Select cust, order
    

استخدم أعضاء مكتبة وقت التشغيل Visual Basic

استخدم مكتبة وقت التشغيل Visual Basic في تفضيل على مكتبة فئة .NET Framework.

إرشادات حول ‏‫النماذج

عام

  • اتبع إرشادات التصميم في إرشادات التصميم الخاصة بتطوير مكتبات فئة.

  • قم بـتحديد موجه وعنوان MsgBox الاستدعاءات.

  • استخدام ملفات الموارد عند المناسبة.

  • استخدم Option Strict On، إما في كل ملف أو كإعداد مشروع.

  • الترجمة مع كل التحذيرات مشغلة.

  • قم بـتعريف واحد فقط من Class, Structure، أو Interface في ملف.

  • استخدم الترميز الافتراضي لحفظ الملفات.

ترجمة

  • استخدم AutoSize الخاصية حيثما أمكن.

  • لا تقم بإخفاء أو تداخل عناصر التحكم.

  • لا تقم بمحاذاة عناصر التحكم لإنشاء جملة.

  • لا تقم ببناء سلاسل بواسطة تجريد الأحرف من سلسلة أخرى.

  • استخدام الرسومات المحايدة الثقافية.

  • استخدام خطوط Serif Sans MS أو Tahoma.

‏إمكانية وصول ذوي الاحتياجات الخاصة

  • استخدام الألوان من النظام علامة التبويب من مربع حوار منتقي الألوان.

  • استخدم المسرعات لكل القوائم, تسميات, أو الأزرار ، و ما الى ذلك.

  • قم بـتعيين خصائص عنصر التحكم كما هو موضح في الجدول التالي.

الخصائص

الإعداد

AccessibleDescription

وصف عنصر تحكم.

AccessibleName

اسم عنصر التحكم.

AccessibleRole

الافتراضي, أو اعادة تعيين هذه الخاصية إذا كان لعنصر التحكم دور آخر.

TabIndex

المجموعة في ترتيب منطقي.

Text

يجب أن يكون لكافة عناصر تحكم النقر مفتاح الوصول إلى لوحة مفاتيح (اختصار).

حجم الخط

الافتراضي أو تعيينها إلى 10 نقاط أو أكبر

Forecolor

Default

Backcolor

Default

BackgroundImage

Default

الأمان

اتبع الإرشادات في تأمين ترميز إرشادات.

راجع أيضًا:

المبادئ

تأمين ترميز إرشادات

موارد أخرى

إرشادات التصميم الخاصة بتطوير مكتبات فئة