In Unity, when using C#, it is recommended to never use the ‘public’ prefix on fields at all.
Private fields should be private, obviously.
If you want to expose a field in the Inspector, use ‘[SerializeField] private’ as this won’t expose it to other scripts, just the inspector.
And if you want to open a field up to other scripts, use a public Property which you can control and sanitise to your heart’s content.