国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Rails的讓人不堪的噩夢

開發(fā) 后端
在Rails開發(fā)中,你會(huì)發(fā)現(xiàn)一個(gè)讓人不堪忍受的小秘密;在我的職業(yè)生涯中,我見過的最亂的、最棘手的、最臭的代碼,都是在Ruby on Rails項(xiàng)目里找到的。

本文是從 Your Code is My Hell 這篇文章翻譯而來。

我最近的作為一個(gè)Rails程序員的經(jīng)歷可能并不常見。

我經(jīng)常被叫去維護(hù)一些已經(jīng)做好的Ruby/Rails項(xiàng)目,在力所能及的地方進(jìn)行改進(jìn)和完善。這樣,絕大部分我需要接手的項(xiàng)目在我出現(xiàn)前都已經(jīng)開發(fā)完成了。事實(shí)上,在我的記憶里,我只參與了一個(gè)商業(yè)性質(zhì)的格林菲爾德Ruby項(xiàng)目的開發(fā)。其它的,在我看來,都是“歷史遺物“,相當(dāng)多的程序代碼在我之前都已經(jīng)出品了。(不包括個(gè)人和內(nèi)部項(xiàng)目)。

我知道,我的這種經(jīng)歷在Ruby和Rails程序員中并不常見。由于Ruby/Rails的高產(chǎn)和創(chuàng)業(yè)公司為主的用戶環(huán)境,大多數(shù)Ruby愛好者都是在這樣剛成立的公司里開發(fā)全新的項(xiàng)目。而我的工作更多的是基于最初的開發(fā)人員走后留下來的代碼。

Rails的讓人不堪的小秘密

在受雇寫Ruby程序之前,我也接手過一些歷史程序,它們有的歷史達(dá)數(shù)十年之久,代碼量數(shù)十萬行之多。你很容易在這么多代碼里找出寫的很爛的東西;有時(shí)候,這種爛代碼的數(shù)量多的讓人驚訝。

但是,在Rails開發(fā)中,你會(huì)發(fā)現(xiàn)一個(gè)讓人不堪忍受的小秘密;在我的職業(yè)生涯中,我見過的最亂的、最棘手的、最臭的代碼,都是在Ruby on Rails項(xiàng)目里找到的。我所見過的那些Rails項(xiàng)目,它們兩年下來積累的技術(shù)債務(wù)和廢棄物,跟一個(gè)10年之久的C/C++程序相比,會(huì)讓你覺得后者更干凈和優(yōu)雅。我說的并不是某個(gè)項(xiàng)目。我看到這種情況到處都是。

有時(shí)候我會(huì)想,這也顯示了這種語言的強(qiáng)大之處。如果在一個(gè)Rails應(yīng)用里有500個(gè)錯(cuò)誤,你可以不停的往里面添加代碼、再添加代碼、點(diǎn)擊“reload“,一直到它好用為止。從來都不需要寫測試或重構(gòu)代碼。在很多語言和框架里,這種”補(bǔ)到它不漏為止“的開發(fā)方式顯而易見是行不通的。但Ruby on Rails卻提供了讓你這樣做的平臺(tái)。

不幸的是,作為它的直接后果,眾多我要處理的項(xiàng)目都可以被看作是一種應(yīng)急產(chǎn)品。從某種角度來看,這種圖省事的做法的后果還是由開發(fā)團(tuán)隊(duì)來承擔(dān),你這樣做一天把它解決了,可引出的相關(guān)問題和不可預(yù)料的副作用,你花2周都解決不掉。

題外話:經(jīng)常的,最初的開發(fā)人員會(huì)在完成開發(fā)后轉(zhuǎn)移到新的項(xiàng)目上。同時(shí)會(huì)有新員工接手這些代碼。管理部門會(huì)抱怨,為什么這新接手的團(tuán)隊(duì)修改問題時(shí)沒有老團(tuán)隊(duì)迅速呢?而新團(tuán)隊(duì)遇到的問題是,在他們能給這些遺留的代碼上添加新功能前,他們需要讓這些代碼具有更高的測試覆蓋率,有可能還需要把它們分離成更小的模塊;在商業(yè)層面,一個(gè)永久不變的聲音是:測試和重構(gòu)就是拖延工期。看來這原創(chuàng)團(tuán)隊(duì)都是比較明智的。

好了,牢騷發(fā)完了。

Rails的情況更為特殊!

