منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
برمجة سعيدة مع Implicit Line Continuation - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : برمجة سعيدة مع Implicit Line Continuation (/showthread.php?tid=4931)



برمجة سعيدة مع Implicit Line Continuation - RaggiTech - 03-10-12

كاتب الموضوع : النبهاني

السطر يصبح سطرين بدون "_" : ذكاء ام تشويه للغة ؟
منذ البداية ، كان الفرق الجوهري في الصيغة Syntax بين لغتنا الحبيبة Visual Basic وكل اخواتها من عائلة Basic – واللغات الاخرى كـ C/C++,Java وغيرها ، هو طريقة التعدد في كتابة السطر الواحد في سطور مختلفه ، فلا حاجه الى انهاء كل سطر بالعلامة " ; " لكي يعرف سيادة المترجم Compiler بأن السطر انتهى هنا ، بينما في Visual Basic فلا داعي لذلك ، كل سطر ينتهي بنفسه افتراضيا طالما لم ينته بالعلامة "_" والتي تدل على ان السطر مقسم على اسطر متعددة كهذا الكود مثلا :

كود :
[align=left][FONT=Consolas]x = x ^ 2 + 3 * x _[/FONT]
[FONT=Consolas]+ 3[/FONT][/align]
تلك السمة كانت العلامة الفارقة دوما ، لكن جنون مايكروسوفت قادنا الى امر جديد كالعادة ! ما رأيك بهذا :


كود :
[align=left][FONT=Consolas]x =[/FONT]
[FONT=Consolas]x ^ 2 + 3 * x + 3[/FONT][/align]
السطر الثاني والثالث صحيحان 100% وبدون اخطاء ابتداءا من الاصدار 2010 !! المزيد من الاسطر الغريبة بالنسبه لك تجدها هنا :

كود :
[align=left][FONT=Consolas]<Extension()>[/FONT]
[FONT=Consolas][color=blue]Function[/color] FilterByCountry([/FONT]
[FONT=Consolas][color=blue]ByVal[/color] customers [color=blue]As[/color] IEnumerable([color=blue]Of[/color] Customer),[/FONT]
[FONT=Consolas][color=blue]ByVal[/color] country [color=blue]As[/color] [color=blue]String[/color]) [color=blue]As[/color] IEnumerable([color=blue]Of[/color] Customer)[/FONT]
[FONT=Consolas][color=blue]Dim[/color] query =[/FONT]
[FONT=Consolas][color=blue]From[/color] c [color=blue]In[/color] customers[/FONT]
[FONT=Consolas][color=blue]Where[/color] c.Country = country[/FONT]
[FONT=Consolas][color=blue]Select[/color] [color=#6464b9]<[/color][color=#844646]Customer[/color][color=#6464b9]>[/color][/FONT]
[color=#555555][FONT=Consolas]<%=[/FONT][/color]
[FONT=Consolas]c.Name &[/FONT]
[FONT=Consolas][color=#a31515]","[/color] &[/FONT]
[FONT=Consolas]c.Country[/FONT]
[FONT=Consolas][color=#555555]%>[/color][/FONT]
[color=#6464b9][FONT=Consolas]</[/FONT][/color][color=#844646][FONT=Consolas]Customer[/FONT][/color][color=#6464b9][FONT=Consolas]>[/FONT][/color]
[FONT=Consolas][color=blue]Return[/color] query[/FONT]
[FONT=Consolas][color=blue]End[/color] [color=blue]Function[/color][/FONT][/align]
الكود السابق وبأكمله لايوجد به ولا خطأ !

اذا ماذا عملت مايكروسوفت في هذا الاصدار ؟ كما يتضح من الكود السابق ، اصبح بإمكانك ان تتغاضى عن ادراج العلامة "_" في الحالات التالية :
- بعد المواصفات Attributes كما يتضح في السطر الاول
- بعد علامة ")" عند تمرير قيم الباراميترات .
- بعد علامة "," عند تمرير قيم الباراميترات .
- بعد معامل المساواة "="
- قبل علامة ")" .
- بعد علامة "<%=" وقبل علامة "%>" في صيغ الاستعلامات Queries Expressions .
- بعد المعامل "& " في استعلامات XML .

قد يبدو هذا كثيرا ، لكن الامر لن ينتهي عند هذا الحد ، فالمزيد من الحالات التي يمكنك فيها توديع علامة المتابعة "_" موجوده وهي جاهزه وملخصه في الرابط التالي :

http://msdn.microsoft.com/en-us/library/865x40k4.aspx

برمجة سعيدة مع Implicit Line Continuation لكن هل تم تشويه اكواد Visual Basic بهذا الشكل ؟ فعلا هي و Lambda Expressions و LINQ غيرت الكثير من معالم الاكواد !