如何设计一个保持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并开始查看你创建的类,如果它符合这些原则就问自己。
模式? 被高估。 别担心他们。
- 在每个示例之后,factory_girl + rspec似乎没有回滚更改
- RSpec should_receive宏包含需要测试的内容的id
- Rspec没有在Linux中加载ControllerMacros模块(但在OS X上很好)
- 缺少必需的参数:aws_access_key_id,aws_secret_access_key
- 臭名昭着的AbstractController :: ActionNotFound – Devise + Rails
- rspec –init not working /`mkd ir’:参数无效 – ./C :( Errno :: EINVAL)
- 使用RSpec测试searchkick
- Rspec没有路线匹配
- 是否还需要使用Rails系统规范的DatabaseCleaner?