Má někdo navrhnout API nebo kód knihovny tímto způsobem?

hlasů
2

Četl jsem nějaké věci, o tom, jak vytvořit knihovnu nebo API dobře, a narazil Joshua Blocha velké diskuse na Google Tech Talks. Teď když jsem zdaleka profesionální developer API, myslím, že programování spoustu tříd / funkcí je podobný, ačkoli hodně zmenšená verze stejnou věc - jednoznačné oddělení činností, snadné a příjemné používání, povzbuzovat čistý kód , atd.

Jsem šel přes některé široce používané open source kódu Java a dostal tento nápad (nic nového, ale jen uvedení do průzračně ...)

Vezměme si příklad pseudo kód (nebo možná nějaký dialekt BASIC):

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

Nyní inspirovaný kódu v jazyce Java bych chtěl, aby bylo možné udělat něco takového:

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

Moje otázka zní:
Má někdo jiný konstrukční API od pseudo-kódu, jako je tento?

Je to dobrý nápad na něco malého? Řekněme, že až pro 10 tříd, z nichž každá má asi 10 metod, z nichž každá metoda není větší než než 5-6 řádků kódu uvnitř. To je samozřejmě jen hrubý sadu čísel ukázat velikost tříd, které mají být navrženy - nikde blízko k plné API a ne jen hobby projekt - profesionální balíček, který dělá něco menší, ale dělá to dobře .

Má někdo našel nějaké závažné nedostatky tohoto přístupu?

Myslím, že jeden skutečný přínos je, že vás nutí nejprve zapsat své use-případy .

Druhá věc je, že podstatná jména a slovesa zůstat jednoduchý , což umožňuje konečného produktu vyhýbat se MultiPhraseAbstractParadigmDesignPatternImplementor syndrom :-D

Položena 22/01/2010 v 20:40
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
0

Ano, je to tak, že jQuery je navržen tak, že vždy skončí návratem sám, takže můžete metody řetězce, jako je tento.

Odpovězeno 22/01/2010 v 20:42
zdroj uživatelem

hlasů
0

I obvykle začínají s prázdnými třídami a metodami. Je to opravdu otázka shora dolů vs návrhu zdola nahoru.

Opravdu přednost obrovské tabule skicu ačkoli.

Odpovězeno 22/01/2010 v 20:45
zdroj uživatelem

hlasů
3

Jedná se o poměrně běžný návrhový vzor volal plynulá rozhraní . Je běžné, že ve funkcionálních jazyků a získává na popularitě i jinde. Poprvé jsem ho viděl ve schématu.

Je to velmi pohodlné a čitelné idiom, ale nezapomeňte, že tam bude často časy, kdy jste vlastně chci inicializovat více než jednu proměnnou ve volání jediné funkce. Například, když je vnitřní stav, který má být nastaven v závislosti na kombinaci dat, nebo při nastavování a přepsání výchozích hodnot je nákladné. Tak jako u všech „vzory“, používat uvážlivě as rozmyslem.

Odpovězeno 22/01/2010 v 20:52
zdroj uživatelem

hlasů
1

JQuery dělá přesně to. Od http://net.tutsplus.com/tutorials/javascript-ajax/jquery-1-4-released-the-15-new-features-you-must-know/ :

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

nebo pre-1,4:

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

Také jsem udělal podobné věci v C # generování WPF v kódu:

new StackPanel {
   Children = {
      new TextBlock { Text = "Hi there", Width = 50 },
      new TextBox { Width = 100 },
      new Border { 
          Content = new ListBox()
      }
   }
};
Odpovězeno 22/01/2010 v 21:46
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more