Na real, você pode fazer do jeito que você quiser. Ninguém vai te obrigar a fazer diferente.
Mas existem alguns padrões que a comunidade adota na hora de desenvolver.
Por exemplo, se você não quiser criar getters nem setters para suas classes e deixar tudo publico, vai em frente. Mas se você precisar integrar essas classes em algum componente que adote os padrões básicos, não vai funcionar.
E tem o ponto mais importante: Quando você programa, você não escreve o código pra você, mas para os próximos que vão dar manutenção naquilo (que pode ser você mesmo daqui 4 anos). Se você escrever um bando de hieróglifos, nem mesmo você vai entender essa ***** daqui uns anos.
Código bom é código legível (para a maioria, não só pra você).
Obviamente, tem coisas que da pra otimizar do ponto de vista de performance, não só de "beleza", mas aí já é outra conversa.