說在紅寶石啓動時的應用程序有兩種模式:命令行模式和FILEMODE如何設計應用程序保持SOLID原則和設計模式記
當給出一個參數紅寶石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,黃瓜,固體和模式的頭腦。 我直接問什麼是什麼應該是對象來設計什麼應該是一個模塊,如果適用等..?以及如何評估這裏需要測試什麼以及哪些不是?從面向對象的設計角度設計最合適的機制。
另請參閱一些書籍或博客來學習這些面向對象的設計原則和Ruby實踐。
我已經編寫了這個應用程序,但可能它在設計原則上並不正確,我只是想找一些線索來說明如何在更多的OOP時尚設計和遵循固體原則和編寫測試中進行設計。評估測試什麼,測試什麼以及測試哪些模式是非常困難的。什麼是對象,什麼是單身等... – pankajdoharey
不,這是在預先就業面試問題集中詢問的問題。 UPDATE:確定我所做的就是,在運行時我發現ARGV是否提供或沒有,然後我做了一個模塊,該模塊有一個需要被實現爲方法的所有命令說: create_class_with_capacity 40 這是一個以學生爲參數的方法, 當處於交互模式時,我評估給定給REPL循環的輸入,在文件模式下,我讀取數組中的所有命令並單獨評估命令。 – pankajdoharey
在任何情況下,模塊都被稱爲交互式和文件模式兩個類別。因此所有命令都成爲了給定場景的實例方法。另外每個學生都是散列內部的開放結構。 Struct被選爲方便之類,如**@student.marks,@ student.status,@ student.subjects **等...... – pankajdoharey