Показать сообщение отдельно
Старый 02.10.2021, 10:52   #45  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от axm2017 Посмотреть сообщение
При указании private обоснуй для окружающих почему ты уверен что метод не потребуется извне.

Internal используй если ты из MS и уже смирился с этим.
По-моему, если это внутренний код который никто снаружи не использует, то лучше все-таки по умолчанию private. Если кому-то надо будет поиспользовать - он сможет изменить модификатор на какой надо и это будет светиться на code review - "здесь сделан новый интерфейс, проверь, что все сделали правильно".

Если кто используется внешними потребителями у которых нет контрля над вашим кодом, надо понять модель обновления. Если вам не нужно соблюдать обратную совместимость, то можно делать как угодно - если вы что-то измените это будет проблема того, кто воспользовался вашим интерфейсом.

Если вы сделаете что-то protected, то надо рассматривать это как один из интерфейсов расширения. Если вы перекрываете метод с поведением в подклассе, то это как-правило нарушение LSP - обычно более логичная структура кода получается, если выделить абстрактный суперкласс и создать два наследника.

Официльные рекомендации для ISV - вот тут.

Последний раз редактировалось belugin; 02.10.2021 в 10:59.
За это сообщение автора поблагодарили: sukhanchik (6).