اصطلاحات البرمجة في 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 |
الأمان
اتبع الإرشادات في تأمين ترميز إرشادات.