هل يقوم أي شخص بتصميم API أو رمز المكتبة بهذه الطريقة؟

StackOverflow https://stackoverflow.com/questions/2119950

سؤال

كنت أقرأ بعض الأشياء حول كيفية تصميم مكتبة أو واجهة برمجة تطبيقات بشكل جيد ، وتعثرت عبر حديث جوشوا بلوش الرائع في محادثات Google Tech. الآن على الرغم من أنني لست بالقرب من مطور واجهة برمجة التطبيقات المهنية ، أعتقد أن برمجة مجموعة من الفصول/الوظائف هي نسخة مشابهة ، على الرغم من أن هناك إصدارًا كبيرًا من نفس الشيء-فصل واضح عن الإجراءات والسهولة والاستخدام الممتع ، وتشجيع الرمز النظيف ، إلخ.

كنت أعاني من خلال رمز Java مفتوح المصدر المستخدم على نطاق واسع وحصلت على هذه الفكرة (لا شيء جديد ، ولكن فقط وضعها بوضوح ...)

دعونا نأخذ مثالا على ذلك كود مزيف (أو يمكن بعض لهجة أساسية):

1. new label
2. set name 'hello world'
3. set color 'blue'
4. show 'topmost'
5. on click hide

مستوحاة الآن من رمز Java الذي أود أن أكون قادرًا على القيام به شيئا ما مثله:

1. Label l = new Label()
2.          .setName('Hello World')
3.          .setColor('blue')
4.          .show(zindex.top);
5. l.onClick = l.hide() ;

سؤالي هو:
هل يقوم أي شخص آخر بتصميم واجهات برمجة التطبيقات بدءًا من الرمز الزائف مثل هذا؟

هل هي فكرة جيدة لشيء صغير؟ قل حتى 10 فئات لكل منها 10 طرق ، كل طريقة لا تزيد عن 5-6 خطوط رمز بداخلها. من الواضح أن هذا مجرد مجموعة تقريبية من الأرقام لإظهار حجم الفصول التي سيتم تصميمها - في أي مكان قريب من واجهة برمجة التطبيقات الكاملة وليس مجرد مشروع هواية - حزمة احترافية تفعل شيئًا صغيرًا ولكنها تفعل ذلك جيدًا.

هل وجد أي شخص أي عيوب خطيرة لهذا النهج؟

اعتقد ان فائدة حقيقية واحدة هل هاذا هو يجبرك على كتابة حالات الاستخدام الخاصة بك أولاً.

الشيء الآخر هو أن الأسماء والأفعال تبقى بسيطة, ، تمكين منتجك النهائي من تفادي multiphraseabstractparadigmdesignpatternimplementor متلازمة: d

هل كانت مفيدة؟

المحلول

هذا نمط تصميم شائع إلى حد ما يسمى أ واجهة بطلاقة. إنه أمر شائع في اللغات الوظيفية ويحصل على شعبية في مكان آخر. رأيته لأول مرة في المخطط.

إنها تعبير مريح للغاية وقابل للقراءة ، ولكن تذكر أنه ستكون هناك أوقات في كثير من الأحيان حيث تريد تهيئة أكثر من متغير واحد في مكالمة وظيفة واحدة. على سبيل المثال ، عندما تكون هناك حالة داخلية يجب ضبطها وفقًا لمجموعة من البيانات ، أو عند تحديد القيم الافتراضية وكتابةها ، تكون القيم الافتراضية مكلفة. لذلك ، كما هو الحال مع جميع "الأنماط" ، استخدم بحكمة ومع ما يتفق عليه.

نصائح أخرى

jQuery يفعل هذا بالضبط. من عند http://net.tutsplus.com/tutorialles:

jQuery('<div/>', {  
    id: 'foo',  
    css: {  
        fontWeight: 700,  
        color: 'green'  
    },  
    click: function(){  
        alert('Foo has been clicked!');  
    }  
}); 

أو قبل 1.4:

jQuery('<div/>')  
   .attr('id', 'foo')  
   .css({  
       fontWeight: 700,  
       color: 'green'  
   })  
   .click(function(){  
       alert('Foo has been clicked!');  
   });  

لقد فعلت أيضًا أشياء مماثلة في C# توليد WPF في الكود:

new StackPanel {
   Children = {
      new TextBlock { Text = "Hi there", Width = 50 },
      new TextBox { Width = 100 },
      new Border { 
          Content = new ListBox()
      }
   }
};

نعم ، هذه هي الطريقة التي يتم بها تصميم jQuery ، وينتهي الأمر دائمًا بإرجاع نفسه حتى تتمكن من سلسلة مثل هذه.

أميل إلى البدء بفصول وأساليب فارغة. انها حقا مسألة أعلى لأسفل مقابل التصميم القاع إلى أعلى.

أنا أفضل حقا رسم بيضاء ضخمة رغم ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top