تصميم API Python: واجهة أو حجج بطلاقة
-
28-09-2019 - |
سؤال
أنا ألعب مع منفذ بسيط من بروتوفيس API إلى Python.
النظر في مثال مخطط الشريط البسيط ، في JavaScript:
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()
هل هناك أسلوب بيثون المفضل؟
المحلول
تصويتي هو مكافحة التصميم ، المؤيد للسماعات.
إن التزجيج النقطي يجعله ضعيفًا للعلم الكود نظرًا لأن النموذج الأولي التجريبي هو مجرد لوحة فارغة () أو شريط () ، يمكنك بالطبع pydoc عليها ، ولكن في هذا اليوم والعمر يتوفر Intellisense في معظم IDES وداعم إنتاجية رائعة .
السلاسل يجعل من بشكل برمجي وصف الفصل أكثر صعوبة. من الجيد جدًا أن تكون قادرًا على تمرير قائمة أو قولون كـ ** args ، ** kwargs-في حين أنه من الممكن مع التسلسل ، يجب عليك دعم كلتا الطريقتين أو حفنة من الخلفية لإنشاء الفصل.
يجعل التسلسل رمزًا أكثر صعوبة في القراءة لأن شخصًا ما سيفعل كل شيء على سطر واحد ، ويتساءل عن سبب ارتكاب كل الأشياء عندما تمر في نفس المبارزة مرتين - يمكنك منع ذلك ولكن مع تصفية مُنشئ Param المسماة هو أساسا في.