En los últimos meses he estado haciendo una transición de Java a Groovy y puedo apreciar muchos de los beneficios que trae: menos código, cierres, constructores, MOP que al final hace posible el uso de frameworks como Grails, facilidad con la burla al escribir pruebas, etc.¿Puedes tener demasiado "dinámico" en idiomas dinámicos?
Sin embargo, mis compañeros de trabajo me han "acusado" de que mi código no es suficientemente groovy. Es decir, sigo declarando tipos para mis parámetros y campos, uso herencia y polimorfismo en lugar de tipado de pato, etc. Me parece que en estas situaciones no solo es dinámico vs. estático, sino también paradigma dinámico frente a orientado a objetos tipo de dilema En esos casos, todavía tiendo a preferir OO. Siento que el paradigma OO tiene un gran valor en su premisa básica al permitirle abstraer y relacionar las construcciones de su código con conceptos particulares del mundo real.
tanto, aquí están las preguntas particulares que necesito ayudar con:
¿Debo declarar tipos para mi parámetros, campos, etc?
¿Debo declarar el bloqueo de código como cierre cuando lo haga un método simple?
Cuándo debería usar pato escribiendo en lugar de envío dinámico polimórfico. Por ejemplo, en groovy puedo hacer animal. "$ Action"() o def animal; animal.action(), en lugar de Animal animal = new Dog(); animal.action(). Puedo ver el problema primero en el contexto del principio de Open-Closed, pero ¿hay alguna otra razón para preferir el polimorfismo de OO?
¿Cuándo debo usar interfaces en Groovy (si es que alguna vez lo hizo)?
Estoy seguro de que existen otros dilemas similares que no pude escribir. También creo que estas preguntas son válidas no solo para groovy, sino para cualquier otro lenguaje dinámico. ¿Cuál es su opinión?
Otra razón para declarar tipos es cuando se programan servicios web SOAP para que el WSDL generado pueda contener información de algún tipo ... – Dan