偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

取巧圖便背后臃腫的代價(jià) 討厭的剪切粘貼

開(kāi)發(fā) 項(xiàng)目管理
一個(gè)原先非常整潔的程序,在不斷的維護(hù)后,你就會(huì)發(fā)現(xiàn)到處都是一些相同的模塊構(gòu)成,程序變得越來(lái)越臃腫了。到底是什么原因?qū)е逻@種情況的呢?那就請(qǐng)您仔細(xì)閱讀下文。
讀者反饋

我是在譴責(zé)集成開(kāi)發(fā)環(huán)境。

在過(guò)去而言,編程是一件很困難的事情。不是因?yàn)榫幊瘫旧砭瓦^(guò)于困難,主要是因?yàn)榫庉嬈魈珷€。很多在 70 和 80 年代遭人嫌棄的編輯器都沒(méi)有流傳至今(除了少數(shù)非常幸運(yùn)的,以及那些很有可能用過(guò) DEC 和 WANG 工具的編輯器)。我在打卡時(shí)代末開(kāi)始從事編程工作。以前用打孔來(lái)寫(xiě)程序非常搞笑。曾幾何時(shí),如果你掉了一塊用在分類(lèi)機(jī)上的甲板,也會(huì)鬧出很多笑話(好吧,也許兩次,無(wú)一例外,分類(lèi)機(jī)每使用三次就會(huì)堵塞一次,場(chǎng)面相當(dāng)混亂)。我曾經(jīng)工作過(guò)的銀行在 1986 年還在使用那種分類(lèi)機(jī)。

(如果你想看看順序排列< source.cbl >的等同于穿孔卡的分類(lèi)結(jié)果,mv 將看起來(lái)很有歷史的 source.cbl 分離了出來(lái),Youtube 上有一個(gè)不錯(cuò)的視頻。)

幸運(yùn)的是,電傳打字機(jī)取代了穿孔打卡系統(tǒng)。接著它走上了 Mastodont 的道路(人們覺(jué)得他們都一樣重要),不過(guò)最初的基于終端的通用型電腦監(jiān)控器并未比玻璃制品的電傳打字機(jī)好用?!就O聛?lái)以稍作調(diào)整】

關(guān)注一下各種文檔的不同功能(假設(shè)文檔具有語(yǔ)言選擇功能,但你不能認(rèn)為文檔理應(yīng)具備),這些功能需要有直觀的印象或者是非常嚴(yán)格的命令。否則你得花上一整天的時(shí)間去找‘那項(xiàng)功能’或者‘那個(gè)變量聲明’。重新編寫(xiě)一塊代碼,代碼塊要求一行一行的重新輸入。這樣麻煩透了,所以你最好盡可能地避免。

有一些可以讓你不用重寫(xiě)大量代碼的方法:

▲在寫(xiě)代碼之前先花很長(zhǎng)一段時(shí)間思考程序,這樣就不用頻繁地改動(dòng)

▲確信在整個(gè)程序中一次就把代碼寫(xiě)好

▲盡可能多地將你的代碼提煉到你的重用代碼庫(kù)中

探測(cè)性編程代價(jià)巨大

后來(lái)全屏式的編輯器出現(xiàn)了。相對(duì)于行式編輯器,這種編輯器無(wú)以倫比。真的。如果你不相信的話可以花一兩天去試試’edlin’。到時(shí)候我們就會(huì)知道你是多么的愛(ài)不釋手。至此,你就會(huì)知道,在頭二十年的計(jì)算機(jī)操作中,所有的軟件編碼一點(diǎn)都不容易。

之后,你每天也要受 Irons 和 Djorup 他們二位的罪,每天兩次。(伯樂(lè)在線注:Edgar T. Irons 和 Franz M. Djorup 兩人開(kāi)發(fā)過(guò)一個(gè)全屏式的編輯器:O26。)

我工作用的第一個(gè)編輯器不錯(cuò),可以快速移動(dòng)文本,擁有區(qū)塊標(biāo)記,復(fù)制,移動(dòng)和刪除等功能,是我集成在 6809 微型計(jì)算機(jī)上的編輯器。有些設(shè)計(jì)計(jì)算機(jī)設(shè)計(jì)工具的事情確實(shí)很煩人,這就是:工具綁定。無(wú)論你正做(build)什么工具,你都需要另外一個(gè)工具。為了寫(xiě)一個(gè)匯編程序,你需要一個(gè)編輯器和匯編程序,而且為了寫(xiě)一個(gè)編輯器,你需要第三方編輯器和匯編程序(或者編譯器)。如果沒(méi)有借助第三方編輯器來(lái)編寫(xiě)你自己的編輯器是很棘手的事情。

