दो दृष्टिकोणों के बीच एकमात्र अंतर यह है कि दूसरा नाम uninitialized constant Object::SomeNamespace
फेंक देगा यदि नामस्थान पहले घोषित नहीं किया गया है।
जब एक फ़ाइल में घोषित किया गया, तो मैं पहले व्यक्ति का चयन करूंगा क्योंकि आपको SomeNamespace
दोहराना नहीं है।
जब एक से अधिक फ़ाइलों का उपयोग कर मैं भी एक दूसरे का उपयोग निम्न समस्या में चल रहा से बचने के लिए: यदि आपका कोड बेस एक छोटा सा है
# in a.rb
require 'b'
module SomeNamespace
def self.animal
Animal.new
end
end
# in b.rb
class SomeNamespace::Animal
end
# irb
require 'a' # explodes with the uninitialized constant error
यह उदाहरण काल्पनिक किया जा सकता है, लेकिन यह यह को गति प्रदान करने के लिए आसान है बड़ा। मैं आमतौर पर इससे बचने के लिए स्पष्ट तरीके (आपका पहला) उपयोग करता हूं।
दूसरी बात का उपयोग करते समय उपयोगी हो सकता है कि यह नामस्थान में टाइपो का पता लगाएगा।
नामस्थान बनाने के लिए एक स्थापित तरीका प्रतीत नहीं होता है, उदाहरण के लिए डेविस दोनों दृष्टिकोणों को मिश्रित करता है: first one, second one।
स्रोत
2011-10-19 13:14:28