免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
一個(gè).NET程序員為什么學(xué)習(xí)Ruby on Rails?(轉(zhuǎn) InfoQ)

一個(gè).NET程序員為什么學(xué)習(xí)Ruby on Rails?

作者 Stephen Chu譯者 戴強(qiáng)斌 發(fā)布于 2007年5月16日 下午9時(shí)30分

社區(qū)
.NET,
Ruby
主題
動(dòng)態(tài)語(yǔ)言,
變更,
.NET框架,
Ruby on Rails

你是一位資深的.NET程序員,而且已經(jīng)用ASP.NET構(gòu)建過(guò)許多Web應(yīng)用。

無(wú)數(shù)個(gè)不眠之夜,為了讓ASP.NET控件生命周期中的事件驅(qū)動(dòng)模型按你想要的方式執(zhí)行,你費(fèi)盡心血,深入細(xì)節(jié)。

你精通于使用諸如Presentation Model、Model View Presenter這類設(shè)計(jì)模式對(duì)你的應(yīng)用進(jìn)行分層,以使其更易測(cè)試和維護(hù)。

你認(rèn)為Ruby on Rails只不過(guò)是眾多被吹噓的技術(shù)中的一員。在它還沒(méi)有獲得可觀的市場(chǎng)份額之前,你不會(huì)給予它過(guò)多的關(guān)注。

歡迎來(lái)到我的世界。如果你還在讀這篇文章,我向你致敬。對(duì)于我下面的說(shuō)法,你可能會(huì)充滿了好奇。為什么我——一名資深的.NET程序員,在經(jīng)歷了一個(gè)月的Ruby on Rails學(xué)習(xí)后會(huì)認(rèn)為:只有在我了解了Ruby on Rails之后,才能以較少的時(shí)間和編碼完成以前開(kāi)發(fā)過(guò)的許多應(yīng)用?

老實(shí)說(shuō),我仍然認(rèn)為.NET很棒。它為我提供了一個(gè)平臺(tái),能讓我向客戶源源不斷地提供巨大的商業(yè)價(jià)值。但我時(shí)刻提醒自己:一個(gè)簡(jiǎn)單的問(wèn)題,有大量不同的方法和技術(shù)可以解決它,并且總有一些比其它更好。衷情于某種技術(shù),必然會(huì)產(chǎn)生一些無(wú)意識(shí)的偏見(jiàn),這最終會(huì)阻礙我為客戶提供商業(yè)價(jià)值的能力。例如,對(duì)像Ruby這樣的動(dòng)態(tài)腳本語(yǔ)言的了解,使我以為:與使用編譯型的語(yǔ)言相比,我可以花費(fèi)更少的時(shí)間去編寫(xiě)簡(jiǎn)單的自動(dòng)處理的Batch/Shell腳本。

為什么不呢?

下面這幾件事,是我(一個(gè).NET程序員)學(xué)習(xí)Ruby時(shí),發(fā)現(xiàn)的一些典型的不同。希望你能喜歡。

不需要編譯

Ruby中沒(méi)有編譯的概念。一切都在運(yùn)行時(shí)發(fā)生作用。有人認(rèn)為代碼編譯可以防止編碼時(shí)的粗心。那么,你可能應(yīng)該去看一下測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是怎么工作的,連續(xù)的代碼集成(當(dāng)然了,不是每天都要構(gòu)建),單元測(cè)試(不涉及數(shù)據(jù)庫(kù)和web服務(wù)的測(cè)試)和依賴注入可以幫助你生成質(zhì)量良好的代碼,使你能夠充滿自信的靈活的改變你的代碼。編譯的保障作用一下子變的不那么重要了。

動(dòng)態(tài)增加類的行為——不使用Decorator模式

在靜態(tài)類型語(yǔ)言中,要想動(dòng)態(tài)增加類的行為,我們可以使用Decorator模式或者模板方法。而在Ruby中,有更多的方法可以在不復(fù)雜化對(duì)象設(shè)計(jì)結(jié)構(gòu)的情況下,很簡(jiǎn)單地做到這一點(diǎn)。這只是因?yàn)檎Z(yǔ)言本身對(duì)它的支持,例如:將模塊作為minxin使用,使用class_eval, instance_eval方法等。事實(shí)上,甚至可以通過(guò)編程方式在運(yùn)行時(shí)定義類的方法。在靜態(tài)類型語(yǔ)言中,也可以通過(guò)代碼生成來(lái)完成它。但了解更多的方法,可以讓你向一個(gè)優(yōu)秀的問(wèn)題解決者邁進(jìn)一步。

譯者注:mixin在面向?qū)ο缶幊陶Z(yǔ)言中是一種提供某些功能給子類繼承的類,但mixin并不能實(shí)例化。從某個(gè)mixin繼承并不是什么特殊的形式,而它更適于收集功能。某個(gè)子類甚至可以通過(guò)繼承一個(gè)或者多個(gè)mixin選擇繼承它的全部或者多數(shù)功能。一個(gè)mixin能延期到運(yùn)行時(shí)定義和綁定方法,而屬性和實(shí)例參數(shù)也可在編譯時(shí)才被定義。這不同于我們常見(jiàn)的方式,比如先定義所有的屬性、方法,并在編譯時(shí)進(jìn)行初始化等。)

通過(guò)去除所有的類型聲明和接口聲明,將代碼庫(kù)“瘦身”10-20%

