Is defining get/set methods for every field overkill?

Andrey Zherikov andrey.zherikov at gmail.com
Sat Nov 19 13:51:24 UTC 2022


On Saturday, 19 November 2022 at 10:17:19 UTC, []() {}() wrote:
> On Saturday, 19 November 2022 at 09:51:09 UTC, []() {}() wrote:
>> ...
>> no. in C# it breaks ABI. that is why its not acceptable in my 
>> team.
>>
>
> of course that's not the reason we don't use public member 
> variables in classes.
>
> the reason we don't use them, is because (1) we always 
> anticpiate change including the need to implement (and change) 
> business rules associated with the objects data (using 
> setter/getters), and (2) we always prioritise the stability of 
> the public interface of a class at the time of design.
>
> if neither of those are your concern, in production-level code, 
> I'd be really surprised (and shocked).

We don't use public members either in most cases - we use them in 
simple structs. We have teams that do care and prioritize 
stability of public interface because they ship their libraries 
to end-users. Other teams care much less because all their users 
are internal so they can fix whatever they break.

Regarding ABI compatibility: it's usually driven by what 
dependencies your software has. In your case (as far as I got) 
you ship .dll that is used by already deployed software so your 
library must be ABI compatible with it. In our case, our software 
has only system-level dependencies like C runtime, WinSocks so we 
don't have such a thing as ABI incompatibility between different 
parts of our software but we care about system-level ABI.


More information about the Digitalmars-d-learn mailing list