سؤال

اعتراف: أنا فقط استخدم نشر و عامة الرؤية لطرق بلدي!

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

هل لدى أي شخص مثال في القضبان حيث سيكون خطأ كبيرا لا تستخدم محمي الرؤية؟

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

المحلول

تحديث - يرجى الاطلاع على التعليق أدناه تلك الروابط إلى شرح صحيح protected/private في روبي. وبعد كان ذلك تحيزا عميقا جالسا من أيام جاوة، في الواقع. الجزء المهم الوحيد المتبقي إجابتي هي أن طرق تحكم ليست أفعال لا ينبغي أن تكون public (أو على الأقل طرقك يجب أن تحميها).

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

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

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

نصائح أخرى

لدي singletabledinance

فئة الشخص <AR :: مدرس الطبقة الأساسية <شخص يتذكر الطالب <شخص

وأنا استخدم الأساليب المحمية لتنفيذ طريقة خاصة شائعة للطالب والمعلم:

class Person < AR::base
  def self.find(*args)
    reject_leaves(super(*args))
  end
protected
  def self.reject_leaves(target) #like a private in Teacher and Student
    case target
      when Array target.select{|t| reject_leaves(t)}
      when Person (target.leave_date < Date.today ? target : nil)
      else target
    end
  end
end

إخلاء المسئولية: هناك إضافات مثل Act-as-as-paranioid وغيرها لتنفيذ الميزة التي أستخدمها هنا لتظهر لك القضية ولكن لدي مناظر طبيعية أكثر تعقيدا، وقد قمت بتبسيطها هنا للوصول إلى وجهة نظرك.

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