7種代碼工具功舀,幫助您提高團(tuán)隊工作效率

常言道:“工欲善其事,必先利其器身弊”偬”開發(fā)人員時常需要使用各種工具列敲,來加快其代碼的編寫速度。就算在代碼的測試環(huán)境帖汞,他們也會趨向使用各種腳本與工具戴而。通過與業(yè)界許多經(jīng)驗豐富的開發(fā)和測試人員的深入交流,我們收集了目前七種最常用的代碼工具翩蘸,可方便您提高團(tuán)隊的整體工作效率所意。

1. Linux I3窗口管理器(Window Manager)

開發(fā)人員一直能夠受益于Linux所提供的靈活性和自由度。而I3就是在此基礎(chǔ)上催首,提高了用戶對于編程環(huán)境的完全掌控能力扶踊。總的說來郎任,I3窗口管理器針對Linux提供了輕量級秧耗、開源的平鋪風(fēng)格,可用于控制窗口在屏幕上的外觀和位置舶治。由于被平鋪顯示在操作系統(tǒng)的GUI(圖形用戶界面)頂部分井,因此I3可以通過自動調(diào)整窗口大小和重新排列窗口,來避免用戶的工作屏幕上出現(xiàn)窗口的重疊霉猛。以下是I3窗口管理器的主要特點:

簡單高效:作為一款輕巧的工具杂抽,I3是專為開發(fā)人員設(shè)計的、具有最小的處理能力韩脏。

鍵盤控制:I3內(nèi)置了廣泛的缩麸、適用于不同操作的快捷鍵組合。當(dāng)然赡矢,您也可以將其他快捷方式直接添加到其config文件中杭朱,以移動平鋪的方式,打開終端吹散,更改布局等代替鼠標(biāo)的操作弧械。

有效地使用屏幕:通過使用I3提供的平鋪,您不必在同一個窗口中切換大量的選項卡空民,而能夠以平鋪的方式打開任意數(shù)量的窗口刃唐。這對于那些需要在多個終端上來回切換的系統(tǒng)管理員,以及需要使用和測試多個終端的用戶來說十分方便界轩。

自定義主題:您可以根據(jù)自己的偏好画饥,來自定義I3的外觀,包括微調(diào)其背景浊猾、窗口外觀與操作行為抖甘、以及通知界面等。

專家建議:使用I3的工作區(qū)

I3有一項非常實用的功能:開發(fā)人員可以將各個窗口分組為帶有不同編號的工作區(qū)葫慎,以便在不同的區(qū)域運行不同的工作流衔彻。您可以通過索引或按下super按鈕的方式薇宠,來隱藏其他的窗口,只突顯主工作區(qū)窗口艰额,并能夠保持在不同的工作區(qū)之間快速切換澄港。

此外,對于擁有雙顯示器的用戶而言柄沮,他們可以在每臺顯示器上先打開一個工作區(qū)慢睡,然后只需一次性快捷鍵操作,便可將主工作區(qū)切換并投射到指定顯示器上铡溪。這將大幅提高他們的生產(chǎn)率漂辐。

2. Vim

適用于各大主流平臺的Vim,是大多數(shù)編程語言的首選文本編輯器棕硫。它可以通過為開發(fā)人員提供自定義的快捷鍵組合髓涯,來提高編程的效率。Vim具有多種文本編輯模式哈扮,其中每一種模式都可以針對某項特定的任務(wù)進(jìn)行優(yōu)化纬纪。例如:您可能為Python設(shè)置一種模式,而為C++設(shè)置另一種模式滑肉。這些模式允許相同的快捷鍵針對不同的語言包各,發(fā)出迥異的操作命令。此外靶庙,用戶可以在共享的.vimrc.文件中问畅,配置Vim的快捷方式。

專家建議:使用DRY的原則六荒,來設(shè)置Vim快捷方式

開發(fā)人員一直推崇著DRY(Don’t Repeat Yourself)的思想护姆,即:不要重復(fù)實現(xiàn)自己已實現(xiàn)的功能。也就是說掏击,盡量將需要重復(fù)實現(xiàn)的功能性代碼模塊化卵皂,以便在下次需要的時候,直接調(diào)用之砚亭。我們可以在設(shè)置Vim快捷方式時灯变,延用類似的原則。例如捅膘,如果您發(fā)現(xiàn)自己手頭的工作添祸,經(jīng)常需要使用Java來實現(xiàn)某個二進(jìn)制搜索樹時,則可以通過設(shè)置快捷方式篓跛,以粘貼一段已寫好的二進(jìn)制搜索樹的模板膝捞。

