2010-10-07 8 views
21

मैं Protovis एपीआई के पाइथन के एक साधारण बंदरगाह के साथ खेल रहा हूं।एक पायथन एपीआई डिज़ाइन करना: फ़्लुएंट इंटरफेस या तर्क

सरल बार चार्ट उदाहरण पर विचार करें, जावास्क्रिप्ट में:

var vis = new pv.Panel() 
    .width(150) 
    .height(150); 

vis.add(pv.Bar) 
    .data([1, 1.2, 1.7, 1.5, .7, .3]) 
    .width(20) 
    .height(function(d) d * 80) 
    .bottom(0) 
    .left(function() this.index * 25); 

vis.render(); 

मैं इस धाराप्रवाह इंटरफ़ेस शैली एपीआई का उपयोग या बजाय नामित पैरामीटर का उपयोग करने के लिए जारी करने के लिए है कि क्या बहस कर रहा हूँ। नामित पैरामीटर के साथ हम लिख सकते हैं:

vis = pv.Panel(width=150, 
       height=150) 

vis = vis + pv.Bar(data=[1, 1.2], 
        width=20, 
        height=lambda d: d * 80, 
        bottom=0, 
        left=lambda: self.index * 25) 
vis.render() 

क्या कोई पसंदीदा पायथन शैली है?

+0

दिलचस्प। मैंने दोनों को देखा है। उदाहरण के लिए Django दोनों का उपयोग करता है: विधि श्रृंखला और कीवर्ड तर्क। –

+1

शायद यह सिर्फ मुझे है, लेकिन मुझे लगता है कि यह दोनों बदसूरत है: पी – poke

+1

कीवर्ड वाक्यविन्यास का लाभ यह है कि आप धाराप्रवाह एपीआई की तुलना में 'pv.Bar (** kwargs) 'जैसी कुछ आसानी से उपयोग कर सकते हैं। साथ ही, जैसा कि मैंने इसे jQuery के साथ जावास्क्रिप्ट में देखा है, बहुत सारे अज्ञात फ़ंक्शंस का उपयोग किया जाता है - ये पाइथन पर अच्छी तरह से मानचित्र नहीं बनाते हैं। –

उत्तर

21

मेरा वोट एंटी-चेनिंग, प्रो-नाम-पैराम्स है।

  1. डॉट चेन गरीब कोड-IntelliSense के लिए बनाता है के बाद से अनुभवजन्य प्रोटोटाइप सिर्फ एक खाली पैनल() या बार(), आप उस पर पाठ्यक्रम pydoc के कर सकते हैं, लेकिन इस समय और युग IntelliSense में में उपलब्ध है अधिकांश आईडीई और एक महान उत्पादकता बूस्टर।

  2. चेनिंग प्रोग्राम को क्लासिक रूप से कक्षा को और अधिक कठिन कहता है। एक सूची या निर्देश में * args, ** kwargs के रूप में पास करने में सक्षम होने के लिए बहुत अच्छा है - जबकि चेनिंग के साथ संभवतः आपको क्लास को मेटा बनाने के लिए दोनों विधियों या बैकफ्लिप्स का एक समूह का समर्थन करना होगा।

  3. चेनिंग कोड को पढ़ने में अधिक कठिन बनाता है क्योंकि अनिवार्य रूप से कोई भी इसे एक पंक्ति पर करेगा, और आश्चर्य की बात है कि जब वे एक ही परम में दो बार पारित होते हैं तो चीजें सभी गुम हो जाती हैं - आप इसे रोक सकते हैं नामित पैरा कन्स्ट्रक्टर डुप्ली फ़िल्टरिंग मूल रूप से निर्मित है।