Как разработать приложение с учетом принципов SOLID и шаблонов проектирования - PullRequest
0 голосов
/ 27 ноября 2011

Скажите, что приложение в ruby ​​при запуске имеет два режима: режим командной строки и режим файла

Когда задан параметр ruby ​​myprogram input.txt output.txt , оно генерирует вывод на основе некоторыхКоманды во входном файле.также, когда не предоставлено ни одного параметра, он предоставляет нам командную строку.со следующими командами.

create_class_with_capacity 40

create_student_with_marks Alex 70

create_student_with_marks Mathew 30

create_student_with_marks John 55

..

create_student_with_marks Sylvia 70 etc...


fail_student_roll_no 12

=> Student with roll number 12 #{student} failed


give_marks_to_roll_no 70 1

=>Student with roll number 1 Alex got 70 marks


find_all_students_with_marks 70

=> Alex, Peter , Russell , Mark etc...

Как спроектировать такое приложение, сохраняя в уме RSpec, TDD, Cucumber, SOLID и Patterns.То, что я прямо спрашиваю, это то, что здесь должны быть объекты, чтобы спроектировать, каким должен быть модуль, если это применимо и т. Д.?и как оценить, что нужно тестировать здесь, а что нет?Разработка наиболее подходящего механизма с точки зрения объектно-ориентированного проектирования.

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

1 Ответ

4 голосов
/ 27 ноября 2011

Вы говорите, что должны написать это приложение? Это домашнее задание?

Похоже, вы страдаете от паралича анализа. В вашей голове слишком много модных слов.

Хватит беспокоиться о шаблонах, а что нет. Разложите проблему на части и начните писать код.

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

Что должно быть проверено? Весь код, который вы думаете, может сломаться.

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

Вот некоторые потенциальные объекты, которые я вижу: студент, курс, ролл.

Вот несколько потенциальных методов: операции CRUD для Студента и Курса; установка оценок и маркировка ученика как неудачного.

Это не так сложно. Думайте «просто» и заставляйте что-то работать, затем улучшайте это.

UPDATE:

Было бы легче ответить вам, если бы вы могли описать, что вы сделали.

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

Patterns? Overrated. Не беспокойся о них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...