0

假设 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 和模式。我直接问的是这里的对象应该是什么来设计什么应该是模块(如果适用)等等。?以及如何衡量这里需要测试的内容和不需要测试的内容?在面向对象设计方面设计最合适的机制。

也请参考一些书籍或博客来学习这些面向对象的 ruby​​ 设计原则和实践。

4

1 回答 1

4

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

在我看来,你正遭受分析瘫痪的折磨。有太多的流行语在你的脑海里盘旋。

停止担心模式和什么不是。将问题分解成小块并开始编写一些代码。

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

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

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

以下是我看到的一些潜在对象:Student、Course、Roll。

以下是一些潜在的方法: Student 和 Course 的 CRUD 操作;设置成绩并将学生标记为不及格。

没那么复杂。思考“简单”并让某些东西发挥作用,然后对其进行改进。

更新:

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

如果这是我认为的家庭作业问题,我怀疑它会产生很大的不同。与其让我们猜测,不如您阅读 SOLID 并开始查看您创建的类,问问自己它是否符合这些原则。

模式?高估了。不要担心他们。

于 2011-11-27T14:27:16.957 回答