3.Bash

Bash是一款為GNU項目開發(fā)的免費Unix shell。一直以來愧沟,它都被用作Linux蔬咬、MacOS、甚至是Windows 10的默認(rèn)登錄shell沐寺。其實林艘,Bash還能支持?jǐn)?shù)百種可以從應(yīng)用程序內(nèi)調(diào)用的命令。

Bash的亮點體現(xiàn)在腳本上混坞。用戶不必逐一輸入一組命令狐援,而可以通過一個包含了所有執(zhí)行命令的shell腳本文件,讓它們依次自動執(zhí)行究孕。同時啥酱,由于Bash里的命令比較偏底層,因此用戶無需打開桌面應(yīng)用厨诸,即可操縱各種文件與內(nèi)存镶殷。例如,您可以創(chuàng)建一個Shell腳本微酬,在無需調(diào)用文件管理器的情況下绘趋,系統(tǒng)性地將某個硬盤內(nèi)的全部內(nèi)容傳輸?shù)搅硪慌_設(shè)備上】殴埽可見陷遮,Bash不但效率更高,而且能夠執(zhí)行更為專門的任務(wù)垦江。

專家建議:使用Bash的歷史

您可以使用如下Bash歷史的獲取方式帽馋,來進(jìn)一步提高執(zhí)行的效率與能力:

多窗口的歷史記錄:

默認(rèn)情況下,Bash只會記錄已打開的第一個實例的歷史命令比吭,而不會記錄后續(xù)窗口的歷史信息茬斧。不過,您可以通過命令:shopt -s histappend梗逮,讓所有活動的Bash窗口都可以記錄歷史命令项秉。

重復(fù)上一條命令:

您可以使用鍵盤上的向上箭頭、或ctrl+p組合鍵慷彤,來查看最近執(zhí)行過的一條命令娄蔼。

反向搜索歷史:

您只需按下ctrl+r的組合鍵,即可在Bash的歷史中搜索過去的命令底哗。Bash會使用自動填充的方式進(jìn)行匹配岁诉。如果有多行匹配,您可以再按一次ctrl+r跋选,以便在其中循環(huán)選擇涕癣。

4.函數(shù)式編程(Functional Programming)

函數(shù)式編程是一種聲明式編程范例,可用于構(gòu)造那些具有純函數(shù)集合的程序前标。這些程序往往是由一些基本的函數(shù)單元坠韩,組合構(gòu)造而成距潘。值得注意的是,聲明式編程關(guān)注的是構(gòu)建什么只搁,而不是如何去實現(xiàn)音比。它通過提供數(shù)學(xué)上和邏輯上的范例,來方便用戶輕松地設(shè)計出聲明式編程氢惋。

函數(shù)式編程比其他方法更具模塊化洞翩。它通過將程序拆分為較小的功能函數(shù),以便用戶在整個程序中實現(xiàn)復(fù)用焰望。當(dāng)然骚亿,用戶也可以根據(jù)模塊化的函數(shù),僅復(fù)用整個方案中的某一部分熊赖。

此外来屠,由于函數(shù)式編程里的數(shù)據(jù)保持不變,因此不會產(chǎn)生任何副作用秫舌。例如我們有某個函數(shù)是從n開始的妖,需要將n傳遞給function1,然后將function1的結(jié)果輸入給function2足陨。下面是兩種不同方法的偽代碼(pseudo-code):

塊式方法:

int n = 5; n = function1(n); n = function2(n); return n;

函數(shù)式方法:

int n = 5; return function2(function1(n));

在函數(shù)式方法中嫂粟,我們通過function1(n)直接將n傳遞給function2,而不是去擴(kuò)充n墨缘,因此這種聲明方式保證了n所傳遞的值不會發(fā)生改變星虹,進(jìn)而保證了該函數(shù)在使用中不會產(chǎn)生任何副作用。

專家建議:函數(shù)式思維镊讼,不僅僅是語言

適合此類范例的函數(shù)式編程語言有:Clojure宽涌、Scala和Haskell等。盡管它們的功能強大蝶棋,但是對于初學(xué)者來說并不容易上手卸亮。新手程序員需要先在自己熟悉的編程語言中,試著通過如下方法玩裙,來訓(xùn)練和使用函數(shù)性思維:

利用map兼贸、reduce等操作,改變以前的塊式編程思想吃溅。

練習(xí)在每次編程中溶诞,使用局部作用域的變量和函數(shù),來減少副作用决侈。

由于遞歸方案需要函數(shù)性思維螺垢,因此在實踐中優(yōu)先考慮遞歸方案。

