2009-11-28 18 views
5

होना चाहिए मैंने सोचा कि एएस 3 में अब निजी क्षमताओं को जोड़ा गया है। तो मुझे अभी भी अंडरस्कोर के साथ निजी चर का प्रस्ताव क्यों देना चाहिए?एएस 3: निजी चर के पास _

private var _privVar:String; 
+0

क्या आपको सही उत्तर मिला? –

उत्तर

3

आपको यह नहीं करना है। यह ऐसा कुछ है जो पठनीयता को प्रोत्साहित करता है, लेकिन इसका मतलब अनिवार्य नहीं है। पूरी तरह से एक व्यक्तिगत वरीयता।

10

मैं एडोब की शैली का पालन करने के लिए इसे एक्शनस्क्रिप्ट 3 में एक सामान्य नियम बना देता हूं।

निजी varibles के लिए अंडरस्कोर का उपयोग न करें जब तक कि आप getter or setter का उपयोग न करें। उदाहरण के लिए:

private var _foo:String; 
public function get foo():String 
{ 
    return _foo; 
} 
public function set foo(value:String):void 
{ 
    _foo = value; 
} 

यह उदाहरण गेटर/सेटर एक छोटे से बेकार है, जैसा कि आप सिर्फ एक सार्वजनिक संपत्ति वही चीज़ बना सकता है। जब आप संपत्ति प्राप्त करते हैं या सेट करते हैं तो आपको केवल विशेष करने की आवश्यकता होने पर गेटटर या सेटर का उपयोग करें। फिर भी, इसके बजाय सार्वजनिक विधि बनाने के लिए आमतौर पर सबसे अच्छा होता है।

इसके अलावा एक और बिंदु। व्यक्तिगत रूप से मुझे नहीं लगता कि यह आपके चर या विधि नामों को संक्षिप्त करना एक अच्छा विचार है। तो मेरे चर निजीवार पर कॉल करने के बजाय, मैं इसे निजी वैरिएबल कहूंगा। यह विशेष रूप से सच है यदि आप स्वत: पूर्ण/सुझाव जैसे FlashBuilder (फ्लेक्स बिल्डर) या FlashDevelop के साथ एक आईडीई का उपयोग कर रहे हैं।

अधिक जानकारी के लिए Adobe - coding conventions and best practices पर एक नज़र डालें।

+1

यदि गेटर और सेटर कुछ विशेष नहीं कर रहे हैं, तो यह केवल परिवर्तनीय सार्वजनिक बनाने के लिए तेज़ होगा। यह किसी को चोट पहुंचाने वाला नहीं है। – LiraNuna

+0

बिल्कुल! मेरा उदाहरण मेरे बिंदु को व्यक्त करने के लिए बस एक बहुत ही सरल था। यह बहुत दुर्लभ है कि आप वास्तव में एएस 3 में गेटर्स या सेटर्स का उपयोग करेंगे। अधिकांश समय आप सार्वजनिक संपत्ति या सार्वजनिक विधि बनाते हैं। –

+1

काफी दुर्लभ? मुश्किल से। मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप कैसे कोड करते हैं, लेकिन मैं इंटरफ़ेस के खिलाफ कोड थोड़ा सा करता हूं और गेटटर/सेटर इसे प्राप्त करने का एकमात्र तरीका है। –

0

अंडरस्कोर का उपयोग करना सिर्फ एक सम्मेलन है। और मैं उनसे बचने की कोशिश करता हूं क्योंकि यह मेरे इंटेलिजेंस के साथ गड़बड़ करता है। मैं obj.va टाइपिंग और फ्लेक्स बिल्डर में Ctrl-Space मार obj.variableName प्राप्त करने के लिए करने के लिए इस्तेमाल कर रहा हूँ - इस _variableName

Btw के साथ अच्छी तरह से काम नहीं करता है, ActionScript के पिछले संस्करणों आप एक अंडरस्कोर से प्रस्तावना को "निजी" चर नाम की आवश्यकता होती है ?

+0

यह गड़बड़ करता है, क्योंकि ऐसा लगता है कि आपको विचार नहीं मिलता है। अंडरस्कोर का उपयोग करना क्योंकि आप एक चर को 'सदस्य' के रूप में चिह्नित करना चाहते हैं। जिसका अर्थ है कि यह निजी या संरक्षित है। तो आप इसे obj.variable के रूप में उपयोग नहीं कर सकते - यह फ़ंक्शन या गेटर/सेटर होना चाहिए, जो निश्चित रूप से अंडरस्कोर से शुरू नहीं होता है। –

0

मुझे लगता है कि आपको चर को संक्षिप्त नहीं करना चाहिए। यह पठनीयता और ऑटो पूरा करने में कठोर है। दूसरी तरफ, मेरे अभ्यास में function set someVar (value) : void के सिंटैक्स के साथ अंतर्निहित एएस गेटर्स और सेटर्स का उपयोग करना एक अच्छी बात नहीं है। यह बहुत ज्यादा रिफैक्टरिंग करना कठिन होता है क्योंकि जब यह पता नहीं होता कि कुछ चर एक सेटटर या गेटर है तो कई बार मिलता है।

जहां मैं काम करता था, हमने जावा बीन्स प्रॉपर्टी एक्सेस कन्वेंशन जैसे function setSomeVar (value) : void का उपयोग किया। बेशक, क्योंकि यह एएस समुदाय में आम उपयोग नहीं है, ऐसे आईडीई जैसे फ्लैशडिवेल ऐसे गेटर्स और सेटर्स पीढ़ी का समर्थन नहीं करते हैं।

संबंधित मुद्दे