سؤال

لقد رأيت هذا التعليق للتو في استطلاع "ما الذي تستخدمه JS Lib"

"Xanti - نعم ، نعم ، تعليمي وتجريد في البرمجة هي ممارسة رهيبة. وظائف تطلق وظائف أخرى؟ مهزلة."

وقد تركني ذلك فضوليًا لأنني أستخدم إطار عمل Kohana لمكتبة PHP و JQuery لـ JavaScript.

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

ها هو حلقة الوصل إلى الاستطلاع

هل كانت مفيدة؟

المحلول

لقد وجدت أن الكثير من التجريد يمكن أن يكون خطيرًا على إنتاجيتك:

  • يمكن أن يكون التجريد الذي تم اختياره بشكل سيء أسوأ ثم لا تجريد على الإطلاق.

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

  • إذا كان التجريد لا يتوافق مع فكرة مألوفة نسبيًا ، فقد يكون من الصعب على أعضاء الفريق الجدد أن يتعلموا.

التجريد ليس "الخير الطائش" ؛ إنه موجود لخدمة أغراض محددة. من بين الأغراض الأكثر شيوعًا

  • إلى حماية الثوابات من بنية البيانات

  • إلى تغلف قرارات التصميم التي من المحتمل أن تتغير

كانت تجربتي الأكبر مع التجريد في الطريق مع برنامج التحويل البرمجي الخاص بنا ج-. كان هناك الكثير من التجريد أكثر مما اعتاد الطلاب على رؤيته في فصل المترجم:

  • كانت الجهاز المستهدف مجردة
  • كانت لغة التجميع مجردة
  • كانت اتفاقيات الدعوة مجردة
  • استخدم تخطيط الإطار المكدس تجريدًا غير عادي "كتلة"

خدم كل من هذه التجريدات غرضًا مهمًا لأبحاثنا ، لكن التأثير الكلي كان أنه كان جداً من الصعب على الطلاب الجدد تعلم المترجم. لذلك ، حتى لو كان التعليق الأصلي في Jest ، هناك نكون الأماكن التي يمكن أن يسبب التجريد مشاكل.

نصائح أخرى

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

يمكنك أيضا التحقق من http://www.techsoup.org ، يتم التبرع بالبرنامج ويمكن تطبيقههناك.

إذا كان هناك إضافة / خدمة محددة، فأنت مهتم بإضافة حوار مع هذا البائع مباشرة.ربما سيعطونها لك أو خصما عميقا مع بعض التنازلات (مثل وضع موقع الويب الخاص بك، فأنت تستخدم التقنية الخاصة بهم).

ربما يمكننا أن نفترض أن المعلق لم يكن جادًا.

لا أستطيع أن أتخيل أن أي شخص يطالب بالضغط والتجريد هو ممارسة سيئة وتعني في الواقع.

التجريد والمعيار بشكل عام جيدان وضروريان. قد تكون هناك تجريدات سيئة ، على سبيل المثال: الأطر غير المدعومة بعد الآن أو باهظة الثمن أو غير قابلة للاستخدام ، أو كبيرة ، أو قديمة ، أو الثانية ، وما إلى ذلك. "سوق" المكتبة بشكل عام ضخم. أي نوع من المكتبات التي تجدها تستخدمها تعتمد على الظروف والتفضيل الشخصي.

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

التغيير والتعلم صعب في بعض الأحيان - لذلك يحاربها الناس. إذا كنت ترغب في دراسة هذا النوع ، فيمكنك بدء بحثك على: http://thedailywtf.com/ :-) أود فقط أن أتجاهلهم وأستخدم المكتبات والأطر لأنها تخدمك وجعل حياة المبرمج أفضل.

سوف يزعم المطور أن التجريد أو modularization هو ممارسة سيئة عندما يكونون قادرين أو مطالبين بالتفاعل مع التجريد أو الاستشعار المذكور ولا يمكنهم فهم هدفه أو تصميمه.

عندما تكون كل وظيفة (ووظائف المساعد) في الوحدة النمطية الخاصة بها؟

أعتقد أن هذا يجب أن يكون ممكنا، خاصة إذا كنت تستطيع تحديد أو التحكم في عرض الصور. على سبيل المثال تخطيط، انهم جميعا نفس العرض، والذي يجب أن يجعل الحياة أسهل.

