Переформулировка бонуса-2 в Практической ДЗ-2 (fall-2025) #189
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
По предложению @AlbinaBurlova вношу свою версию формулировки бонуса на рефакторинг предложенной мини-архитектуры кода в практическом ДЗ-2.
Основные отличия:
Исходная формулировка предлагает рефакторинг с сохранением обратной совместимости в использовании того же объекта. В реальных проектах я с этим решением скорее согласен (хотя можно и просто переписать всё в новых классах и навесить Facade для легаси), но в случае с учебной задачей - нет.
Необходимость держаться за старые интерфейсы очевидна только после некоторого опыта разработки (а также пары решений отрефакторить всю кодовую базу и претерпевания последствий этих решений), студенты без такого опыта не поймут, почему и зачем предлагается дописывать нормальный код туда, где написано плохо, и почему мы не чиним причину нарушения SOLID -- интерфейсы.
Напротив, после рефакторинга интерфейсов им придется перекроить под него тесты, и они осознают обратную совместимость как вторую сторону вопроса о рефакторинге.
Добавлено требование об указании типизации во всех сигнатурах - потому что это одна из проблем, которы есть в текущей имплементации (из-за чего, в частности, можно только в конце обнаружить, что оптимизаторы должны получать только численные градиенты).
Сделан акцент на реализацию регуляризации через инъекцию функций потерь для всех возможных функций без дублирования кода. В качестве проверки на адеватность архитектуры добавлено требование реализовать регуляризацию Elastic-Net.
Удалено требование к функционированию замены лосса - из всего, что мне известно, менять лосс динамически на полпути нигде не требуется, поэтому затачивать архитектуру под это мне кажется не соответствующим логике домена.
Соответствующий этим правилам рефакторинг шаблона для следующего потока закину в соседнем пулл-реквесте.