Pregunta

Yo estaba leyendo algunas cosas acerca de cómo diseñar una biblioteca o API bien, y tropezó con gran charla de Joshua Bloch en Google Tech conversaciones. Ahora bien, aunque estoy muy lejos de un desarrollador API profesional, creo que la programación de un montón de clases / funciones es una similar, aunque mucho más reducida versión de lo mismo - la separación clara de las acciones, la facilidad y el uso placentero, fomentando un código limpio , etc.

Yo estaba pasando por algo de código Java de código abierto ampliamente utilizado y se puso esta idea (nada nuevo, pero sólo ponerlo a la lucidez ...)

Tomemos un ejemplo pseudo código (o tal vez un dialecto de BASIC):

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

Ahora inspirado por el código Java Me gustaría ser capaz de hacer algo como esto:

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

Mi pregunta es la siguiente:
API hace cualquier otra persona de diseño a partir de pseudo-código como este?

¿Es una buena idea para algo pequeño? Decir hasta 10 clases cada uno con unos 10 métodos, cada método de no más de 5-6 líneas de código en su interior. Esto es, obviamente, sólo un conjunto aproximado de números para mostrar el tamaño de las clases que diseñarse - ni cerca de una API completa y no sólo un proyecto de pasatiempo - un paquete profesional que hace algo pequeño, pero lo hace bien .

¿Ha encontrado a nadie ningún serios inconvenientes de este enfoque?

Creo que el un beneficio real es que te obliga a escribir sus primeros casos de uso .

La otra cosa es que los nombres y verbos estancia sencilla , que permite a su producto final para esquivar la MultiPhraseAbstractParadigmDesignPatternImplementor síndrome -D

¿Fue útil?

Solución

Este es un patrón de diseño bastante común llamado fluidez interfaz . Es común en los lenguajes funcionales y está ganando popularidad en otros lugares. Vi por primera vez en el esquema.

Es un lenguaje muy conveniente y fácil de leer, pero recuerda que a menudo habrá momentos en los que realmente no desea inicializar más de una variable en una sola llamada de función. Por ejemplo, cuando hay estado interno que tiene que establecerse en función de una combinación de datos, o cuando el ajuste y sobrescribir los valores por defecto es costoso. Por lo tanto, al igual que con todos los "patrones", la utilización juiciosa y con previsión.

Otros consejos

Jquery hace exactamente esto. De 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 para pre-1.4:

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

También he hecho cosas similares en C # WPF de generación de código:

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

Sí, esta es la forma en que está diseñado jQuery, siempre termina volviendo en sí, para que pueda métodos de cadena como esta.

Me tienden a comenzar con las clases y los métodos vacíos. Es realmente una cuestión de arriba hacia abajo contra el diseño hasta la parte inferior.

Realmente prefieren una enorme, aunque boceto pizarra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top