Re: [問題] Ruby 與 Interface Oriented Design
※ 引述《yzugsr (Bird)》之銘言:
: 一點淺見 請指教
: 在ruby裡, interface的觀念應該直接用duck typing的觀念實作
: ==別挑我語法錯, 下面都是pesudo code==
怕新手誤會,所以我還是點一下語法和用法的錯誤… XD
: Ruby:
: class Dog
: def move, puts "Dogs walk"; end; end
def move; puts "Dogs walk"; end; end
: class Bird
: def move, puts "Birds fly"; end; end
def move; puts "Birds fly"; end; end
: interface呢....以上我講完等於沒講一樣
: 所以老師說 ruby一定要寫test case (丟筆)
: (其實是這句書上說的....)
: 在test case裡確認你認為每個是animal的class, 都implement了animal該有的method
: 這樣做等於你把interface定義在test case裡, 修改程式後記得跑test確認他是對的
yes, 差不多就是這個概念
static typing 的做法是把 spec 寫在你的核心程式中
duck typing 的做法則是把 spec 寫在 test case 裡
這也是一種 test driven 的做法
: class TC_Bird < Test::Unit::TestCase
: test_acts_as_animal(Bird)
: end
剛剛試了一下,TestCase 好像不能這樣用
一定要 def test開頭的methd; end
: module AnimalTestHelper
: def test_acts_as_animal(the_class)
: obj = the_class.new
: obj.move
: end
: end
把上面這個拉到 TC_Bird 的上面,然後 TC_Bird 改寫成:
class TC_Bird < Test::Unit::TestCase
include AnimalTestHelper
def test_01
test_acts_as_animal Bird
test_acts_as_animal Dog
end
end
: class Test::Unit::TestCase, include AnimalTestHelper; end
不要這樣做,太暴力了… XD
, 也該改成 ; 否則語法錯誤
--
#!/usr/bin/ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》
# if a dog nailed extra legs that http://www.ptt.cc/bbs/Ruby/index.html
# walks like an octopus, and Welcome ~Ruby@ptt~
# talks like an octopus, then ◢█◣ http://www.ruby-lang.org/
# we are happy to treat it as █ http://www.ruby-doc.org/
# if it were an octopus. ◥ ◤ http://www.rubyforge.org/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推
02/14 17:12, , 1F
02/14 17:12, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 9 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章