我正在使用Ruby on Rails 3.2.2。我想知道,如果下面的思想(從我previous question出生)是正確的:避免使用第三方寶石是否正確?
我傾向於不使用第三方寶石(至少當它是可能的,合理的),因爲他們可能在被拋棄任何時候。另外,如果Ruby on Rails框架發生變化,我可能不得不等待這些寶石更新,然後再將我的應用程序更新爲最新的RoR版本。
我正在使用Ruby on Rails 3.2.2。我想知道,如果下面的思想(從我previous question出生)是正確的:避免使用第三方寶石是否正確?
我傾向於不使用第三方寶石(至少當它是可能的,合理的),因爲他們可能在被拋棄任何時候。另外,如果Ruby on Rails框架發生變化,我可能不得不等待這些寶石更新,然後再將我的應用程序更新爲最新的RoR版本。
在一個完美的世界裏,你永生不朽,有無限的時間,是世界上最好的程序員,無論你在1小時或10年內推出你的產品,你都可以從頭開始編寫所有代碼,也許避免其他人的代碼更有意義。
但在現實世界中,人們已經爲您解決了問題。而寶石允許你插入這些解決方案。
一個很好的經驗法則是當你可以的時候更喜歡社區最喜歡的/流行的寶石。使用寶石的人越多,人們越有興趣保持它的更新,並且更多的眼球正在仔細檢查併發送請求。很有可能是在生產環境中由一羣人進行戰鬥測試的寶石比你第一次嘗試時提出的要好,對吧?
寶石依賴於一個業餘愛好者的維護者,甚至沒有在自我搔癢生產應用中使用它,你往往會發現一些風險。但即使在這種情況下,如果你最終不得不在某一天掏出寶石,那麼如果你從頭開始的話,你仍然處在你將要去的地方。
一個更好的趨勢是避免從零開始寫所有東西,而是利用其他有類似需求的人的大腦。
嗯,這是您爲了節省的開發時間/預算和更短的上市時間而換取的風險。
如果你發現自己處於一種遺棄寶石的狀況,那麼你可以看看類似的寶石或叉子,並改善它。無論哪種方式,它都比自己開發的所有東西還要好。
放棄這種理念!很多網站/公司都傾向於這樣做 - 在"Not invented here"綜合徵中更爲人所知。特別是,Twitter是一個big offender.開源很棒 - 使用它。
嘗試,例如,設計寶石,然後自己實現其功能。所以你可以定義你自己對問題的看法。
我更喜歡使用所有寶石,我發現它很有用。如果更新後任何gem不起作用,您可以隨時分叉並升級它。
只有當沒有東西可以添加到它,沒有東西被拿走時,一件作品才能完美地完成。 - 儒貝爾
這就是我們遵循我們的Rails在工作項目中的相同理念。如果你想爲Gemfile添加一個gem,你基本上必須爭論它。如果你找不到它應該在那裏的一個好理由,它就會被踢出去。我們絕對不是試圖重新發明車輪,但保留可能嚴重維護的可移動部件的數量是恕我直言,這是一個不錯的選擇。所以,對良好維護和建立的Rails插件說「是」,但要警惕那些看起來像是快速拋出的解決方案。更多的時候,你不是最終維護自己的補丁或分叉回購,所以你可能也重新設計了特定的輪子...
謝謝。 *注意*:「只有在沒有任何東西可以加入時才完成作品,沒有任何東西被拿走。」就像[米開朗基羅](http://en.wikipedia.org/wiki/David_(米開朗基羅))在[大衛]雕像中移除小塊大理石時所說的那樣(http://en.wikipedia.org/維基/ David_(米開朗基羅))。 *我認爲我們在編程方面也是藝術(我的意思是「原始的」希臘藝術概念)!* – user12882
不要因爲你提到的原因而依賴它們因爲他們需要被分派到服務器。但對於個人使用,我不明白爲什麼不。 – texasbruce