2010-01-11 21 views
5

¿Cuáles son los antipatrones clave que se deben evitar al diseñar aplicaciones para la empresa? Estamos usando C# y SQL Server y Silverlight, por cierto, pero imagino que algunos de los antipatrones serán de lenguaje neutral.Enterprise Architecture Anti-patterns

+1

Wiki de la comunidad? –

+4

Algunos podrían considerar Enterprise Architecture en sí misma como un anti-patrón. – cletus

+0

No creo que esto sea wiki de la comunidad, pero feliz de ser guiado –

Respuesta

3

sumidero Empresa:

1: leer que su acceso de base de datos debe estar en una capa separada

2: Hey, tenemos una capa de base de datos.

2 (b) Oye, incluso tenemos una capa de delegado para abstraer nuestra base de datos.

3: aplique el law of leaky abstractions -porque hay métodos en los delegados que obtienen cosas, solo suponga que están ahí para usar sin pensar en las consecuencias- como en la llamada "getPurchaseOrder()" 10 veces seguidas en una página, aunque getPurchaseOrder() es un método que envuelve 5 llamadas de bases de datos separadas.

4: Siéntese y disfrute de sus páginas web que se cargan con 100 llamadas a bases de datos separadas (lamentablemente, no una exageración).

¿No estoy seguro de cómo llamaría esto a un antipatrón? tal vez "Las capas no son gratis"?

+0

La separación de las preocupaciones de acceso a datos del resto de la aplicación no necesariamente da como resultado el patrón de repositorio primitivo que está describiendo, con los métodos get y set para cada tipo de entidad en el sistema. No es sincero sugerir que los números 3 y 4 son consecuencias naturales de los números 1 y 2. –

+1

@Rex: pueden no ser consecuencias naturales, pero sin duda son un antipatrón. Algo que ocurre con la frecuencia suficiente para considerar evitarlo. – Tom

+1

@Rex, entiendo que un antipatrón es un patrón negativo en el que puede caer el código. Lo que estoy pensando aquí es la codificación contra capas sin ser consciente, o pensar que debes considerar, lo que realmente están haciendo. p.ej. Dado mi ejemplo anterior, usted ve (bueno, lo he visto, de todos modos, las personas escriben una línea como: if (getPurchaseOrder()! = null && getPurchaseOrder(). price> 10). –