Plain Old CLR Object

POCO es un acrónimo de Plain Old CLR Object. Es un juego de palabras del POJO de la plataforma Java, y es utilizado por los desarrolladores de la plataforma .NET Framework.

Un POJO (Plain Old Java Object) es una sigla creada por Martin Fowler, Rebecca Parsons y Josh MacKenzie en septiembre de 2000 y utilizada por programadores Java para enfatizar el uso de "viejas" clases simples (planas) que no dependen de un framework en especial.

Similar al contexto de Java, el término POCO se utiliza para contrastar un objeto "estándar" de un objeto que está diseñado para ser utilizado con un complicado framework de objetos, tal como un ORM, o bien para diferenciarlo de un objeto COM+ (ver COM).

Estos términos siguen la línea de otras siglas similares, como POTS (Plain Old Telephone System) o PODS (Plain Old Data Structures) utilizada para describir a simples "struct" en el contexto de la programación C++.

Ejemplo

// ¡Esta clase no es una clase POCO! 
public class Person : IDisposable
{
    private static readonly ILogger Logger = LoggerFactory.Create(typeof(Person));
    public Person() {}
    public Person(int id, string firstName, string lastName, DateTime birthDate)
    {
        Id = id;
        FirstName = firstName;
        LastName = lastName;
        BirthDate = birthDate;
    }
    
    [Category("Data")]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }

    public string GetName()
    {
        return $"{FirstName} {LastName}";
    }

    public override string ToString() 
        => $"Id:{Id}, FirstName:{FirstName}, LastName:{LastName}, BirthDate:{BirthDate}";
        
    public void Dispose() {/* Code...*/}
}

// Esta clase es una clase POCO.
public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }
}