5.Reflect

回歸測試是確認(rèn)已開發(fā)的軟件,能夠在更新后仍可正常運行的過程枉圃。這幾乎是每個開發(fā)人員必經(jīng)的過程功茴。但是由于需要涵蓋所有可能的錯誤,因此該過程也會相當(dāng)繁瑣讯蒲。

Reflect通過為任何網(wǎng)站創(chuàng)建自動化回歸測試來解決此類問題痊土。它不需要任何安裝肄扎,即可與任何JavaScript框架協(xié)同使用墨林。其具體操作步驟如下:

進(jìn)入“記錄測試”模式

加載網(wǎng)站的當(dāng)前工作頁面

單擊需要測試的功能

停止記錄測試,這將生成一個測試腳本犯祠,以模擬各種點擊

輸入目標(biāo)網(wǎng)站的測試版本地址

激活測試腳本

查看記錄下的結(jié)果

通常旭等,測試結(jié)果會將發(fā)生問題時的截屏片段,發(fā)送到JavaScript控制臺衡载,以便用戶從源頭處迅速開展問題診斷搔耕。這種“一次性創(chuàng)建錄屏,多次模擬測試”的方式不僅可以為用戶節(jié)省大量的手動測試時間痰娱,還可以自動生成每個測試的視頻記錄弃榨,以展示確切的錯誤信息。簡而言之梨睁,鑒于Reflect的簡單性鲸睛、可重復(fù)性和準(zhǔn)確性,它正在開發(fā)人員中變得越來越流行坡贺。

專家建議:Reflect的高級功能

除了上面介紹的Reflect主要服務(wù)官辈,它還能夠提供如下高級功能:

通過規(guī)劃某項測試在停頓任意時間間隔后進(jìn)行,可確保目標(biāo)網(wǎng)站能夠在無人值守的情況下遍坟,照常提供服務(wù)拳亿。

將測試計劃與故障通知相結(jié)合,以減少網(wǎng)站在中斷時的響應(yīng)時間愿伴。

如果需要更改測試肺魁,只需編輯和重新記錄某個單擊操作或某幾個部分,而不必重新錄入整個過程隔节。

在更改網(wǎng)站的界面時鹅经,可使用自動化的視覺檢測工具,來檢測那些與輸入預(yù)期值相距甚遠(yuǎn)的故障元素官帘。

6.正則表達(dá)式

正則表達(dá)式(Regular expressions瞬雹,regex)是用來描述搜索模式行為的一組字符。它們通常被用到字符串的搜索算法中刽虹,以實現(xiàn)模式的查找與匹配酗捌。

前文提到的Bash,有一個唯一的正則表達(dá)式運算符 =~,可用于搜索給定正則表達(dá)式模式中的匹配項胖缤。例如:if [[ $digit =~ [0-9] ]]; then語句尚镰,是在字符串中搜索任何數(shù)字實例。當(dāng)然哪廓,除了Bash之外狗唉,Python和Java也能夠支持正則表達(dá)式類型的參數(shù)。

由于它們僅需幾個字符涡真,即可實現(xiàn)非常復(fù)雜的參數(shù)搜索分俯,因此它們對于數(shù)據(jù)的驗證,以及其他類型的文本處理任務(wù)哆料,都是非常實用的缸剪。同時,由于是計算機領(lǐng)域的通用語言东亦,因此正則表達(dá)式得到了全世界開發(fā)人員的認(rèn)可杏节。您可以通過學(xué)習(xí)Bash、Java或Python的相關(guān)功能典阵,來進(jìn)一步掌握正則表達(dá)式奋渔。

專家建議:使用正則表達(dá)式進(jìn)行網(wǎng)頁的爬取

由于正則表達(dá)式可以從大量待搜索的字符串中,提取與參數(shù)想匹配的字段壮啊,因此嫉鲸,正則表達(dá)式的一種最常見的使用場景是:從大量網(wǎng)站中提取特定的信息,即網(wǎng)頁抓取他巨。例如充坑,您可以通過$:\s+([^\s]+),從競爭對手的網(wǎng)站上染突,搜索給定產(chǎn)品的價格捻爷。一旦表達(dá)式搜索到了$后面的相關(guān)內(nèi)容,它就會將其提取到單獨的文件中份企。

7. RegExr

常言道“知易行難”也榄,正則表達(dá)式雖然容易上手,但是要用好它就比較復(fù)雜司志。例如甜紫,下面這個正則表達(dá)式是專門用來匹配某個特定類型的URL。您是不是被其復(fù)雜性驚得虎身一顫?

