هل تستخدم أي وقت مضى الرؤية المحمية في القضبان؟
-
23-08-2019 - |
سؤال
اعتراف: أنا فقط استخدم نشر و عامة الرؤية لطرق بلدي!
لدي شعور هذا شيء سيء. لكن في القضبان، لا يبدو أن الأمر يتعلق بمثابة مشكلة.
هل لدى أي شخص مثال في القضبان حيث سيكون خطأ كبيرا لا تستخدم محمي الرؤية؟
المحلول
تحديث - يرجى الاطلاع على التعليق أدناه تلك الروابط إلى شرح صحيح 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 وغيرها لتنفيذ الميزة التي أستخدمها هنا لتظهر لك القضية ولكن لدي مناظر طبيعية أكثر تعقيدا، وقد قمت بتبسيطها هنا للوصول إلى وجهة نظرك.