Rails程序員有時(shí)候會(huì)顯得很傲慢和固執(zhí)。我不清楚這個(gè)判斷的可信度;我并沒有看到太多的人是這樣,但也許我跟這個(gè)社區(qū)太接近了,也許我本身也是傲慢和固執(zhí)的。

而我發(fā)現(xiàn)的卻是一種“Rails例外主義“。還記得第一次互聯(lián)網(wǎng)繁榮的時(shí)期嗎,當(dāng)時(shí)有幾個(gè)經(jīng)濟(jì)學(xué)家跳出來說”不會(huì)的,這次不同,互聯(lián)網(wǎng)改變了游戲規(guī)則,市場會(huì)一直走高、走高“,本質(zhì)上我感覺很相似,有些人相信,Ruby on Rails開發(fā)是某種不同的東西,不需要跟其它類型的軟件項(xiàng)目一樣。

這有一些例子,讓你明白我究竟在說什么:

◆ “設(shè)計(jì)模式是Java上的東西。Ruby里只管寫你的代碼就是了。“

◆ “Ruby里拋出的警告都是無聊的,禁止掉就行了。“

◆ “的確沒有單元測試,而且對(duì)象隔離做起來很難,沒有人這樣做。“

◆ “到處打補(bǔ)丁對(duì)于其它語言來說是不贊成的,但Ruby沒問題。目前還沒有出現(xiàn)問題。”

◆ “像Demeter定律這樣的東西在Ruby里并不是這么重要。“

◆ “把方法分成私有和公有,這是變態(tài)控制,Ruby里不需要這樣做“

◆ “Java代碼里才會(huì)有代碼異味(code smell)。“

◆ “只有在大項(xiàng)目里才會(huì)有這樣的問題“(暗示這個(gè)項(xiàng)目永遠(yuǎn)不會(huì)變大)

我還看到了很多項(xiàng)目和子系統(tǒng)例外主義者:“我知道一個(gè)類不應(yīng)該搞的太大,但是對(duì)這個(gè)類是有意義的,它是為了把所有的東西放到一個(gè)地方“。

歡迎來到小人國

 

[[43751]]

 

事實(shí)上,Ruby on Rails項(xiàng)目確實(shí)有一點(diǎn)很例外:都是小項(xiàng)目。上周在James Gray在Lone Star Ruby Conf大會(huì)上有個(gè)極好主題,他提到的“巨型“項(xiàng)目有4萬多行代碼。這讓我微微一笑,因?yàn)槲冶还蛠碜龅念^兩個(gè)項(xiàng)目分別有5萬行和7萬行。這看起來不少,但根據(jù)行業(yè)標(biāo)準(zhǔn),它們很小。

造成這種現(xiàn)象的原因有不少。Ruby是一種比Java更富有表達(dá)性的語言,所以,從某種程度上說,Rails項(xiàng)目,在相同的情況下,總是比那些更講究的語言顯得更小。

而且,Rails程序員很喜歡接受把系統(tǒng)分割成很多很小的、相互聯(lián)系的小應(yīng)用。但是經(jīng)驗(yàn)告訴我們,這種策略是有問題的。

不,我想這導(dǎo)致Rails應(yīng)用體格較小的最大的原因是,顯而易見的:這個(gè)框架還很年輕。這個(gè)領(lǐng)域里有大量不成熟的產(chǎn)品。一個(gè)Rails應(yīng)用如果有3年的歷史,那就可以算是古老了。

我可以很有信心的說,這種情況不會(huì)一直持續(xù)下去。我們會(huì)看到越來越大的程序項(xiàng)目。我不需要鼓起勇氣就可以做下面的預(yù)言:很多項(xiàng)目將遭遇像Lisp, Smalltalk, C++, Java等語言曾經(jīng)遭遇過的相同的架構(gòu)瓶頸。

你并不特殊

《programming literature from the 80s》這個(gè)作品讀起來非常的有趣。動(dòng)態(tài),面向?qū)ο蟮南到y(tǒng)引導(dǎo)了從“小規(guī)模“到”中等規(guī)模“的過度。聽起來耳熟,是吧?

每一次的革命都會(huì)堅(jiān)稱這次是與眾不同的,不會(huì)造成上次革命后出現(xiàn)的政黨紛爭和官僚腐敗。起初你很容易被這些宣傳感染。每個(gè)人都很興奮,熱情的去幫助;這時(shí)出現(xiàn)的問題還比較小;然而這只是市場的大機(jī)器還沒有注意到這場運(yùn)動(dòng)。