當(dāng)編輯器做好之后,第三方編輯器雖然不完善但也還能使用。我將它命名為‘e’(我真的不喜歡鍵入長(zhǎng)命令的名字,‘e’以及它的后續(xù)版本在 2000 年早期的時(shí)候作為我主要的 go-to 文本編輯器,用起來(lái)還不錯(cuò),它擺脫了處于 vi 和 emacs 中間的地位。它已經(jīng)退休了,現(xiàn)在版本控制系統(tǒng)庫(kù)中安享晚年)。

[[54861]]

在幾年之內(nèi),“編輯→編譯→測(cè)試”或者“編輯→匯編→測(cè)試 ”循環(huán)從幾個(gè)小時(shí)縮短到幾秒鐘,就像以前社會(huì)勞動(dòng)生產(chǎn)力得到了最大限度地提升一樣。

曾經(jīng)我能夠進(jìn)行模塊復(fù)制,我注意到我的程序會(huì)瞬間很快變得很長(zhǎng),變成在一瞬之間從幾千行擴(kuò)展至1萬(wàn)多行的龐然大物。在變成有效的模塊之前,這個(gè)龐然大物好像在短短的時(shí)間之內(nèi)做了太多太多的事情。

在我可能將通用的行為抽象為一個(gè)函數(shù),或者增加一個(gè)參數(shù),設(shè)計(jì)若干可以調(diào)用一個(gè)已有功能的宏命令之前,一字一句地重復(fù)鍵入若干行代碼的代價(jià)精簡(jiǎn)為三個(gè)按鍵就可以很快完成復(fù)制,這看起來(lái)是一個(gè)非常好的主意,我并沒(méi)用花費(fèi)太多時(shí)間就認(rèn)識(shí)到了。

在我發(fā)現(xiàn)這個(gè)隱藏的壞習(xí)慣之前,我已經(jīng)編寫(xiě)了很多代碼。也許這個(gè)事實(shí)對(duì)我真的有所幫助。所以很自然地,我沒(méi)用那樣做,這是一個(gè)讓我們很容易上當(dāng)?shù)南葳?,誘惑無(wú)處不在。這僅僅是一段代碼,對(duì)嗎?我碰巧遇到了,也許你也會(huì)碰巧遇到。剪切粘貼,那時(shí)候看上去是多么好的一個(gè)構(gòu)想啊。

不過(guò)就像任何靈敏的工具一樣,它有剪切的能力,就像你砍木頭一樣,所以你得小心運(yùn)用。

隨意使用剪切粘貼工具的代價(jià)可以用臃腫來(lái)形容,如此的臃腫把最簡(jiǎn)單的程序變成了一大串解釋不通的語(yǔ)句,其中夾雜了許多的功能和僅僅在細(xì)枝末節(jié)上有所差別的部分代碼。前段時(shí)間,我參與了一個(gè)項(xiàng)目,這個(gè)項(xiàng)目是用一種我在這篇博文中沒(méi)有提到的語(yǔ)言(Java)編寫(xiě)的,而且該項(xiàng)目在“linecount部門(mén)”這一功能上有一些嚴(yán)重的問(wèn)題。之前有個(gè)程序員一怒之下辭職離開(kāi),領(lǐng)導(dǎo)要求我接手,為代碼增加一些特性。這個(gè)程序絕對(duì)是一個(gè)龐然大物,但看起來(lái)也不是全部都有用。從根本上來(lái)說(shuō),這個(gè)程序需要的是,無(wú)論什么時(shí)候都可以訪問(wèn),更新數(shù)據(jù)庫(kù)中的表,或者向其插入一條事務(wù)記錄,僅此而已。

而且這些事務(wù)看起來(lái)都差不多。除了表的命名以及可能一兩個(gè)參數(shù)之外,其他都是相同的。

這些事務(wù)的真實(shí)情況是,每件事務(wù)的代碼都只有30行左右,但程序訪問(wèn)了一大堆表。剪切→粘貼(或者:復(fù)制→粘貼)。

我最近參與的一個(gè)程序,最初是由另外一個(gè)程序員編寫(xiě)的,乍看起來(lái)非常整潔。不過(guò)看得越多你就越發(fā)現(xiàn),它完全是由很多個(gè)5到20行的通用模塊(Chunks)構(gòu)成。到處都是那些模塊。“剪切→粘貼”。

現(xiàn)在,別誤會(huì)我。剪切→粘貼有它們的用處。就像其他工具一樣,你需要弄清楚它們的作用,它們有什么功能(比如,如果沒(méi)有具備輕松改動(dòng)周?chē)a的能力,你就不要重構(gòu)代碼了),以及它們的短處(寫(xiě)代碼)。

