Code design: exposing fields or properties?