तो मैं कुछ अलग दृष्टिकोण है कि मैं के बारे में पता कर रहा हूँ के बारे में पता है और मैं फायदे और विभिन्न मानदंडों जो कर रहे हैं के लिए विभिन्न तरीकों का नुकसान का पता लगाने के लिए चाहते हैं:लांग शून्य सुरक्षित तरीका चेन
- पठनीयता
- प्रदर्शन
- डिबगिंग में आसानी
- OO सिद्धांतों (कम युग्मन और उच्च सामंजस्य)
स्पष्ट रूप का उपयोग करते हुए सक्रिय समर्थन
person.try(:pet).try(:name).try(:upcase)
से कोशिश विधि एक बचाव का प्रयोग नहीं के बराबर
person.pet.name.upcase rescue nil
एक & & ऑपरेटर श्रृंखला
person && person.pet && person.pet.name && person.pet.name.upcase
बंदर वस्तु वर्ग पैच का उपयोग करना, मूल सार
के लिए https://gist.github.com/thegrubbsian/3499234 देखनाclass Object
def try_all(*methods)
values = [self]
methods.each do |method|
value = values.last.try(method)
return nil if value.nil?
values << value
end
values.last
end
end
person.try_all(:pet, :name, :upcase)
सुरक्षित कोड नहीं के बराबर नहीं है, बजाय डेटा को मान्य इससे पहले कि आप कोड फोन
#not a good implementation by any means
def person_has_pet_with_name? person
begin
return true if !person.pet.name.nil?
rescue
return false
end
end
person.pet.name.upcase if person_has_pet_with_name?(person)
क्या मेरा उत्तर आपको किसी भी तरह से मदद करता है? –
अगर उत्तर आपके प्रश्न का उत्तर दिया गया है तो कृपया प्रश्न को हल करें। –