سؤال

كثيرًا ما أرى أشخاصًا يقولون إن بعض البرامج "عنيدة للغاية" أو أن Microsoft تميل إلى كتابة أطر عمل "غير معلنة".ماذا يعني هذا في الواقع؟

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

المحلول

إذا كان إطار العمل متشددًا، فإنه يقيدك أو يرشدك إلى طريقته في القيام بالأشياء.

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

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

تتمتع شركة Apple بآراء قوية عندما تصمم منتجاتها.

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

وأود أيضًا أن أضع Microsoft في العمود الذي لا يتضمن آراء.مثال جيد لإطار عمل Microsoft الذي لم يتم الموافقة عليه: .NET.من خلال فتح CLR والمواصفات، تم فتحه لجميع أنواع اللغات وأنماط التنفيذ.

نصائح أخرى

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

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

المثالي بالنسبة لي هو إطار عمل خالٍ من الآراء، ولكنه إطار ذو تقاليد قوية.أود أن أضع ASP.NET MVC في هذه الفئة.في الواقع، جميع البرامج معترض عليها إلى حد ما (على الرغم من أنها ربما ليست لغة PERL).لدى MVC اتفاقيات قوية في اختيار النموذج ولكنها تقدم العديد من الطرق المختلفة لحل المشكلات ضمن تلك الاتفاقيات.بعض هذه الطرق قد تكسر النموذج.ومع ذلك، فإن استخدامها بشكل صحيح، وفقًا للاتفاقيات التي يتم تطويرها في مثل هذا الإطار، يمكن أن يكون متعة حقيقية.

وانها في الاساس البرامج التي يعمل بالطريقة يعتقدون مؤلفيه ينبغي لها أن تعمل، بدلا من محاولة ارضاء الجميع. وهذا يعني أن الكثير من الناس لا يحبون ذلك، ولكن تلك التي لا يحبون ذلك.

والقضبان وربما كان المثال الكنسي إطار برأيه: أن تفعل أشياء طريقهم، وكل شيء على نحو سلس. إذا لم تقم بذلك، كنت في بعض الألم. ولكن هذا موافق - إذا كنت لا تريد أن تفعل أشياء طريقهم، كنت لا تريد استخدام القضبان

لأجل التوازن وسوف توفر (برأيه نوعا ما) الوصف الذي هو أكثر ملاءمة لنهج برأيه (على النقيض من بعض الإجابات الأخرى).

تقدم

والأطر برأيه "مسار الذهبي"، الذي من المفترض أن يكون أفضل الممارسات بالنسبة لمعظم الناس ومعظم الحالات (في نظر المؤلفين).

ولكن هذا لا يعني بالضرورة قفل الإضافية. وهذا يعني أنه قد تتطلب بعض الجهد الإضافي لفعل الأشياء بشكل مختلف.

وتوفر الأطر أقل برأيه عدد من الخيارات المختلفة وترك الأمر متروك لكم لاتخاذ قرار.

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

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

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

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

ليرة تركية ؛ د:

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

وهناك الكثير من الناس الرجوع ASP.NET MVC باعتبارها إطارا "unopinionated"، وأردت فقط أن يزن داخل مع اثنين من الأفكار على ذلك.

وصحيح أن ASP.NET MVC لا تفرض الكثير جدا؛ يمكنك استخدام أي حل استمرار تريد، سواء كان ذلك ينق-إلى SQL، الكيانات ADO.NET، NHibernate، وما إلى ذلك.

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

والمحيطة أيضا ASP.NET MVC هم الكثير من الناس برأيه، التي أجد يؤدي إلى الكثير من الدروس المتحيزة التي تصر على تغطية، على سبيل المثال اختبار وحدة وحقن التبعية. أنا كل لاختبار جيد وفصل الاهتمامات، لكنني أجد أن مثل هذه المواضيع ويشق أسفل أحد الحلق قليلا، وغالبا ما قبل تغطي أساسيات أكثر فائدة.

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

وانها كمية من الاتفاقيات تنفذ في framwork وعدد من القرارات التي تم اتخاذها.

إذا، على سبيل المثال، هناك 5 (أو أكثر) من الطرق المختلفة لتقديم بيانات النموذج إلى عمل تحكم (كما هو الحال في ASP.NET MVC)، ويبدو أن الإطار أن تكون جميلة "، برأيه الامم المتحدة" - ل القرار يعود لك!

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

والمثال سترى الكثير في هذه اللحظة هو إطار ASP.NET MVC. إنها قابلة للمد مذهل ولكن هذا هو سقوطها في بعض النواحي، وليس هناك أي لحوم لذلك. تريد أن تفعل الوصول إلى البيانات؟ سيكون لديك لكتابة ذلك بنفسك. تريد بعض AJAX يحدث؟ كما سبق.

ولكن، وكما للمد للغاية، إذا كنت بناء عليه يمكنك تحويلها إلى إطار برأيه. هذا هو ما يحب MVCContrib تفعل ذلك، فإنها تعطيك أساليب محددة للقيام بهذه الأمور وهو ما يعني لديك ل كتابة التعليمات البرمجية أقل.

وهذا يعني أنه إذا كنت ترغب في كسر من الرأي غالبا ما يكون هناك المزيد من العمل للقيام به مما لو كنت تعمل على الإصدار الفانيليا. هذا هو السيناريو 80/20 بالرغم من ذلك. إذا اخترت إطار برأيه بشكل صحيح وسوف تحتاج فقط لكسر من آراء 20٪ من الوقت، وعليك أن تكون مثمرة للغاية والآخر 80٪ من الوقت.

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