如何设计一个保持SOLID原则和设计模式的应用程序

在启动时说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,黄瓜,SOLID和模式的心态。 我直接问的是,如果适用的话,这里的对象应该设计什么模块等等? 以及如何衡量这里需要测试的内容以及不需要测试的内容? 在面向对象设计方面设计最合适的机制。

另请参阅一些书籍或博客,以了解这些面向对象的ruby设计原则和实践。

你是说你必须写这个应用程序? 这是家庭作业吗?

听起来像是因为你患有分析瘫痪。 你头脑中有太多的流行语。

不要担心模式,什么不是。 将问题分解成碎片并开始编写一些代码。

我提出的一个建议是保持I / O不在课堂上。 将所有与基类中的用户交互无关的逻辑放在一起。 这样,如果要求您创建基于Web的UI来替换文本版本,它们仍然可以工作。

需要测试什么? 您认为可能会破坏的所有代码。

面向对象设计最合适的方法? 做一件显而易见的事:名词是问题陈述中的潜在对象,动词是潜在的方法。

以下是我看到的一些潜在对象:学生,课程,滚动。

以下是一些可能的方法:学生和课程的CRUD操作; 设置成绩并将学生标记为失败。

这并不复杂。 认为“简单”并使某些东西起作用,然后改进它。

更新:

如果你可以描述你做了什么,那么回答你会更容易。

如果这是我认为的家庭作业问题,我怀疑它会有很大的不同。 而不是让我们猜测,为什么你不读SOLID并开始查看你创建的类,如果它符合这些原则就问自己。

模式? 被高估。 别担心他们。