Não é tanto uma questão de confiança, mas de gerenciamento de complexidade.
Um membro público pode ser acessado de fora da classe, o que, por considerações práticas, significa "potencialmente em qualquer lugar". Se algo der errado com um campo público, o culpado pode estar em qualquer lugar, e assim, a fim de rastrear o bug, você pode ter que olhar bastante código.
Um membro privado, por outro lado, só pode ser acessado de dentro da mesma classe, então se algo der errado com isso, geralmente há apenas um arquivo de origem para examinar. Se você tem um milhão de linhas de código em seu projeto, mas suas classes são pequenas, isso pode reduzir o esforço de rastreamento de bugs por um fator de 1000.
Outra vantagem está relacionada ao conceito de 'acoplamento'. Um membro público m
de uma classe A
que é usado por outra classe B
apresenta uma dependência: se você alterar m
em A
, também deverá verificar os usos de m
em B
. Pior ainda, nada na classe A
informa onde o m
está sendo usado, então, novamente, você tem que pesquisar em toda a base de código; se é uma biblioteca que você está escrevendo, você precisa ter certeza de que o código fora do seu projeto não seja interrompido por causa da sua mudança. Na prática, as bibliotecas tendem a permanecer com suas assinaturas de métodos originais pelo maior tempo possível, não importa o quão dolorosas sejam, e então introduzem um bloco de alterações de quebra com uma grande atualização de versão. Com membros privados, por outro lado, você pode excluir dependências imediatamente - elas não podem ser acessadas de fora, então todas as dependências estão contidas dentro da classe.
Nesse contexto, "outros programadores" incluem seus eus futuros e anteriores. É provável que você saiba agora que você não deve fazer essa coisa X com sua variável Y, mas você deve ter esquecido de três meses quando um cliente precisa urgentemente de você para implementar algum recurso, e você se pergunta por que fazer X quebra Y de maneira obscura.
Então, quando você deve tornar as coisas privadas: eu diria que torne tudo privado por padrão e exponha apenas as partes que precisam ser públicas. Quanto mais você puder tornar privado, melhor.