b523db2bbea7098aeccea0f78f41f223
     
     
     
    
    
    
    
    
    
    
 
تقنية و أشياء أخرى
تقنية و أشياء أخرى
مختلف المقالات و النقاشات و الروابط المتعلقة بالتقنية او المواضيع العامة
نصيحة ذهبية: قلل اعتماديات برامجك قدر الإمكان
                         عربي     English

نصيحة ذهبية: قلل اعتماديات برامجك قدر الإمكان

   محمد جمال الذياب        08-02-2020  
نصيحة ذهبية: قلل اعتماديات برامجك قدر الإمكان 
   م. وائل حسن- أبوإياس   
التعليقات
   عبد الرحمن أحمد   
جزاك الله خيرا أخي وائل
أنا كنت أضع هذه القاعدة نصب عيناي دائما حيث كنت أحرص على أن أستخدم إضافات حتى لو كانت من مايكروسوفت نفسها طالما أنها لم تأتي افتراضيا مع المكتبة الأساسية.
إلا أنني غيرت نظرتي مؤخرا فقد ثبت لي أن استخدام أدوات وإضافات من قبل طرف ثالث ومدفوع الثمن سيجعل من تطبيقك متقدم على كثير من أقرانك.
أثناء عملي الأخير على تطبيق WPF وبعد البحث واستقراء الآراء والمقارنات اتخذت القرار باعتماد حزمة DevExpress و تم الاشتراك لمدة عام
وحقا حصلت على مميزات كنت سأقضي الكثير من الوقت عدا احتمال الخطأ والمشاكل حتى أصل إلى نصف تلك الميزات سواء على صعيد الواجهات و الستايل و سواء على صعيد الأداء والقوة وقلة الأخطاء
خصوصاً أن كثير من التطبيقات العربية قد تستبعد فكرة دفع مبالغ لقاء برامج من طرف ثالث فتحصر فريقها في استخدام المتاح أو المجاني ولهذا قلت أن اعتمادها سيجعلك تتقدم عن شريحة واسعة من التطبيقات المشابهة.
ولكن أن معك فأؤيد أن لا يتم استخدام برمجيات مضافة لأكثر من شركة لنفس الاختصاص حتى لا يحصل تشابك كمن يركب برنامجي حماية معاً .
   م. وائل حسن- أبوإياس   
و جزاك الله خيراً.
بالفعل فإن المكتبات و الإضافات التي تحس بأنها تعطي لبرنامجك قيمة و قوة إضافية شيء مطلوب بالفعل، كما أن برامجك التي تبنيها بنفسك و لا تطلب من الآخرين الاشتراك فيها (أو علي الأقل يكون عدد المشاركين فيها قليلاً للغاية) يمكن التصرف فيها بحرية أكبر. و المهم هنا هو إضافة ما يحتاج إليه البرنامج فقط بدون زيادة أو نقص، و كذلك تسهيل الأمر علي المشاركين قدر الاستطاعة (إن وُجدوا).
   wajdy essam - Wajdy Essam   
بعبارة أخرى هذه نصيحة للقيام بـ Reinventing the Wheel
يعني طرحت مثال لOpenSSL هل تريد أن نكتب نسخه خاصه بنا في كل مشروع بسبب أن مثل الثغرة الجديدة قد يحدث؟ ومن قال أن النسخه التي سيكتبها المبرمج لن يكون بها ثغرات؟ وهل يعرف المبرمج أن تطوير مثل هذه المكتبة قد يحتاج الى سنوات + Knowledge، بينما تطوير البرنامج مع هذه Dependeicies قد يأخذ عدة شهور فقط ..
قمت بعمل Forensic-Like Application من فترة، وكعادة هذا البرامج هي تقوم بالبحث داخل الملفات في جهازك واستخراج كل ما يمكن استخراجه، البرنامج مكتوب بجافا ولو قلت لك عدد ال Dependices لما صدقت ، وما زلت اصر على ان هذا مفيد للBusiness ، مثلاً هل تريد أن اكتب PDF/HTML.. Perser لكي انجز مهمه واحدة في المشروع؟ هل تريد أكتب Charting Library لكي ارسم كم Line Chart مثلاً؟ هل تريد ان اكتب محرك Indexing كامل بدلاً من استخدام شيء جاهز؟ وغيرها الكثير من الFunctions وحتى ابسط الأمور مثل Logging لو أردت ان تكتب واحدة في Multithreads Application لأخذت من وقتاً..
غالب الLibrary تكون لشيء مهم، فلا يوجد Library لطباعه hello world يمكنك الاستغناء عنها بسهولة، والنصيحة الأفضل هو ان ترى ال License للDependcies واخر تطوير حصل وهل لها مجتمع Active، وهل هناك Porting لها، كل هذه الأمور تبين لك مدى ثقل المكتبة وأنك تستطيع الاعتمادية عليها..
حالياً يمكنك استخدام اي Dependency Management مثلاً Maven أو Nuget حتى يدير لك ال Dependency بسهولة في المشروع .. ربما في c-Make مع مشاريع السي++ فالأمور اعقد قليلاً ولكن ما زال هذا الأمر ليس سبباً في ترك ال Dependencies.
   م. وائل حسن- أبوإياس   
في عنوان المقال هناك كلمة قدر الاستطاعة التي تجعلني أستغرب من استنتاجك بحثي للناس علي إعادة اختراع العجلة !
و قد قلتُ في بداية المقال:
 