事實(shí)上,你要解決的問題也許并不是你想像的那樣例外。你思想里的這種拜占庭模式只是遠(yuǎn)古時(shí)代那些使用跟Ruby類似語言的人留下來的遺產(chǎn)。

不要驚慌

放松。我這里要說的并不是告訴你過去的幾年只是一場可愛的夢,Ruby實(shí)際上一直處在它應(yīng)有的地位上。

Ruby仍然是一種奇妙的語言,它令人驚異的地方就是它在付出微小的約束代價(jià)下能輕松的接納大型系統(tǒng)的設(shè)計(jì)模式。注入依賴?兒戲。對(duì)象委托和組合?小菜一碟。跟你的錯(cuò)覺正好相反,Ruby并不拒絕嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì)模式和SOLID編程原則;Ruby能做到的事是讓它們更容易的表達(dá)出來。事實(shí)上,Ruby強(qiáng)大的富于表達(dá)的架構(gòu)風(fēng)格是讓很多人第一眼就喜歡上它的原因。

拜托:請(qǐng)?jiān)谀愀嬖V我Ruby和Rails不需要任何的約束之前,請(qǐng)跟那些仍然在維護(hù)你當(dāng)初開發(fā)的Rails應(yīng)用的兄弟們聊一聊。

原文:http://www.aqee.net/your-code-is-my-hell/

【編輯推薦】

  1. 谷歌宣布推出Dart編程新語言
  2. 2011下半年Web編程語言和腳本語言的就業(yè)趨勢
  3. 編程巨星成長的唯一秘訣
  4. 學(xué)習(xí)不同編程語言的重要性
  5. 每一門編程語言都是上輩子折翼的天使
責(zé)任編輯:陳貽新 來源: 外刊IT評(píng)論
相關(guān)推薦

2016-04-06 08:57:15

教材開發(fā)網(wǎng)站

2009-03-27 10:52:57

華為國際化爆笑

2009-08-14 09:19:15

Windows 7XP模式優(yōu)缺點(diǎn)

2013-06-20 09:38:57

2025-10-11 04:15:00

2013-10-30 10:47:53

手機(jī)預(yù)裝軟件手機(jī)用戶

2024-12-12 16:43:44

2022-05-24 10:19:15

網(wǎng)絡(luò)中斷網(wǎng)絡(luò)

2022-06-10 13:02:48

皮膚結(jié)構(gòu)機(jī)器人

2014-10-21 10:13:50

Android 5.0

2020-10-28 21:00:38

RailsMVC命令

2022-03-04 06:46:30

Python代碼

2015-08-25 08:55:14

優(yōu)秀代碼基因

2012-04-25 10:18:49

jQuery

2022-07-29 11:02:17

Web3NFT元宇宙

2021-03-26 06:36:50

安全軟件殺毒軟件免費(fèi)安全軟件

2016-03-31 16:50:54

2022-03-04 09:43:18

UDP日志TCP

2010-09-15 14:53:06

Python