Ruby是一門動(dòng)態(tài)類型語(yǔ)言。你不需要在使用變量之前聲明它的類型,或者為方法簽名中的參數(shù)定義合適的類型。這意味著你的代碼會(huì)變得更“瘦”,但這是以代碼難于調(diào)試和難于進(jìn)行錯(cuò)誤跟蹤為代價(jià)的,對(duì)嗎?并非如此,如果你相信單元測(cè)試和良好的面向?qū)ο笤O(shè)計(jì)的概念。如果你的類小而緊湊,類的方法短而精良,并且經(jīng)過(guò)了很好的單元測(cè)試,那么調(diào)試和錯(cuò)誤跟蹤將會(huì)很簡(jiǎn)單。

及時(shí)Ajax化

Ruby on Rails內(nèi)置對(duì)script.aculo.us庫(kù)的支持(script.aculo.us是一個(gè)Ajax類庫(kù),里面包含了大量炫目的Ajax效果,使用這些效果,可以讓你的應(yīng)用更具有交互友好性)。在許多情況下,這相當(dāng)于在ASP.NET中將一個(gè)控件標(biāo)簽拖到html頁(yè)面上,然后在別的地方(在Rails中,這個(gè)地方是控制器)為其編寫(xiě)方法以處理Ajax在服務(wù)器端的Web請(qǐng)求。你的Web頁(yè)面支持Ajax功能,就像Google Suggest的autocomplete或者拖拉排序那樣。就這么簡(jiǎn)單。

使用Rails,不需要專門的O/R映射

使用命名慣例對(duì)數(shù)據(jù)庫(kù)的表和列以及你的領(lǐng)域模型對(duì)象命名,可以讓你忘記親自進(jìn)行O/R映射的痛苦。Ruby on Rails會(huì)為你實(shí)現(xiàn)這一切。在最簡(jiǎn)單的情況下,在視圖上增加一個(gè)字段并對(duì)它進(jìn)行持久化,你只需要在html中增加一個(gè)文本框并在相應(yīng)的數(shù)據(jù)庫(kù)表中增加一個(gè)新列,然后你就可以看到,新輸入的文字被存儲(chǔ)在了數(shù)據(jù)庫(kù)新建的列中。真的,就這么簡(jiǎn)單。

用Ruby腳本構(gòu)建、部署或發(fā)布應(yīng)用,比使用NAnt更好。

Rake是Ruby on Rails開(kāi)發(fā)中使用的標(biāo)準(zhǔn)構(gòu)建工具。Rake使用Ruby語(yǔ)法,這意味著在構(gòu)建和部署不同的應(yīng)用時(shí),你需要使用Ruby去編寫(xiě)你的構(gòu)建腳本。作為一門語(yǔ)言,Ruby在以下幾個(gè)方面尤為出色:處理字符串,文件和目錄的創(chuàng)建,高級(jí)的正則表達(dá)式支持。想一下,有多少次,你需要在批處理和NAnt腳本中執(zhí)行以下的操作:把服務(wù)器A上a目錄下所有以.sql為擴(kuò)展名的文件拷貝到服務(wù)器B,然后依次執(zhí)行這些文件。如果你討厭批處理腳本在編程方面的限制,或者不喜歡以NAnt中那樣的xml格式去編寫(xiě)腳本,你會(huì)喜歡Rake的。

不勞無(wú)獲

學(xué)習(xí)Ruby的時(shí)候,我必須克服許多障礙。首先,我不得不接受這樣的事實(shí):與正在使用的“舒適”的技術(shù)相比,尋找Ruby的解決方案,要花去我更多的時(shí)間。但是,用不了多久,你就會(huì)感到喜悅,因?yàn)槟憧梢杂么罅康姆绞浇鉀Q不同的問(wèn)題。其次,學(xué)習(xí)Ruby/Rails讓我受益非淺,通過(guò)學(xué)以致用,加深了對(duì)知識(shí)的理解。記住,對(duì)于你曾耗費(fèi)時(shí)間學(xué)過(guò)的東西,要么使用它,要么任其消逝。

查看英文原文:Why Would a .NET Programmer Learn Ruby on Rails?
作者簡(jiǎn)介:Stephen Chu 是ThoughtWorks的軟件開(kāi)發(fā)顧問(wèn),同時(shí)也是一位經(jīng)驗(yàn)豐富的.NET開(kāi)發(fā)人員,最近關(guān)注于Ruby on Rails。您可以通過(guò)他的博客閱讀他每天的新看法。

譯者簡(jiǎn)介:戴強(qiáng)斌,擁有三年的Web開(kāi)發(fā)經(jīng)驗(yàn),武漢大學(xué)Google Camp技術(shù)團(tuán)隊(duì)成員,目前關(guān)注垂直搜索引擎領(lǐng)域的應(yīng)用發(fā)展。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
幾種主流網(wǎng)頁(yè)開(kāi)發(fā)語(yǔ)言的思考
學(xué)什么編程語(yǔ)言比較好?
ruby on rails為什么暫時(shí)無(wú)法成為企業(yè)應(yīng)用開(kāi)發(fā)的主流?
程序員看好!這五大編程語(yǔ)言最應(yīng)該學(xué)
程序員:代碼是從頭編還是用框架好呢?
Sawin軟件研發(fā)之窗:主動(dòng)程序員與被動(dòng)程序員
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服