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

时间:2011-11-27 14:19:59

标签: ruby design-patterns rspec cucumber solid-principles

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

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

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

这并不复杂。认为“简单”并使某些工作正常,然后进行改进。

更新:

如果你可以描述你的所作所为,那么回答你会更容易。

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

模式?被高估。别担心。