2008-12-30 11 views
8

के लिए नामकरण सम्मेलन मैं अन्य प्रोग्रामर के समूह के साथ सी ++ और क्यूटी का उपयोग करके बनाए गए ओपन सोर्स प्रोजेक्ट पर काम कर रहा हूं।क्यूटी विगेट्स

अब, हमें अपने सभी कोडों में मानक के रूप में उपयोग करने के लिए विजेट्स (और अन्य चर आम तौर पर) के लिए एक नामकरण सम्मेलन की आवश्यकता है ताकि कोड बेहतर पठनीयता प्राप्त हो और हम प्रोग्रामर के बीच बेहतर समन्वय प्राप्त कर सकें।

कोई सलाह?

संपादित करें: नए वर्गों के नामकरण के बारे में बात नहीं कर रहा,

बजाय मैं क्यूटी विजेट के उदाहरण के नामकरण के बारे में बात कर रहा हूँ, चलो कहते हैं कि मैं उपयोगकर्ता नाम के लिए एक पाठ संपादित करते हैं, मैं यह नाम कैसे दूं txtEdtUsrNm?

और उस स्थिति में, मुझे व्युत्पन्न का चयन कैसे करना चाहिए?

+0

इस प्रश्न के दायरे को कम करें। मैं इसका उत्तर दूंगा लेकिन यह पेज और पेज लेगा। क्या आप कक्षा के स्तर का उल्लेख करते हैं? कार्य स्तर? यूआई उत्पन्न विजेट? – mxcl

+1

इसके अलावा, नामकरण योजना के रूप में शब्दों से आंतरिक स्वरों को हटाने का आपका उदाहरण घृणास्पद है। उस शैली के साथ कोड पढ़ना मुझे पागल बना देगा। – mxcl

उत्तर

13

जब तक आप इन पंक्तियों के साथ सोच रहे हों, मैं इस QtQuarterly आलेख को स्टार्ट-टू-फिनिश से पढ़ना शुरू कर दूंगा।

Designing Qt-Style C++ APIs

जिसके अनुसार, एक बात हम करते हैं कि पहले भाग और पिछले भाग के रूप में वर्ग के पिछले पूरे शब्द के रूप में उदाहरण के "उपयोग" कर देना है।

तो, अपने "उपयोगकर्ता नाम" QTextEdit

QTextEdit * userNameEdit = new QTextEdit(this); 

है अगर वहाँ इस तरह के QListView और QTreeView के रूप में अस्पष्टता, है, पिछले unabiguous अनुभाग लेने।

QListView * userListView; 

आप (जैसे QLabel के लिए "LBL" के रूप में) संक्षिप्त रूपों आप इसे कितना पसंद पता लगा सकते हैं, लेकिन आम तौर पर, पूरे शब्द काम किया है और पढ़ने में आसान हो गया है।

दूसरी तरफ, हम इसके बारे में बहुत सख्त नहीं हैं और कक्षा के नाम के बिना आवृत्ति चर के इरादे को नाम देना अधिक महत्वपूर्ण हो सकता है क्योंकि यदि भविष्य में, आप कक्षा को बदलना चाहते हैं, तो आपको नाम बदलने के लिए, अच्छे रिफैक्टरिंग उपकरण की अनुपस्थिति में, दर्द होता है।

शायद सामान्य विजेट्स का पता लगाएं जो आप सबसे अधिक उपयोग करते हैं, और सबसे सामान्य सुपर-क्लास के लिए एक नामकरण सम्मेलन चुनें और बाकी सब कुछ छोड़ दें। चीजें हैं जो सम्मेलन का पालन के

उदाहरण सूची:

  • लेआउट = सभी वर्गों कि "लेआउट" में खत्म हो और QLayout वारिस
  • बटन = सभी वर्गों है कि "बटन" में खत्म हो और QAbstractButton वारिस

QAbstract className कक्षाएं क्या उस सूची में होना चाहिए के बारे में सोचने के लिए एक अच्छी जगह है।

+0

महान जानकारी, धन्यवाद! – Lawand

1

मैं क्यूटी का उपयोग करने वाले उसी नामकरण सम्मेलन का उपयोग करता हूं। अपने लिए यह आसान बनाओ।

उनका नामकरण सम्मेलन जावा के समान है।

1

पूरा नाम जल्दी से पढ़ सकते हैं और प्रकार के लिए कष्टप्रद हो जाते हैं तो हम आम तौर पर एक संक्षिप्त नाम का उपयोग कर रहे:

QLabel * fooLB; 
QPushButton * fooPB; 
QTextEdit * fooTE; 
QSpinBox * fooSB; 

(आप बहाव मिलता है)। हां, कुछ अस्पष्टताएं हैं, लेकिन उन्हें आमतौर पर संदर्भ से हल किया जाता है।

+1

मुझे fooPB रास्ता fooButton की तुलना में कम पठनीय, समझने योग्य और लिखने योग्य लगता है। लेखन वह नहीं है जो प्रोग्रामर ज्यादातर समय करता है, लेकिन पढ़ना और सोचना है। –

2

चूंकि क्यूटी तीसरे पक्ष के डेवलपर्स के लिए खुला है, इसलिए उन्होंने कोडिंग शैली और एपीआई डिजाइन सिद्धांतों के बारे में कई दस्तावेज उपलब्ध कराए।

ये दस्तावेज वाकई दिलचस्प हैं। यहाँ कुछ लिंक कर रहे हैं:

Wiki : Qt Coding Style

Wiki : Api Design Principles

और इस दस्तावेज़ जैस्मिन Blanchette, जो लायक पढ़ने है से (पीडीएफ): Little Manual of API Design

+0

अच्छे लिंक, जेरोम – Lawand

0

सटीक होना, सवाल "नामकरण के बारे में है क्यूटी विजेट के उदाहरण ", लेकिन उत्तर विगेट्स के उदाहरणों के संदर्भ वाले चर नामकरण के बारे में हैं।

क्यूटी विजेट QObject से प्राप्त होते हैं जिसमें गेटटर ऑब्जेक्टनाम() के साथ नाम संपत्ति होती है। यदि प्रोग्रामर नहीं करता है तो क्या क्यूटी संपत्ति को एक मूल्य देता है? इसे "ऑटो जेनरेट" या "डिफ़ॉल्ट" मान पर कॉल करें।

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