2008-10-30 38 views
203

¿Alguien puede definir exactamente qué significa 'POCO'? Cada vez encuentro el término más y más, y me pregunto si se trata solo de clases simples o si significa algo más.'POCO' definición

+18

También es gracioso que "poco" es una palabra en español que significa "poco, no mucho". Por lo tanto, ¡encaja muy bien en este contexto! http://en.wiktionary.org/wiki/poco –

+3

Significa exactamente lo mismo en italiano también :) – BlackBear

+2

Y en portugués significa un error porque está escrito: "pouco". – Ismael

Respuesta

172

"Plain Old C# objetos"

Sólo una clase normal, no hay atributos que describen las preocupaciones de infraestructura u otras responsabilidades que sus objetos de dominio no deben tener.

EDITAR - como otras respuestas han declarado, técnicamente es "Objeto de CLR sencillo antiguo" pero, como comenta David Arno, prefiero el "Objeto de clase simple antiguo" para evitar vínculos con idiomas o tecnologías específicos.

ACLARAR: En otras palabras, no derivan de alguna clase base especial, ni devuelven ningún tipo especial para sus propiedades.

+14

Vería un POCO como una vieja clase simple que no intenta ser parte del conjunto de patrones de moda. Sin embargo, me gusta tu respuesta también. –

+0

Estoy de acuerdo, no soy fanático del nombre C#, pero eso fue lo primero que escuché cuando me preguntaba sobre la pregunta :) La clase se ajusta a POJO, POVBO POC# O, POC++ O, PORO, etc. –

+12

Esto no funciona realmente dar una buena respuesta en mi opinión personal como alguien también curioso. Ok, entonces no hay atributos que describan la infraestructura (¿qué quiere decir con atributos e infraestructura ... una conexión de base de datos, por ejemplo? ¿Qué ?, por ejemplo). ¿Qué responsabilidades deberían tener los objetos de tu dominio? ¿Entonces POCO es un objeto de dominio (objeto BL) básicamente? Así que realmente POCO es simplemente otro acrónimo de Objeto de dominio/objeto de capa empresarial que significa todo lo mismo. Objeto POCO/Business Layer Object/Domain Object == misma maldita cosa, solo 3 acrónimos diferentes para el mismo concepto ¿cierto? – PositiveGuy

5

En la tierra de Java, normalmente "PO" significa "viejo normal". El resto puede ser complicado, así que supongo que su ejemplo (en el contexto de Java) es "objeto simple de clase anterior".

algunos otros ejemplos

  • POJO (plain old objeto Java)
  • Poji (normal interfaz Java de edad)
12

POCO significa "objeto Plain Old CLR".

+20

ooooook? Entonces, ¿qué significa eso en contexto o en el mundo real? – PositiveGuy

+20

Y como diría el profesor de electricidad de mi escuela secundaria, "... y las naranjas saben a naranja" –

+5

Correcto, pero esta publicación parece más un comentario que una respuesta, ya que no responde completamente la pregunta. –

6

Para agregar las otras respuestas, todos los términos de POxx parecen provenir de POTS (Plain old telephone services).

El POX, utilizado para definir XML simple (sin formato), en lugar de las complejas cosas de varias capas asociadas con REST, SOAP, etc., era un término útil y vagamente divertido. PO (inserte el idioma de elección) O los términos han gastado bastante la broma.

42

La mayoría de la gente ha dicho que - Plain Old CLR Object (a diferencia de la anterior POJO - Plain Old Java Object)

El POJO uno salió de EJB, que se requiere para heredar de una clase padre específico para cosas como objetos de valor (lo que obtienes de una consulta en un ORM o similar), así que si alguna vez quisiste moverte de EJB (por ej., a Spring), estabas lleno.

Las POJO son solo clases que no fuerzan la herencia ni ninguna marca de atributo para hacer que funcionen en cualquier marco de trabajo que estés usando.

POCO son iguales, excepto en .NET.

Generalmente se usará alrededor de los ORM: los antiguos (y algunos actuales) requieren que usted herede de una clase base específica, lo que lo vincula con ese producto. Los más nuevos no lo hacen (nhibernate es la variante que conozco): simplemente haces una clase, la registras con el ORM y estás apagado. Más fácil.

+1

solo para completar complementos, CLR stabds para Common Language Runtime: la máquina virtual .net. – philant

+0

+1 por mencionar su relación (habitual) con los ORM – Lucas

+3

Ejemplo de ORM de .Net 3.5 sp1: el marco Entity requiere que las clases hereden de una determinada clase de marco. LINQ to SQL no tiene este requisito. Por lo tanto, LINQ to SQL funciona con POCO y el marco Entity no. – Lucas

3

Interesante. Lo único que sabía que tenía que ver con la programación y tenía POCO en él es el POCO C++ framework.

4

En términos WPF MVVM, una clase POCO es uno que no se dispara eventos PropertyChanged

6

En .NET a Poco es un 'Plain Old CLR Object'. No es un 'Objeto simple de C# antiguo' ...

7

Puedo estar equivocado acerca de esto ... pero de todos modos, creo que POCO es Plain Old Clase CLR Objeto y proviene de POJO plain old Java Object. Un POCO es una clase que contiene datos y no tiene comportamientos.

Aquí es un ejemplo escrito en C#:

class Fruit { 
    public Fruit() { 
    } 
    public Fruit(string name, double weight, int quantity) { 
     Name = name; 
     Weight = weight; 
     Quantity = quantity; 
    } 
    public string Name { get; set; } 
    public double Weight { get; set; } 
    public int Quantity { get; set; } 
    public override string ToString() { 
     return Name.ToUpper() + " (" + Weight + "oz): " + Quantity; 
    } 

} 
0

Mientras Estoy seguro POCO significa objeto de clase Plain Old o Plain Old C Objeto y 99,9% de las personas aquí, POCO es también animador de Pro (Autodesk) construido en lenguaje de scripting.