Ruby => 猴子補丁(Monkey Patch)

ck100pro
ck100pro
Published in
2 min readFeb 7, 2020

猴子補丁(Monkey Patch)是一種程式設計技巧,可以用來在執行時動態的修改(擴充套件)類別或模組,我們可以通過新增 Monkey Patch 來修改並滿足自己需求。

看以下例子,我們可以直接在Array的個類別裡面增加方法。

在Array類別上增加monkey1方法

從輸出結果來看,我們藉由(Monkey Patch)這種技巧,在Array類別上增加了monkey1的個方法,也能正常輸出結果。

然後直接用陣列的方法呼叫

在上面的例子裡面我們增加了一個新的方法,那接下來我們直接修改Array類別裡面的方法,在下面的例子裡面,我們改寫 +方法。

修改+方法

再來我們直接呼叫+方法,從輸出結果來看+方法已經被改寫了~~

由以上的例子可以看到我們可以藉由Monkey Patch的方便性來達到擴充和修改的效果,但這樣子的方便性也會帶來麻煩。

1.用Monkey Patch直接改寫ruby上原始類別上的方法(String、Array之類 的),可能會造成預期的效果與原本的不一樣。

2.在團隊協作下,可能會出現新增或修改相同的Monkey Patch,會造成輸出 結果無法預測。

3.修改某個gem上面的方法,這可能直接導致整套系統上的某些功能壞掉。

所以在用的時候要注意,不然bug抓不完~

--

--