^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})(:[0-9]+)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&%\$#\=~]*)

為了更容易地理解那些復(fù)雜的正則表達(dá)式骂远,免費工具—RegExr能夠可視化和測試給定的正則表達(dá)式囚霸。由于正則表達(dá)式往往是標(biāo)準(zhǔn)化的,因此RegExr可以解析出表達(dá)式中的關(guān)鍵部分激才,并將其轉(zhuǎn)換為解釋性的句子形式拓型。同時额嘿,當(dāng)您將鼠標(biāo)懸停在內(nèi)容說明上時,該工具能夠突顯其對應(yīng)在表達(dá)式中的確切位置劣挫。下圖便是上面那個復(fù)雜示例的具體功能性說明册养,以及對應(yīng)的、以顏色編碼的形式突顯出的不同部分压固。

在節(jié)省開發(fā)人員解讀冗長的正則表達(dá)式的寶貴時間的同時球拦,RegExr還消除了用戶對于公式庫的死記硬背。在其界面的一側(cè)帐我,您可以查找到完整的公式庫坎炼,及其對應(yīng)的用途說明。您只需單擊它們焚刚,即可將公式插入表達(dá)式中点弯。此外扇调,RegExr還可以向待測試的表達(dá)式中矿咕,填入各種文本,以提高測試的覆蓋率狼钮。

專家建議:避免使用冗長的正則表達(dá)式

盡管RegExr可以協(xié)助我們解析較長的正則表達(dá)式碳柱,但是此類長表達(dá)式畢竟晦澀難懂。而且熬芜,讓單個表達(dá)式來完成所有的搜索參數(shù)莲镣,往往是一個既耗時,又容易出錯的過程涎拉。因此瑞侮,在實際項目中,您的團(tuán)隊?wèi)?yīng)當(dāng)優(yōu)先考慮那些便于理解且較短的表達(dá)式表現(xiàn)形式鼓拧。例如半火,我們可以嘗試著構(gòu)建多個較小的表達(dá)式,讓每個表達(dá)式都僅搜索一到兩個字符串季俩。這樣不僅解決了上述問題钮糖,而且能夠方便您在后續(xù)的項目中,對部分或所有表達(dá)式進(jìn)行重用酌住。

小結(jié)

綜上所述店归,我們介紹了7種能夠協(xié)助開發(fā)團(tuán)隊提高效率的代碼相關(guān)工具和軟件。其中最為常用的莫過于Vim酪我、Reflect和RegExr了消痛。盡管這些工具的學(xué)習(xí)曲線緩陡程度不盡相同,但是只要您掌握了它們都哭,并且能夠靈活地使用它們秩伞,就一定能夠節(jié)省出數(shù)小時的開發(fā)時間谴古,以及數(shù)千次的鼠標(biāo)擊鍵〕砬福快去試試吧掰担。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市怒炸,隨后出現(xiàn)的幾起案子带饱,更是在濱河造成了極大的恐慌,老刑警劉巖阅羹,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勺疼,死亡現(xiàn)場離奇詭異,居然都是意外死亡捏鱼,警方通過查閱死者的電腦和手機执庐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來导梆,“玉大人轨淌,你說我怎么就攤上這事】茨幔” “怎么了递鹉?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藏斩。 經(jīng)常有香客問我躏结,道長,這世上最難降的妖魔是什么狰域? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任媳拴,我火速辦了婚禮,結(jié)果婚禮上兆览,老公的妹妹穿的比我還像新娘屈溉。我一直安慰自己,他們只是感情好拓颓,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布语婴。 她就那樣靜靜地躺著,像睡著了一般驶睦。 火紅的嫁衣襯著肌膚如雪砰左。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天场航,我揣著相機與錄音缠导,去河邊找鬼。 笑死溉痢,一個胖子當(dāng)著我的面吹牛僻造,可吹牛的內(nèi)容都是我干的憋他。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼髓削,長吁一口氣:“原來是場噩夢啊……” “哼竹挡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起立膛,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤揪罕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宝泵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體好啰,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年儿奶,在試婚紗的時候發(fā)現(xiàn)自己被綠了框往。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡闯捎,死狀恐怖椰弊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隙券,我是刑警寧澤男应,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏合敦。R本人自食惡果不足惜股缸,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望借卧。 院中可真熱鬧盹憎,春花似錦、人聲如沸铐刘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镰吵。三九已至檩禾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疤祭,已是汗流浹背盼产。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勺馆,地道東北人戏售。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓侨核,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灌灾。 傳聞我的和親對象是個殘疾皇子搓译,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容