و هكذا يمكنك أن تركز جهدك كله علي الأمور التي يتميز بها برنامجك بدون الحاجة لبناء ما بناه الآخرون بالفعل، كما أنك بهذه الطريقة ستستفيد في المستقبل من التحسينات و الإصلاحات التي يطبقونها علي مكتبتهم بدون أي جهد من ناحيتك.


و كذلك قلتُ:
المشكلة أن المبالغة في عدد المكتبات الخارجية التي يستعين بها البرنامج لأداء عمله يؤدي في النهاية إلي تعقيد الأمور
أي أنني أتحدث عن الاعتماديات التي يضعها المبرمجون بدون حسبان و يمكن الاستغناء عنها، أو علي الأقل بناؤها بقليل من الجهد داخل الأكواد الرئيسة نفسها بحيث تصير جزءاً من البرنامج. و هكذا فإننا نتحدث جانبين مختلفين من العملية.
و مرة أخري لا أدري كيف استنتجتَ أنه من الممكن أن أدعو إلي بناء شبيه لـOpenSSL من الصفر بدلاً من الاعتماد علي الموجود حالياً، رغم أن المقال يقول العكس !!!
   wajdy essam - Wajdy Essam   
هات لي مثال واحد على مكتبة يمكن الاستغناء عنها بسهولة والتي يضعها المبرمجين بدون حسبان ؟
أغلب المكتبات هي بتحل مشكلة معينة وتحتاج ل domain expert لكي يبنيها ابدء من مكتبات التشفير والضغط ومعالجة الصور وحتى ال Encoding وCRC وحتى الAPI مثل Twitter API والخ
وكلما تزيد المكتبات ويقل الكود لديك كل ما كان المشروع أقل خطراً، لأن المكتبات (سواء كانت تجارية أو مفتوحة المصدر) تتطور والمشاكل تتحل بدون اي تدخل منك. لذلك النصيحة الذهبية "لا تكتب اي شيء سوى ال Business Code" الذي يحل المشكلة واستخدم المكتبات الخارجية لحل اي شيء آخر، واستخدم Depenency Manager وسوف ترتاح كثيراً.
فقط في حالة كان لديك domain expert ولديه الوقت وسبب ما فليس هناك مانع من عدم الاعتماد على مكتبة مشابه، مثلاً انظر لأغلب مشاريع Google ستجد حتى ال Collection API يبنوها بأنفسهم (الى ان بنو مكتبة Guava)، بينما مثلاً هناك مبرمج عادي هل ننصحه بكتابة Stack/Linked List بنفسة أو اي Complex Structure / Algorithm ؟
عدد المكتبات الخارجية الذي لا يؤثر على تعقيد الكود بالعكس يسهله، التعقيد في ال Build System وهناك حلول لهذا الأمر..
   ali aisha   
انا اكره فيجوال بيسك نت لهذا السبب انا ايضا لا احب ان تعتمد برامجي علي مكتبات كثيرة يكفي ان تعتمد علي مكتبات نظام التشغيل مباشرة ومكتباتي إن وجدت.
  الموضوع و التعليقات و باقي البيانات في هذه الصفحة منقولة و معدلة من المصدر على الرابط التالي : https://io.hsoub.com/programming/9287
  هذا الموضوع مرخص تحت : رخصة المشاع الإبداعي BY-SA
المشاركة :
تويتر
فيسبوك
الإيميل
لينكد إن
واتساب
الرابط

لماذا أجد العديد من المواضيع يتم بها مخالفة الإرشادات ولا يتم الرقابة عليها بحذف التعليقات أو المستخدمين المخالفين؟ لماذا أجد العديد من المواضيع يتم بها مخالفة الإرشادات ولا يتم الرقابة عليها بحذف التعليقات أو المستخدمين المخالفين؟
“قصصٌ ممتعةٌ من كتاب “أفكار العِلْم العَظيمة “قصصٌ ممتعةٌ من كتاب “أفكار العِلْم العَظيمة
هل مؤتمرات \" ريادة الأعمال \" العربيـة مفيـدة ؟ .. ام أنها في وادٍ وأنت في وادٍ آخر ؟ هل مؤتمرات \" ريادة الأعمال \" العربيـة مفيـدة ؟ .. ام أنها في وادٍ وأنت في وادٍ آخر ؟
أول مشروع لي بلغة بايثون وباستعمال إطار العمل جانغو.. مدونة بسيطة جدا أول مشروع لي بلغة بايثون وباستعمال إطار العمل جانغو.. مدونة بسيطة جدا
قائمة بالبنوك التي تدعم الجزائر والتي تقدم بطاقات فيزا أو ماستركارد حقيقية أو افتراضية بتاريخ 13 جويلية 2017 قائمة بالبنوك التي تدعم الجزائر والتي تقدم بطاقات فيزا أو ماستركارد حقيقية أو افتراضية بتاريخ 13 جويلية 2017
ثلاثة تطبيقات مهمة لـ قراء الكتب الإلكترونية ثلاثة تطبيقات مهمة لـ قراء الكتب الإلكترونية
ترجمة كتاب Reinventing Organizations إعادة اختراع المنظمات ترجمة كتاب Reinventing Organizations إعادة اختراع المنظمات

gg gg
مراجعات - تقييمات - فديوها - مقالات و مختلف المواضيع التي تهم اللاعبين العرب
http://gg.leomara.com/
الروابط المختصرة    سياسة الخصوصية    شروط الإستخدام    من أنا    من نحن    الأسئلة الشائعة    موضوع عشوائي    اتصل بنا   
                           
Developed by : MJ7.org