Семинар. Применение базовых техник улучшения кода

Применение техник «Выделение вычислений» и «Улучшение структуры действий» #

Формат проведения семинара #

Данное занятие будет проведено в формате семинара. На семинаре будут обсуждаться результаты применения техник функционального программирования к ранее реализованному императивному коду.

Первый этап: подготовка императивного приложения #

Код написан согласно объектно-ориентированной парадигме #

Вам необходимо разработать, доработать или выбрать свой предыдущий код, реализующий задачу согласно принципам классической объектно-ориентированной парадигме:

  1. Для описания сущностей реального мира используются объекты, пораждаемые классами. Для одной сущности реального мира используется ровно один объект в рамках системы.
  2. Объекты должны полностью управлять собственными данными, не допускается прямая модификация данных в чужих объектах.
  3. Допускается использование полиморфизма, наследования и обобщённого программирования.

Отсутствует завязка кода предметной области на фреймворк #

Данное приложение должно реализовывать командный интерфейс для доступа к данным. Допускается использование кода, работающего с графическим интерфейсом, в случае, если работа с данными классов предметной области целиком отделена от логики работы библиотек и требований различных фреймворков. При желании использования такого кода, его необходимо согласовать с преподавателем не позднее чем за неделю до сдачи.

Все данные находятся в оперативной памяти #

Приложение также не должно использовать системы хранения данных.

  • Должны отсутствовать запросы к базе данных во время работы приложения.
  • Вся обрабатываемая информация должна находится в оперативной памяти приложения.

Удаление мусора происходит автоматически #

Удобнее всего применять предложенные подходы к языкам программирования, ориентированных на запуск в средах с функцией автоматической сборки мусора. То есть данные подходы плохо применимы к системным языкам программирования с ручным управлением памятью (Си, C++).

Объём кода, удобный для внесения изменений #

Для работы рекомендуется выбирать код длиной не более десяти тысячи строк.

Потенциально для решения задач подходит код, написанный на первых курсах бакалавриата.

Сложность предметной области #

  • Предметная область должна содержать не менее трёх сложных сущностей.
  • Предметная область должна предоставлять не менее десятка сложных операций.

Пример ER-диаграммы для небольшой части описания предметной области, содержащей необходимое количество сущностей.

erDiagram Publisher { int id string name } Book { int id string isbn } Edition { int id book Book string series publisher Publisher date publishedOn } Library { int id string address } Librarian { int id string name } Reader { int id string name string libraryCard } Library }o--o{ Librarian : librarians Library }o--o{ Reader : readers Library }o--o{ Edition : bookCopies Reader ||--o{ Edition : takenBooks Book ||--o{ Edition : editions Edition ||--|| Publisher : publisher

Подготовка к семинару #

Для участия в семинаре необходимо подготовить выступление, в рамках которого рассмотреть процесс изменения исходного кода. Выступление должно описывать:

  1. Изначальное состояние исходного кода. В описание должно входить:
    • Описание назначение кода.
    • Описание изначальной связи данных друг с другом.
    • Описание изначальной связи методов друг с другом.
  2. Описание результата применения техник к коду. В описании должно быть:
    • Пример применения техник к ряду методов.
    • Изменение в структуре методов.

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

Подготовленный набор материалов: презентация и ссылка на репозиторий загружаются в качестве ответа на задание.

Проведение семинара #

Каждому слушателю курса необходимо представить свою работу и обсудить результаты других слушателей курса.

  • Каждый студент представляет свою работу в течение 5-10 минут.
  • После представления работы происходит обсуждение до 5 минут. Тематика обсуждения совпадает с темой курса.
  • Оценка за семинар включает в себя как качество доклада, так и качество вопросов и комментариев.

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su