ماذا عن هذا: بالنسبة لعرض الشاشة الضيقة، ما عليك سوى ترك الصور كما هي، ولإراءة عرض الشاشة على نطاق أوسع، فإن تطفو الصور اليسار، ولكن أعط الفقرات الهامش الأيسر على نطاق واسع لنقلها من منطقة الصورة ، على سبيل المثال: giveacodicetagpre.

... ثم خدمت فقط باستخدام استعلام وسائط شرطية على عرض الشاشة كنت ترغب في الصور "البوب" في.

p> هنا مثال عمل. مع القطط. العب مع عرض منطقة الإخراج، ويجب أن تجد هذا التأثير الذي أعتقد أنك تبحث عنه. عندما يكون العمود أضيق من 400 بكسل، ينهار التخطيط في عمود واحد. يعمل بشكل جيد بالنسبة لي في Safari و Firefox؛ قد تحتاج إلى SHIM لتمكين استعلام الوسائط لجعل الإصدارات القديمة من العمل IE، ولكن لا تزال تخطيطات تعمل بشكل جيد في ذلك.

يتم استخدام التجريدات الجيدة في كثير من الأحيان

تتم الرجوع إلى التجريدات الجيدة في مكانين أو أكثر في برنامجك.

أمثلة:

  • وظائف مع 2+ مواقع الاتصال.
  • فئة مجردة مع 2+ فئات ملموسة.
  • واجهات مع 2+ تطبيقات.
  • الأجيال مع 2+ مثيلات
  • المكتبات مع 2+ مستخدمين.
  • إلخ.

يساعد التجريد المشار إليه في مكانين أو أكثر في تقليل حجم الكود ، من خلال تحديد الأشياء الشائعة ، وهذا شيء جيد.

ولكن إذا كان لديك الكثير من التجريدات التي يتم الرجوع إليها لفترة واحدة فقط ، فهناك فرصة جيدة لأن التجريد ليس ضروريًا.

بعض الأمثلة عندما تأتي التجريدات غير الضرورية:

  • كتابة الكائنات السعيدة (واجهات وفئات مجردة في كل مكان لها تطبيق واحد فقط أو تخفيف). هذه الواجهات والفئات المجردة ليست ضرورية (عند نقطة التطوير هذه). مبدأ Yagni.
  • يقوم شخص ما ببناء واجهة "لامعة جديدة" على الواجهة القديمة ، حيث تعمل الوظائف الجديدة بعد التحويل فقط على الواجهة القديمة. يمكنك أن تتخيل ما هي الفوضى الكبيرة ، إذا كررت هذا عدة مرات. في هذه الحالة ، سيكون للوظائف القديمة موقع اتصال واحد ، لذلك فهي ليست ضرورية. تحتاج إلى نقل الكود من الوظائف القديمة إلى واحدة جديدة أو لا تكتب واحدة جديدة وتعديل الكلام القديم.

بعض الأمثلة على التجريدات الجيدة حقًا:

  • طبقة تجريد الأجهزة: توفر واجهة واحدة للتطبيقات حتى لا تحتاج إلى تطوير رمز لكل نوع من الأجهزة.
  • نظام الملفات: لا يهم أنك تستخدم الدهون ، NTFS ، Ext3 أيا كان. يتيح لك استخدام الملفات والأدلة ، يقوم برنامج تشغيل نظام الملفات بالباقي.
  • C Language: لا تحتاج إلى نقل برنامجك لكل بنية وحدة المعالجة المركزية. فقط قم بتجميعها.

للإجابة على سؤالك بشكل عملي: التجريدات سيئة ، عندما يتم الرجوع إليها من أقل من 2 مكان.

فيما يتعلق بالمعيار ، فإنه الشخصي: يمكنك تنظيم الكود الخاص بك ما تريد. إذا كان رمز مصدر مكتبتك في ملف مصدر واحد ، فهذا لا يجعله أسوأ مما لو وضعته في تفجيره عدة مئات من الملفات.

عند تصنيف تجريداتك على أنها جيدة أو سيئة ، فكر دائمًا في الصورة الكبيرة: المشروع بأكمله ، خط الإنتاج بأكمله ، إلخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top