現(xiàn)在的集成開(kāi)發(fā)環(huán)境,演變成了通過(guò)一次簡(jiǎn)單的鼠標(biāo)點(diǎn)擊就可以產(chǎn)生幾百行的標(biāo)準(zhǔn)代碼。這種現(xiàn)象比以往任何問(wèn)題都要更加嚴(yán)重。

當(dāng)然,如果你確實(shí)不想了解你要維護(hù)的代碼,這種做法也無(wú)可厚非。對(duì)此,我稱(chēng)之為“Fire & Forget”軟件,或者是“職業(yè)安全感”和“噩夢(mèng)”,這取決于你的觀點(diǎn)。

(伯樂(lè)在線注:Fire & Forget 譯為“射后不理”泛指武器在發(fā)射之后,就不再接受任何外界指揮、管制或者是射控系統(tǒng)的資料,更新自己的座標(biāo)或者是目標(biāo)的訊息。發(fā)射武器的載具能夠進(jìn)行其他的作業(yè),包括搜索標(biāo)定下一個(gè)目標(biāo),或者是離開(kāi)發(fā)射地點(diǎn)。 via 維基百科)

不過(guò),如果你的目標(biāo)只是為了獲取及保持對(duì)代碼的控制權(quán),讓公司能夠生存下去的話,那么,代碼的規(guī)模越小越好。

小規(guī)模的代碼更有好處,因?yàn)橐?guī)模小,你就會(huì)很清楚代碼的用途。這樣的代碼越好,因?yàn)樗s小了你關(guān)注的范圍,正如它縮小了變量的總數(shù)一樣。需要完全理解的代碼行數(shù)減少了,并且一旦你完全理解了代碼,bug自然也就藏不住了。因?yàn)槟愕某绦驎?huì)更加緊湊,運(yùn)行將會(huì)更快(因?yàn)槌绦虻妮^大部分適合在緩存中運(yùn)行),我們也更容易維護(hù)代碼了(因?yàn)楦菀桌斫獾木壒剩F渌駵p少編譯時(shí)間的東東是不錯(cuò),但不是主因。

以前的程序員,只能通過(guò)全屏編輯器才能了解世界,如果你從那時(shí)候就開(kāi)始編碼直到現(xiàn)在的話,我有幾句話想告訴你:

考慮下復(fù)制、粘貼的順序,下次你將會(huì)用到。這并非沒(méi)有代價(jià),你還得敲兩下鍵盤(pán)。我討厭這兩下子……不過(guò),每當(dāng)我需要重構(gòu)一堆別人編寫(xiě)的,用起來(lái)好像不用收費(fèi)的剪切粘貼軟件時(shí),就覺(jué)得這兩下子還挺受人喜歡的。

原文作者:jacquesmattheij

原文鏈接:http://blog.jobbole.com/9047/

【編輯推薦】

  1. 為什么程序員都是夜貓子?
  2. 程序員的自我修養(yǎng)
  3. 關(guān)于程序員成長(zhǎng)的一點(diǎn)思考
  4. 為什么我們不要.NET程序員
  5. 程序員該如何做到API兼容
責(zé)任編輯:林師授 來(lái)源: 伯樂(lè)在線
相關(guān)推薦

2012-04-05 09:44:21

2012-07-16 13:26:53

2013-12-04 17:56:19

免費(fèi)軟件IT安全網(wǎng)絡(luò)安全

2012-02-16 09:49:26

信息圖移動(dòng)設(shè)備丟失

2021-05-24 06:20:04

Linuxsed命令

2023-11-07 18:03:31

Vim復(fù)制粘貼

2014-12-08 10:37:54

HTTPS

2009-08-14 10:51:43

2011-04-19 10:04:25

NeopPIshell網(wǎng)站后門(mén)

2021-07-02 10:02:03

勒索軟件攻擊數(shù)據(jù)泄露

2014-11-04 13:43:10

2013-06-13 13:19:38

多線程

2016-11-14 14:29:14

C語(yǔ)言

2018-08-22 10:06:02

數(shù)據(jù)恢復(fù)技巧

2011-03-23 10:00:54

2022-04-22 14:41:12

美團(tuán)慢查詢(xún)數(shù)據(jù)庫(kù)

2012-03-30 13:56:17

編程開(kāi)發(fā)

2017-06-23 08:45:02

存儲(chǔ)技術(shù)復(fù)雜性

2012-05-06 08:55:48

微信
點(diǎn)贊
收藏

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