Convenció sobre configuració

La convenció sobre configuració (també conegut com a programació per convenció) és un paradigma de disseny que cerca disminuir el nombre de decisions que els desenvolupadors de programari han de prendre. Se cerca guanyar simplicitat, sense perdre flexibilitat.

La frase essencialment significa que un desenvolupador només ha d'especificar aspectes no convencionals de l'aplicació. Per exemple, si existeix una classe anomenada "Venda" al model, la taula corresponent a la base de dades és anomenada "vendes" per defecte. És només si un es desvia d'aquesta convenció, com ara anomenar la taula "productes_venuts", que necessita escriure codi considerant aquests noms.

  • Quan la configuració implementada per l'eina que fas servir coincideix amb el comportament desitjat per tu, no has d'escriure fitxers de configuració.
  • En canvi, quan el comportament desitjat per tu es desvia de la convenció implementada, has de configurar explícitament el comportament que desitges.

Motivació modifica

Els entorns de treball mal dissenyats sovint necessiten múltiples fitxers de configuració, cadascun amb molts paràmetres. Aquests ofereixen informació específica per a cada projecte, des de URLs a mapejos entre classes i taules de la base de dades. Un gran nombre de fitxers de configuració amb massa paràmetres és sovint un indicador de disseny d'aplicació innecessàriament complex.[1]

Per exemple, versions inicials del mapper de persistència Java Hibernate mapejaven les entitats i els seus camps a la base de dades mitjançant la descripció d'aquestes relacions en fitxers XML. Molta d'aquesta informació podria haver estat incorporada mapejant per convenció els noms de les classes a noms de taules de la base de dades, i els camps a les seves columnes, respectivament. Versions posteriors van deixar de fer servir el fitxer de configuració XML i en comptes d'això van fer servir aquestes mateixes convencions, les desviacions de les quals poden ser indicades amb Java annotations.

Ús modifica

Molts entorns de treball moderns fan servir una aproximació convenció sobre configuració. Alguns d'aquests són:

  • Apache Maven
  • ASP.NET MVC
  • Cake PHP
  • Grails
  • Grok
  • Kohana PHP
  • Spring
  • Symfony
  • Ruby on Rails
  • web2py
  • Zend Framework

No obstant el concepte és anterior i pot ser detectat en l'especificació JavaBean:

Com a regla general no volem inventar una classe enorme java.beans.de_tot de la que la gent hagi d'heretar. En comptes d'això ens agradaria que els runtimes JavaBean ofereixin comportament per defecte per a objectes 'normals', però permetre als objectes sobreescriure un tros determinat de comportament per defecte mitjançant l'herència d'alguna interfícia java.beans.alguna_cosa específica.

Referències modifica

  1. C2 Wiki (2009-09-01). Too Many Parameters. C2 Wiki, 1 September 2009. Retrieved from http://c2.com/cgi/wiki$?TooManyParameters.

Enllaços externs modifica