Skip to content

celis-labs/RBDiP-4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Приложение Todo - Отчет по анализу кода

Обзор проекта

Это простое консольное приложение для управления списком задач, которое позволяет пользователям:

  • Добавлять новые задачи
  • Отмечать задачи как выполненные
  • Удалять задачи
  • Просматривать все задачи

Проблемы качества кода

Текущая реализация имеет несколько проблем с дизайном и качеством кода:

1. Нарушение принципов SOLID

  • Принцип единственной ответственности (SRP): Класс TodoApp обрабатывает несколько ответственностей - пользовательский ввод, бизнес-логику, хранение данных и представление.
  • Принцип открытости/закрытости: Приложение не предназначено для расширения. Добавление функций требует изменения существующего кода.
  • Принцип подстановки Лисков: Нет иерархии наследования для оценки этого принципа.
  • Принцип разделения интерфейса: Интерфейсы не определены.
  • Принцип инверсии зависимостей: Класс имеет прямые зависимости от конкретных реализаций, а не от абстракций.

2. Плохой объектно-ориентированный дизайн

  • Использует процедурный стиль программирования со статическими методами и глобальными переменными.
  • Отсутствие правильного моделирования предметной области - задачи представлены в виде двух отдельных списков вместо полноценного класса Task.
  • Нет инкапсуляции - все переменные публичные и статические.

3. Проблемы кода

  • Нарушения принципа DRY (Don't Repeat Yourself): Значительное дублирование кода в методах completeTodo() и deleteTodo().
  • Обработка ошибок: Общий перехват исключений вместо обработки конкретных исключений.
  • Проблемы структуры данных: Использование параллельных списков (todos и completed) подвержено ошибкам и нарушает целостность данных.
  • Отсутствие разделения ответственности: Логика пользовательского интерфейса и бизнес-логика тесно связаны.

Возможности рефакторинга

Код можно улучшить следующим образом:

  1. Внедрение правильного ООП-дизайна:

    • Создание класса Task для инкапсуляции данных задачи
    • Разработка TaskManager для обработки бизнес-логики
    • Разработка слоя пользовательского интерфейса для взаимодействия с пользователем
  2. Применение принципов SOLID:

    • Разделение ответственности между разными классами
    • Определение интерфейсов для гибкости
    • Использование внедрения зависимостей
  3. Улучшение качества кода:

    • Устранение дублирования кода
    • Внедрение правильной обработки исключений
    • Добавление валидации и проверки ошибок

Заключение

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages