¿Cuál es la mejor práctica para usar los campos públicos?

Cuando escribo una clase, siempre expongo los campos privados a través de una propiedad pública como esta:

private int _MyField;
public int MyField
{ get{return _MyField; }

¿Cuándo está bien exponer un campo público como este:

public int MyField;

Estoy creando una estructura llamada Resultado y mi intención es hacer esto:

public Result(bool result, string message)
{
   Result = result;
   Message = message;
}

public readonly int Result;
public readonly int Message;

cual es la mejor practica? ¿Alguna vez está bien hacer esto?

Respuestas a la pregunta(11)

Su respuesta a la pregunta