Visual Basic .NET « مغامرات برمجية

وسوم: Visual Basic .NET

تعديل ما لا يمكن تعديله باستخدام Extension Methods

نّشر في: 2012/10/30
تعليقات: تعليق واحد

أحياناً كثيرة نستخدم كوداً لم نطوره شخصياً. هذه سنة الحياة بالنسبة للمبرمجين. وأحياناً كثيرة يكون هذا الكود داخل DLL. أي بمعنى آخر، لا نستطيع التعديل عليه. وهذا لا بأس به في معظم الأحيان حينما يكون هذا الكود يناسب احتياجاتنا. ولكن سنة أخرى من سنن حياة المبرمجين هو أنه هناك دائماً حالات فردية واستثنائية.

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

أحدها كان الإجراء GetAllReports التابع للكلاس ReportDAL والذي يعطيني جميع التقارير قي سنة معينة. المشكلة كانت تكمن في أن هناك عملية تتكرر كثيراً وهي تصفية الناتح كثر بنوع التقرير. العملية ليست صعبة. سطرين أو ثلاثة باستخدام Linq كان كفيلاً بهذا. ولكن هذا الكود بدأ يتكرر بكثرة في أنحاء البرنامج، لذا أصبح من اللازم أن يصبح هذا الكود الجديد هو الآخر جزئاً من الـDAL. ولكن الكود لا يمكن تعديله (دون دفع نقود).

الحل الكلاسيكي كان أن نطور كلاي جديد يرث الـClass القديم ويضيف الدالة الجديدة. ولكن هذا مزعج حيث أنه علي تعديل البرنامج كله ليستخدم الكلاس الجديد. هنا تأتي فائدة الـExtension Methods.

(اقرأ المزيد …)

Post to Twitter

لماذا أكره Java و ‎C‎+‎+‎ و ‎C‎#‎ (كلغات تعليمية)

يبدو أن مقالات “أنا أكره” ستصبح روتيناً جديداً هنا! ما علينا. أولاً دعوني أوضح ماذا أقصد بلغات تعليمية. ما أقصده هي اللغات التي تستخدم (عادةً في المنشآت الأكاديمية) لتعليم مبادئ البرمجة. 90% من طلاب الجامعة الذين يدخلون أقسام الحاسب لم يبرمجوا سطراً في حياتهم من قبل. ومواد مثل “مبادئ برمجة 101″ و مستنسخاتها هي المقدمة التي تستخدمها المنشأة الدراسية لإعطائهم بصيص ضوء إلى عالم البرمجة.

رغم أنني تركت مقاعد الدراسة منذ أيام كان رجال الكهف يصارعون الديناصورات من أجل حفنة دراهم، إلا أنني أحب من وقت لآخر متابعة ما يجري في الجامعات وتطور التعليم الحاسوبي بها. وهناك توجه مقلق نحو اعتماد لغات Java و ‎C‎+‎+‎ و ‎C‎#‎ كلغات تعليمية. أنا لا أنقص من قدر هذه اللغات الجليلة والمخضرمة، ولكنني أسلط الضوء على ما أراه غير مناسباً لها.

(اقرأ المزيد …)

Post to Twitter

المبرمج الرحّالة!

نّشر في: 2011/09/21
تعليقات: 4 تعليق

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

في الفترة الأخيرة أدمنت على لعبة Minecraft، بالذات أن صديق لي فتح للشلة سيرفر خاص لنفرغ ابداعاتنا فيه. لطالما كنت مهووساً بالتاريخ المصري الفرعوني، لذا بطبيعة الحال فكرت ببناء هرم خوفو بالحجم الطبيعي (ارتفاعه 138 مكعب). وكنت أتناقش مع صديقي هذا حول كمية المكعبات التي ستحتاجها لبناء نسخة مفرغة منه. لم تسعفنا القوانين الرياضية التي نعرفها، ولكنني كنت أعرف كيف أحسبها برمجياً ولكن لم يكن بقربي (وقتها) أي جهاز حاسوبي سوى جوالي!

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

ما الحل؟! كيف يستطيع المبرمج الرحّال أن يمارس برمجته في أي مكان؟

(اقرأ المزيد …)

Post to Twitter

ما الفرق بين const وreadonly؟

نّشر في: 2011/06/02
وسوم: , ,
تعليقات: 3 تعليق

 

في كلا اللغتين C‎#‎ و Visual Basic .NET هناك اثنان keyword تستخدمان لتعريف أن متغيراً ما هو متغير ثابت: const وreadonly. الكثيرون يستخدمونهما بنفس الطريقة لنفس الغرض:

const معC‎#‎

public const decimal pi = 3.14159265;

ReadOnly مع Visual Basic .NET

Public ReadOnly pi As Decimal =  3.14159265

ولكن ما قد يدركه البعض أن هناك فرق بين الإثنين. وهو فرق قد يؤثر على أداء برنامجك وصحة عمله. لذا عليك الاختيار بدقة بين الإثنين. const هي ما يدعى بـcompile time constant أي أنها ثابت يتم حسابه عند عمل الكومبايل. أما readonly فهي runtime constant أي أنها ثابت يتم حسابه وقت تشغيل البرنامج.
(اقرأ المزيد …)

Post to Twitter

page 1 of 1
Project Euler
أحدث التدوينات
تصنيفات
الأرشيف
منوعات
System Down على Twitter

مرحباً , تاريخ اليوم هو الخميس, 2017/03/23