Qual é a melhor prática para usar campos públicos?

Quando escrevo uma classe, sempre exponho campos particulares por meio de uma propriedade pública como esta:

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

Quando é bom apenas expor um campo público como este:

public int MyField;

Estou criando uma estrutura chamada Result e minha intenção é fazer isso:

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

public readonly int Result;
public readonly int Message;

Qual é a melhor prática? Está tudo bem fazer isso?

questionAnswers(11)

yourAnswerToTheQuestion