這不是你想要的DRY
“ 不要重複自己 DRY”,每個開發者都在他職業生涯的早期就學會了這個口頭禪。
對這個原則的共同理解是你不應該複製你的程式碼。就那麼簡單。
不要複製,如果你發現重複就重構。
違反此規則的行為將被其他開發人員立即指出為侵犯軟體開發最基本的做法之一。
好吧,讓我說實話。這種方法完全錯誤。一個單一的,巨大的,不幸的錯誤解釋是讓許多開發人員的生活變得更加艱難。
讓我解釋一下原因。
你知道DRY原理的原始定義嗎?
The *original* DRY principle. And it's about knowledge, not code.
我們對知識管理和一致性有了很好的洞察力,但是將其轉化為編碼領域則變得無意義。
甚至維基百科在定義DRY方面也很危險。
正如通常所解釋的那樣,DRY透過將完全不相關的程式碼部分緊密耦合在一起來傷害程式碼庫。 令人驚訝的是它如何自然地引入了不必要的,偶然的複雜性。
共享核心或庫,不斷增長的工具庫(我們都有一個),繼承樹。所有這些都是為了避免編寫兩個相似的程式碼片段的非理性需求。
有一個應對的解決方案:
重複,重複,重複。
現在讓我告訴您為什麼預設情況下重複會為您的程式碼帶來相當大的優勢.
重複能拖延決策,這是軟體開發的黃金。
以後從多個專業化比從單個方法的抽象的重構要容易十倍。
我們的大腦在前一個方向上工作得更好,向後退需要創造性的努力和顯著的認知負擔,在最壞的情況下,是橫向思維。
預先應用DRY,您將構建領域中不存在的抽象。而你正在構建它,以便將部分功能組合在一起,這些功能在不同類之間看起來顯然是相同的。
您需要學會輕鬆地複製/貼上整個類,並且只更改其命名。
還是不相信?
不同名稱空間中的兩個相同類很有可能在未來很快發生分歧,即使它們看起來完全相同。
當您預期耦合時,您會錯過這種多樣化機會並削弱您的模型。
只有當複雜性變得難以管理或模型明確要求時,才應該對抽象進行重構。預防性地執行此操作只會損害您的程式碼並引入大量意外的複雜性。
這是一種思維方式的改變,需要時間。帶上你的,耐心等待。
相關文章
- 駁《我不是很懂 Node.js 社群的 DRY 文化》Node.js
- 你是不是這樣的程式猿?
- 你是不是這樣的程式猿
- 這應該是你們想要的 DOS 命令
- DRF類檢視讓你的程式碼DRY起來
- 不是吧!! ! jQuery選擇器,你要的都在這!!!jQuery
- 你的Oracle是不是這個時間發生的故障?Oracle
- 做IT這幾年,我整理了這些乾貨想要送給你!
- 手機主宰了你的生活,這不是賈伯斯想看到的
- 學會了這項技能,你就能獲得任何想要的資訊!
- 想要做好短影片,這些技巧讓你播放量翻倍
- 想要寫出好味道的程式碼,你需要養成這些好習慣!
- 你所以為的不是你以為的
- 《紅色警戒》重製版要來了,但這個可能不是你想要的那個“紅警”
- 想要學習Python課程,這些問題你必須知道!Python
- 智慧網路安全網路卡|這是不是你要的安全感
- 相信我!這絕不是你討厭的那個數學函式函式
- 想要為你的遊戲吸引大R,這樣的手遊投放思路才科學!遊戲
- 當發現BUG時,這反應絕了,你是不是這樣的程式設計師程式設計師
- 看完這些美食海報,你是不是又有靈感了?
- 餘生不是你
- 這才是你想要的RecyclerView的擴充套件庫View套件
- 這一千個Python庫,總有你想要的!Python
- 程式設計師想要月薪2W+?這些能力你有了嗎?程式設計師
- 碼教授告訴你學完這些月入過萬不是夢
- 你不是說你會Aop嗎?
- 晉升的為什麼不是你
- 你不是一個前端前端
- 想要成為一個合格的Java程式設計師, 你必須要做到這些!Java程式設計師
- 想要做UI設計師,這些產品思維你具備了嗎?UI
- 想要做好資料視覺化?你需要關注這三個問題!視覺化
- 你不啟用信用卡個人徵信就好了,真相不是你想的這樣!
- 也許這才是你想要的微前端方案前端
- [靈性程式設計]這想要那也想要的需求解決,2^ n次方列舉法程式設計
- 想要的古風女生頭像讓你快速get
- DRY原則的一個簡單實踐
- 數學不好真不是你的錯
- 這是一份非常全面的開源資料集,你,真的不想要嗎?