av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

不要為復(fù)用而設(shè)計(jì)

本文的作者Elliotte是一位著名的IT方面的作家,寫20多本關(guān)于編程方面的書(shū)籍,有很多書(shū)籍在國(guó)內(nèi)都有出版,其中包括《重構(gòu)HTML:改善Web應(yīng)用的設(shè)計(jì)》, 《Java I/O》, 《Java網(wǎng)絡(luò)編程》,《Xml Bible》和《XML in a Nutshell》等,目前他正在研究XML處理器XOM、jaxen XPath引擎和Amateur媒體播放器。

創(chuàng)新互聯(lián)基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺(tái)為眾多戶提供西部信息中心 四川大帶寬租用 成都機(jī)柜租用 成都服務(wù)器租用。

上周,一位同事的一個(gè)觀點(diǎn)讓我深受啟發(fā),這個(gè)觀點(diǎn)是如此的顯而易見(jiàn),以至于當(dāng)他說(shuō)出來(lái)時(shí)我驚奇于為什么以前沒(méi)有意識(shí)到這點(diǎn):

 如果你為復(fù)用而設(shè)計(jì),那你就做錯(cuò)了。

你現(xiàn)在要寫的代碼的唯一目的就是服務(wù)于你目前手頭上的需要解決的任務(wù)。不要為復(fù)用而設(shè)計(jì)。不要去考慮復(fù)用。不要為讓代碼復(fù)用而浪費(fèi)一秒鐘時(shí)間。

事實(shí)上,任何你需要的可以復(fù)用的代碼都已經(jīng)存在了。想要去連接一個(gè)HTTP Server,并且要全面支持安全認(rèn)證和cookies嗎?這個(gè)東西聽(tīng)起來(lái)很多項(xiàng)目都可以用到,于是,你想把這個(gè)東西封裝一下做成一個(gè)易用的HTTP類或共享包,很好的想法不是?錯(cuò)。你應(yīng)該使用 Apache HttpClient。

需要解決你的拋物線方法的初始值問(wèn)題嗎?不要去翻看你的《numerical analysis textbook》,你需要做的是下載Flanagan的Java科學(xué)計(jì)算庫(kù),或購(gòu)買一個(gè)NAG許可證。想要給你的同事們做一個(gè)日歷選擇組件嗎?直接告訴他們?nèi)ビ肑Calendar。盡管它在外觀和使用方法上和你想象的不是完全一致,但完全夠用。如果你打算做出自己的組件,或找一個(gè)現(xiàn)有的修改一下,你會(huì)發(fā)現(xiàn),你開(kāi)發(fā)出的這種不一樣的表現(xiàn)效果并不適合另外一些人的應(yīng)用,所以,不要浪費(fèi)時(shí)間去開(kāi)發(fā)自己的可復(fù)用的代碼。

這些例子都是針對(duì)Java來(lái)說(shuō)的,但對(duì)于另外一些主流的語(yǔ)言,比如Perl,Python,Ruby,C++,C#,Scala等,都是適用的。事實(shí)上,如果一種語(yǔ)言不能提供解決你的問(wèn)題的可復(fù)用的代碼,那你就是選錯(cuò)了解決你的問(wèn)題的語(yǔ)言。

有例外的情況嗎?我只能想出兩種(目前為止我感覺(jué)沒(méi)有第三種情況了)。

***種例外是你在開(kāi)發(fā)一種新的東西,你需要的類庫(kù)不存在,你是***個(gè)進(jìn)入這個(gè)領(lǐng)域的人,你需要寫出可復(fù)用的代碼。例如,當(dāng)我率先開(kāi)發(fā)出XIncluder類庫(kù)時(shí),XInclude的規(guī)范還處于制訂中,你在Java里找不到第二個(gè)可用的類庫(kù)。我寫的這個(gè)類庫(kù)成了規(guī)范的可實(shí)現(xiàn)的一種證明,推動(dòng)了規(guī)范向更完備的狀態(tài)發(fā)展。十年前開(kāi)發(fā)我自己的XInclude類庫(kù)是明智的,而今天絕對(duì)不會(huì)再重做這樣的事。

第二種例外情況是針對(duì)專家的,我甚至還不確定這是否是例外。如果你是某一個(gè)領(lǐng)域的真正專家,有可復(fù)用的代碼能解決你的領(lǐng)域的問(wèn)題,而你經(jīng)過(guò)認(rèn)真的研 究現(xiàn)有的解決方案,你認(rèn)為它們是不完善的,你在尋找一種更好的解決方法,這時(shí),而且只有這時(shí),你可以考慮寫出你自己可復(fù)用的代碼。這就是我為什么要開(kāi)發(fā)XOM的 原因。只是在我寫了數(shù)百頁(yè)的書(shū)稿,詳盡的收集了目前Java里處理XML的各種API,知道了它們的優(yōu)點(diǎn)和缺點(diǎn)后,我才覺(jué)得應(yīng)該坐下來(lái)設(shè)計(jì)一個(gè)API來(lái)改 進(jìn)它們。盡管我認(rèn)為我設(shè)計(jì)的API是***的API,但我仍然不確定把時(shí)間花在它上面是否值得。XOM,按我的觀點(diǎn),比之前的任何API都好,但它并不是好 到能夠在大量的其它項(xiàng)目中替代其它的類庫(kù)。對(duì)這個(gè)新API的需求不是真正的很大。

還有另外的例外嗎?還有另外的一種情況里你需要寫出可復(fù)用的代碼嗎?我想不出。有如此多的程序員花了如此多的時(shí)間來(lái)探索我們生活中存在的問(wèn)題,并把 他們的成果放在 Sourceforge 和 Github 這樣的網(wǎng)站上免費(fèi)分享。當(dāng)然,新的問(wèn)題會(huì)不斷的出現(xiàn),但對(duì)一些老的問(wèn)題,如果去再重新研究它們一遍,你并不能從中獲得多大的收益。下一次,如果你發(fā)現(xiàn)自己 在為復(fù)用而設(shè)計(jì),請(qǐng)住手,問(wèn)問(wèn)自己是否可以復(fù)用別人的代碼。

[英文原文:Don’t Design for Reuse ]


新聞名稱:不要為復(fù)用而設(shè)計(jì)
標(biāo)題URL:http://uogjgqi.cn/article/cojpshp.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流