我正在開發一個ruby項目,我們正在計劃使用ruby字符串進行一些操作。一些操作很簡單(比如計算單詞的數量),另外一些操作更復雜(比如檢查給定的字符串是否使用正確的語言)。猴子修補基礎ruby課是一個不好的做法嗎?
實現這種可能的方式是通過修補String
類額外的方法,,而無需修改任何現有的方法,並添加行爲,如"some string".word_count
和"some string".cjk?
。
基於FileUtils
的另一種方法是創建一個充滿方法的類或模塊,並始終使用字符串作爲參數,如OddClassName.word_count("some string")
和OddClassName.cjk?("some string")
。我們喜歡第一個更好,因爲可讀性。
據我所知,修補第一個選項中描述的基本類的猴子可能會有名稱衝突。但是,如果這是主要的應用程序,而不是圖書館,我應該擔心它嗎?
所以,問題是:
- 是添加方法與紅寶石基類一種不好的做法?如果是,那麼在所有情況下還是僅在某些情況下?
- 完成此操作的最佳方法是什麼?
- 什麼可能是'OddClassName'的名稱?
請提出任何替代方案。
您使用的是哪個版本的Ruby?我相信2中有一些不同的猴子修補選項。0 – 2013-04-30 18:39:35
@CharlesCaldwell我使用的是1.9,但如果它適合,也可以隨意在答案中加上2.0。 – fotanus 2013-04-30 18:42:25
您不需要使用標題標記問題中的部分。 StackOverflow的外觀更加交談式,不太正式。刪除標題和您的問題將流動非常好。不過,一定要將諸如「Ruby」之類的名稱用於大寫。 – 2013-04-30 19:12:30