2012-04-09 09:29:02

Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美日韩欧美一区二区| 精品影院一区二区久久久| www.99色| 久久999免费视频| 波多野结衣亚洲一区| 成人在线爆射| 日韩黄色片在线| 日韩在线观看免费网站| 91视频免费播放| 精品一区二区三区四区五区| 欧美v在线观看| 九九热在线精品视频| 国产精品毛片高清在线完整版| 黄色美女久久久| 午夜精彩视频| 99国产视频| 欧美一级生活片| 九九热在线视频观看这里只有精品| 色豆豆成人网| 熟妇人妻无乱码中文字幕真矢织江| 97国产精品久久| 五月婷婷综合在线| 欧美日韩1080p| 国产精品偷拍| 蜜臀av无码一区二区三区| 久久亚洲欧美日韩精品专区| 国产精品美女久久久久av爽李琼| 精品国产不卡| 欧美69xxxx| 成人在线观看毛片| 最近更新的2019中文字幕| 国产欧美日韩精品一区| 波多野结衣在线播放一区| av在线电影网| 午夜在线视频免费观看| 欧美精品在线看| 精品动漫一区二区三区| 日韩在线一二三区| 成人动漫视频在线观看| 樱桃视频免费看| 欧美激情论坛| 中文字幕亚洲激情| 亚洲激情自拍视频| 性久久久久久| 亚洲午夜国产成人| 在线看黄网站| 久久久一二三四| 国内精品美女av在线播放| 欧美日韩综合视频| 国产在线看一区| 日韩av中文字幕一区| a√在线中文网新版址在线| 日韩黄色片在线| 成人激情视频在线观看| 日韩成人av网址| 亚洲欧洲制服丝袜| 日韩精品免费专区| 香蕉大人久久国产成人av| 黄色在线视频观看网站| 日韩xxxx视频| 91精品久久久久久综合乱菊| 日韩精品中文字幕久久臀| 亚洲柠檬福利资源导航| 日韩av高清在线观看| 另类春色校园亚洲| 麻豆福利在线观看| 毛片中文在线观看| 宅男噜噜99国产精品观看免费| 欧美一级电影在线| 亚洲国产成人久久综合一区| 亚洲欧美日韩国产一区二区三区| 久久久人人人| 美日韩中文字幕| 擼擼色在线看观看免费| 啊灬啊灬啊灬啊灬高潮在线看| 四虎免费在线观看视频| 国产精品吴梦梦| 中文亚洲视频在线| 91国偷自产一区二区开放时间| 久久综合九色综合欧美98| 99国产精品私拍| av成人资源| 日韩精品极品| 久久国产精品高清一区二区三区| wwwxxx黄色片| 婷婷精品国产一区二区三区日韩 | 伊人久久国产| 亚洲综合图片| 白嫩少妇丰满一区二区| 日韩福利在线| 91日本在线视频| 欧美激情精品久久久久久黑人| 精品久久久久久亚洲综合网 | 久久理论片午夜琪琪电影网| 亚洲第一精品自拍| 91久久一区二区| 亚洲欧洲精品一区二区精品久久久 | 亚洲.欧美.日本.国产综合在线| 欧美在线一区二区视频| 在线视频欧美日韩精品| 91精品国产91久久久久久最新毛片 | 欧美交换配乱吟粗大25p| 99久久久久国产精品免费| 午夜精品久久久久久久久久久久 | 亚洲欧美999| 337p亚洲精品色噜噜噜| 一区二区激情视频| 国产亚洲成年网址在线观看| 国产精品系列在线播放| 日韩精品电影在线观看| 欧美涩涩视频| 成人羞羞视频在线看网址| 九九热hot精品视频在线播放 | 琪琪一区二区三区| 一本久道综合久久精品| 亚洲成人精选| 日本a口亚洲| 国产一区二区三区91| 国产亚洲成av人片在线观黄桃| 国产精品.xx视频.xxtv| 日韩影片中文字幕| 日本а中文在线天堂| 91在线超碰| 97在线超碰| av男人的天堂在线观看| 成人性生交大片免费看在线播放| 在线视频三区| 幼a在线观看| 免费的黄网站在线观看| 日韩毛片久久久| 成年人在线观看| 国产大片在线免费观看| 国内在线免费高清视频| 香蕉av一区| 黄色片免费在线| av国产在线观看| www视频在线看| 色女人在线视频| caoporn视频在线| 午夜激情在线播放| 欧洲亚洲两性| 巨胸喷奶水www久久久 | 欧美黄色一级片视频| 国产精品沙发午睡系列| 天天碰免费视频| 妞干网在线观看| 99热在线网站| 国产午夜视频在线观看| a级影片在线观看| 亚洲优女在线| 亚洲男人在线| 国产香蕉精品| 日韩精品看片| 亚洲视频一区| 日韩av不卡一区二区| 国产黄人亚洲片| 久久精品一区二区| 亚洲视频 欧洲视频| 午夜av区久久| 欧美一区二区三区小说| 亚洲精品自拍偷拍| 久久精品成人欧美大片| 欧美亚洲国产视频| 亚洲最大的网站| 免费看污久久久| 中文字幕色呦呦| 中文字幕第100页| 922tv免费观看在线| 国产三级视频在线| aa视频在线观看| 看亚洲a级一级毛片| 日韩免费高清| 日韩在线a电影| 久久亚洲私人国产精品va媚药| 尤物av一区二区| 7799精品视频| 精品国产一区久久久| 国产男人精品视频| 水蜜桃亚洲精品| caoporn超碰97| 青青草视频在线免费观看| 好久没做在线观看| 欧美成人精品一级| 午夜国产一区| 亚洲视频分类| 久久色在线观看| 99在线热播| 成人黄色av网址| 精品无人区乱码1区2区3区在线| 成人免费网站观看| 日韩国产高清视频在线| 丝袜美腿诱惑一区二区三区| 色女人综合av| 亚洲精品国久久99热| 精品女同一区二区三区在线观看| 国产精品视频在线播放| 久久精品亚洲一区二区| 91破解版在线看| 日韩激情视频在线播放| 精品视频91|