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

1. Linux I3窗口管理器(Window Manager)
開發(fā)人員一直能夠受益于Linux所提供的靈活性和自由度。而I3就是在此基礎(chǔ)上,提高了用戶對于編程環(huán)境的完全掌控能力??偟恼f來,I3窗口管理器針對Linux提供了輕量級、開源的平鋪風(fēng)格,可用于控制窗口在屏幕上的外觀和位置。由于被平鋪顯示在操作系統(tǒng)的GUI(圖形用戶界面)頂部,因此I3可以通過自動(dòng)調(diào)整窗口大小和重新排列窗口,來避免用戶的工作屏幕上出現(xiàn)窗口的重疊。以下是I3窗口管理器的主要特點(diǎn):
- 簡單高效:作為一款輕巧的工具,I3是專為開發(fā)人員設(shè)計(jì)的、具有最小的處理能力。
- 鍵盤控制:I3內(nèi)置了廣泛的、適用于不同操作的快捷鍵組合。當(dāng)然,您也可以將其他快捷方式直接添加到其config文件中,以移動(dòng)平鋪的方式,打開終端,更改布局等代替鼠標(biāo)的操作。
- 有效地使用屏幕:通過使用I3提供的平鋪,您不必在同一個(gè)窗口中切換大量的選項(xiàng)卡,而能夠以平鋪的方式打開任意數(shù)量的窗口。這對于那些需要在多個(gè)終端上來回切換的系統(tǒng)管理員,以及需要使用和測試多個(gè)終端的用戶來說十分方便。
- 自定義主題:您可以根據(jù)自己的偏好,來自定義I3的外觀,包括微調(diào)其背景、窗口外觀與操作行為、以及通知界面等。
專家建議:使用I3的工作區(qū)
I3有一項(xiàng)非常實(shí)用的功能:開發(fā)人員可以將各個(gè)窗口分組為帶有不同編號的工作區(qū),以便在不同的區(qū)域運(yùn)行不同的工作流。您可以通過索引或按下super按鈕的方式,來隱藏其他的窗口,只突顯主工作區(qū)窗口,并能夠保持在不同的工作區(qū)之間快速切換。
此外,對于擁有雙顯示器的用戶而言,他們可以在每臺(tái)顯示器上先打開一個(gè)工作區(qū),然后只需一次性快捷鍵操作,便可將主工作區(qū)切換并投射到指定顯示器上。這將大幅提高他們的生產(chǎn)率。
2. Vim
適用于各大主流平臺(tái)的Vim,是大多數(shù)編程語言的首選文本編輯器。它可以通過為開發(fā)人員提供自定義的快捷鍵組合,來提高編程的效率。Vim具有多種文本編輯模式,其中每一種模式都可以針對某項(xiàng)特定的任務(wù)進(jìn)行優(yōu)化。例如:您可能為Python設(shè)置一種模式,而為C++設(shè)置另一種模式。這些模式允許相同的快捷鍵針對不同的語言,發(fā)出迥異的操作命令。此外,用戶可以在共享的.vimrc.文件中,配置Vim的快捷方式。
專家建議:使用DRY的原則,來設(shè)置Vim快捷方式
開發(fā)人員一直推崇著DRY(Don’t Repeat Yourself)的思想,即:不要重復(fù)實(shí)現(xiàn)自己已實(shí)現(xiàn)的功能。也就是說,盡量將需要重復(fù)實(shí)現(xiàn)的功能性代碼模塊化,以便在下次需要的時(shí)候,直接調(diào)用之。我們可以在設(shè)置Vim快捷方式時(shí),延用類似的原則。例如,如果您發(fā)現(xiàn)自己手頭的工作,經(jīng)常需要使用Java來實(shí)現(xiàn)某個(gè)二進(jìn)制搜索樹時(shí),則可以通過設(shè)置快捷方式,以粘貼一段已寫好的二進(jìn)制搜索樹的模板。
3.Bash
Bash是一款為GNU項(xiàng)目開發(fā)的免費(fèi)Unix shell。一直以來,它都被用作Linux、MacOS、甚至是Windows 10的默認(rèn)登錄shell。其實(shí),Bash還能支持?jǐn)?shù)百種可以從應(yīng)用程序內(nèi)調(diào)用的命令。
Bash的亮點(diǎn)體現(xiàn)在腳本上。用戶不必逐一輸入一組命令,而可以通過一個(gè)包含了所有執(zhí)行命令的shell腳本文件,讓它們依次自動(dòng)執(zhí)行。同時(shí),由于Bash里的命令比較偏底層,因此用戶無需打開桌面應(yīng)用,即可操縱各種文件與內(nèi)存。例如,您可以創(chuàng)建一個(gè)Shell腳本,在無需調(diào)用文件管理器的情況下,系統(tǒng)性地將某個(gè)硬盤內(nèi)的全部內(nèi)容傳輸?shù)搅硪慌_(tái)設(shè)備上??梢姡珺ash不但效率更高,而且能夠執(zhí)行更為專門的任務(wù)。
專家建議:使用Bash的歷史
您可以使用如下Bash歷史的獲取方式,來進(jìn)一步提高執(zhí)行的效率與能力:
多窗口的歷史記錄:
默認(rèn)情況下,Bash只會(huì)記錄已打開的第一個(gè)實(shí)例的歷史命令,而不會(huì)記錄后續(xù)窗口的歷史信息。不過,您可以通過命令:shopt -s histappend,讓所有活動(dòng)的Bash窗口都可以記錄歷史命令。
重復(fù)上一條命令:
您可以使用鍵盤上的向上箭頭、或ctrl+p組合鍵,來查看最近執(zhí)行過的一條命令。
反向搜索歷史:
您只需按下ctrl+r的組合鍵,即可在Bash的歷史中搜索過去的命令。Bash會(huì)使用自動(dòng)填充的方式進(jìn)行匹配。如果有多行匹配,您可以再按一次ctrl+r,以便在其中循環(huán)選擇。
4.函數(shù)式編程(Functional Programming)
函數(shù)式編程是一種聲明式編程范例,可用于構(gòu)造那些具有純函數(shù)集合的程序。這些程序往往是由一些基本的函數(shù)單元,組合構(gòu)造而成。值得注意的是,聲明式編程關(guān)注的是構(gòu)建什么,而不是如何去實(shí)現(xiàn)。它通過提供數(shù)學(xué)上和邏輯上的范例,來方便用戶輕松地設(shè)計(jì)出聲明式編程。
函數(shù)式編程比其他方法更具模塊化。它通過將程序拆分為較小的功能函數(shù),以便用戶在整個(gè)程序中實(shí)現(xiàn)復(fù)用。當(dāng)然,用戶也可以根據(jù)模塊化的函數(shù),僅復(fù)用整個(gè)方案中的某一部分。
此外,由于函數(shù)式編程里的數(shù)據(jù)保持不變,因此不會(huì)產(chǎn)生任何副作用。例如我們有某個(gè)函數(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所傳遞的值不會(huì)發(fā)生改變,進(jìn)而保證了該函數(shù)在使用中不會(huì)產(chǎn)生任何副作用。
專家建議:函數(shù)式思維,不僅僅是語言
適合此類范例的函數(shù)式編程語言有:Clojure、Scala和Haskell等。盡管它們的功能強(qiáng)大,但是對于初學(xué)者來說并不容易上手。新手程序員需要先在自己熟悉的編程語言中,試著通過如下方法,來訓(xùn)練和使用函數(shù)性思維:
- 利用map、reduce等操作,改變以前的塊式編程思想。
- 練習(xí)在每次編程中,使用局部作用域的變量和函數(shù),來減少副作用。
- 由于遞歸方案需要函數(shù)性思維,因此在實(shí)踐中優(yōu)先考慮遞歸方案。
5.Reflect
回歸測試是確認(rèn)已開發(fā)的軟件,能夠在更新后仍可正常運(yùn)行的過程。這幾乎是每個(gè)開發(fā)人員必經(jīng)的過程。但是由于需要涵蓋所有可能的錯(cuò)誤,因此該過程也會(huì)相當(dāng)繁瑣。
Reflect通過為任何網(wǎng)站創(chuàng)建自動(dòng)化回歸測試來解決此類問題。它不需要任何安裝,即可與任何JavaScript框架協(xié)同使用。其具體操作步驟如下:
- 進(jìn)入“記錄測試”模式
- 加載網(wǎng)站的當(dāng)前工作頁面
- 單擊需要測試的功能
- 停止記錄測試,這將生成一個(gè)測試腳本,以模擬各種點(diǎn)擊
- 輸入目標(biāo)網(wǎng)站的測試版本地址
- 激活測試腳本
- 查看記錄下的結(jié)果
通常,測試結(jié)果會(huì)將發(fā)生問題時(shí)的截屏片段,發(fā)送到JavaScript控制臺(tái),以便用戶從源頭處迅速開展問題診斷。這種“一次性創(chuàng)建錄屏,多次模擬測試”的方式不僅可以為用戶節(jié)省大量的手動(dòng)測試時(shí)間,還可以自動(dòng)生成每個(gè)測試的視頻記錄,以展示確切的錯(cuò)誤信息。簡而言之,鑒于Reflect的簡單性、可重復(fù)性和準(zhǔn)確性,它正在開發(fā)人員中變得越來越流行。
專家建議:Reflect的高級功能
除了上面介紹的Reflect主要服務(wù),它還能夠提供如下高級功能:
- 通過規(guī)劃某項(xiàng)測試在停頓任意時(shí)間間隔后進(jìn)行,可確保目標(biāo)網(wǎng)站能夠在無人值守的情況下,照常提供服務(wù)。
- 將測試計(jì)劃與故障通知相結(jié)合,以減少網(wǎng)站在中斷時(shí)的響應(yīng)時(shí)間。
- 如果需要更改測試,只需編輯和重新記錄某個(gè)單擊操作或某幾個(gè)部分,而不必重新錄入整個(gè)過程。
- 在更改網(wǎng)站的界面時(shí),可使用自動(dòng)化的視覺檢測工具,來檢測那些與輸入預(yù)期值相距甚遠(yuǎn)的故障元素。
6.正則表達(dá)式
正則表達(dá)式(Regular expressions,regex)是用來描述搜索模式行為的一組字符。它們通常被用到字符串的搜索算法中,以實(shí)現(xiàn)模式的查找與匹配。
前文提到的Bash,有一個(gè)唯一的正則表達(dá)式運(yùn)算符 =~,可用于搜索給定正則表達(dá)式模式中的匹配項(xiàng)。例如:if [[ $digit =~ [0-9] ]]; then語句,是在字符串中搜索任何數(shù)字實(shí)例。當(dāng)然,除了Bash之外,Python和Java也能夠支持正則表達(dá)式類型的參數(shù)。
由于它們僅需幾個(gè)字符,即可實(shí)現(xiàn)非常復(fù)雜的參數(shù)搜索,因此它們對于數(shù)據(jù)的驗(yàn)證,以及其他類型的文本處理任務(wù),都是非常實(shí)用的。同時(shí),由于是計(jì)算機(jī)領(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)品的價(jià)格。一旦表達(dá)式搜索到了$后面的相關(guān)內(nèi)容,它就會(huì)將其提取到單獨(dú)的文件中。
7. RegExr
常言道“知易行難”,正則表達(dá)式雖然容易上手,但是要用好它就比較復(fù)雜。例如,下面這個(gè)正則表達(dá)式是專門用來匹配某個(gè)特定類型的URL。您是不是被其復(fù)雜性驚得虎身一顫?
^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})(:[0-9]+)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&%\$#\=~]*)
為了更容易地理解那些復(fù)雜的正則表達(dá)式,免費(fèi)工具—RegExr能夠可視化和測試給定的正則表達(dá)式。由于正則表達(dá)式往往是標(biāo)準(zhǔn)化的,因此RegExr可以解析出表達(dá)式中的關(guān)鍵部分,并將其轉(zhuǎn)換為解釋性的句子形式。同時(shí),當(dāng)您將鼠標(biāo)懸停在內(nèi)容說明上時(shí),該工具能夠突顯其對應(yīng)在表達(dá)式中的確切位置。下圖便是上面那個(gè)復(fù)雜示例的具體功能性說明,以及對應(yīng)的、以顏色編碼的形式突顯出的不同部分。
在節(jié)省開發(fā)人員解讀冗長的正則表達(dá)式的寶貴時(shí)間的同時(shí),RegExr還消除了用戶對于公式庫的死記硬背。在其界面的一側(cè),您可以查找到完整的公式庫,及其對應(yīng)的用途說明。您只需單擊它們,即可將公式插入表達(dá)式中。此外,RegExr還可以向待測試的表達(dá)式中,填入各種文本,以提高測試的覆蓋率。
專家建議:避免使用冗長的正則表達(dá)式
盡管RegExr可以協(xié)助我們解析較長的正則表達(dá)式,但是此類長表達(dá)式畢竟晦澀難懂。而且,讓單個(gè)表達(dá)式來完成所有的搜索參數(shù),往往是一個(gè)既耗時(shí),又容易出錯(cuò)的過程。因此,在實(shí)際項(xiàng)目中,您的團(tuán)隊(duì)?wèi)?yīng)當(dāng)優(yōu)先考慮那些便于理解且較短的表達(dá)式表現(xiàn)形式。例如,我們可以嘗試著構(gòu)建多個(gè)較小的表達(dá)式,讓每個(gè)表達(dá)式都僅搜索一到兩個(gè)字符串。這樣不僅解決了上述問題,而且能夠方便您在后續(xù)的項(xiàng)目中,對部分或所有表達(dá)式進(jìn)行重用。
小結(jié)
綜上所述,我們介紹了7種能夠協(xié)助開發(fā)團(tuán)隊(duì)提高效率的代碼相關(guān)工具和軟件。其中最為常用的莫過于Vim、Reflect和RegExr了。盡管這些工具的學(xué)習(xí)曲線緩陡程度不盡相同,但是只要您掌握了它們,并且能夠靈活地使用它們,就一定能夠節(jié)省出數(shù)小時(shí)的開發(fā)時(shí)間,以及數(shù)千次的鼠標(biāo)擊鍵??烊ピ囋嚢?。
當(dāng)前名稱:7種代碼工具,幫助您提高團(tuán)隊(duì)工作效率
本文網(wǎng)址:http://www.fisionsoft.com.cn/article/cohjhjo.html


咨詢
建站咨詢
