Domanda

Ho letto alcune cose su come progettare una biblioteca o API bene, e ci siamo imbattuti grande discorso di Joshua Bloch a Google Tech Talks. Ora, anche se io sono in nessun posto vicino uno sviluppatore API professionale, penso che la programmazione di un gruppo di classi / funzioni è simile, anche se molto ridotta versione della stessa cosa - chiara separazione delle azioni, la facilità e l'uso piacevole, incoraggiando codice pulito , ecc.

stavo passando un po 'di open source il codice Java utilizzato e avuto questa idea (niente di nuovo, ma solo mettendo in su lucidamente ...)

Facciamo un esempio pseudo codice (o forse qualche dialetto del BASIC):

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

Ora ispirato dal codice Java che vorrei essere in grado di fare qualcosa in questo modo:

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

La mia domanda è questa:
Fa API chiunque altro di design a partire da pseudo-codice come questo?

E 'una buona idea per qualcosa di piccolo? Dire fino a 10 classi ciascuna con forse 10 metodi, ciascun metodo non più di 5-6 righe di codice all'interno di esso. Questo è ovviamente solo un insieme di massima di numeri per per mostrare la dimensione delle classi da progettare - in nessun posto vicino a un API completa e non solo un progetto hobby - un pacchetto professionale che fa qualcosa di piccolo, ma lo fa bene .

Qualcuno ha trovato seri svantaggi di questo approccio?

Credo che la un beneficio reale è che obbliga a scrivere il vostro casi d'uso prima .

L'altra cosa è che il sostantivi e verbi semplice soggiorno , consentendo al prodotto finale per schivare il MultiPhraseAbstractParadigmDesignPatternImplementor sindrome :-D

È stato utile?

Soluzione

Questo è un modello di progettazione piuttosto comune chiamato un fluente interfaccia . E 'comune in linguaggi funzionali e sta guadagnando popolarità altrove. prima ho visto nello Schema.

E 'un linguaggio molto conveniente e leggibile, ma ricordate che ci sarà spesso momenti in cui effettivamente si desidera inizializzare più di una variabile in una sola chiamata di funzione. Ad esempio, quando c'è stato interno che deve essere impostato a seconda di una combinazione di dati, o quando l'impostazione e sovrascrivendo i valori predefiniti è costoso. Così, come con tutti i "pattern", usare con giudizio e con accortezza.

Altri suggerimenti

Jquery fa esattamente questo. Da 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!');  
    }  
}); 

o per la pre-1.4:

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

Ho anche fatto cose simili in C # che generano WPF in codice:

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

Sì, questo è il modo in cui jQuery è progettato, si finisce sempre per sé il ritorno in modo da poter metodi della catena come questo.

Io tendo a iniziare con le classi e metodi vuoti. La sua davvero una questione di top-down vs basso verso l'alto design.

ho davvero preferisco un enorme disegno lavagna però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top