掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在如今全球疫情持續(xù)蔓延的情況下,人們往往希望通過各種生產(chǎn)力的增強(qiáng)方式,來替代當(dāng)前無法面對面開展高效協(xié)作的狀況。在本文中,我們將和您討論五種有助于軟件工程師和技術(shù)公司提高工作效率的實(shí)用方式,其中包括:設(shè)計(jì)系統(tǒng)(Design systems)、代碼查詢器(code linters),代碼格式工具(code formatters)、持續(xù)集成(continuous integration)、以及IaaS/PaaS平臺(IaaS/PaaS providers)。它們能夠幫助您在不犧牲軟件產(chǎn)品質(zhì)量的情況下,加快整個開發(fā)周期和交付進(jìn)程。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的東至網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
設(shè)計(jì)系統(tǒng)
設(shè)計(jì)系統(tǒng)主要包含了各種設(shè)計(jì)模式、使用指南、文檔、所有權(quán)模型、溝通方法、以及產(chǎn)品路線圖等。我們可以簡單地把它理解為一個根據(jù)可重用的構(gòu)建塊(building blocks),來創(chuàng)建某個產(chǎn)品的組件庫。此處的構(gòu)建塊主要包括:圖標(biāo)生成器(avatars)、標(biāo)志、按鈕、下拉菜單、輸入表單、圖標(biāo)、鏈接、模式、進(jìn)度指示器、以及工具提示等組件。就像樂高積木一樣,這些組件可以被組合起來,以創(chuàng)建應(yīng)用程序必需的所有頁面和功能。
為了使軟件產(chǎn)品的用戶界面(UI)能夠隨著業(yè)務(wù)與功能不斷擴(kuò)展,設(shè)計(jì)系統(tǒng)能夠給用戶帶來如下好處:
目前,市場上有許多設(shè)計(jì)系統(tǒng)類工具可供選用,其中包括:Google的Material-UI、Adobe的Spectrum、以及Ant Design等。當(dāng)然,如果您有足夠的時間和資源的話,也可以自行構(gòu)建設(shè)計(jì)系統(tǒng)。
編碼查看器
上圖是針對JavaScript的ESLint的截圖。它通過對代碼進(jìn)行靜態(tài)分析,協(xié)助自動捕獲各種語法錯誤,以及潛在的運(yùn)行問題。此類查看器不但短小精悍,并且能夠直接被包含在您的構(gòu)建過程或git hook中。畢竟,它們最擅長的,便是通過自動化執(zhí)行,在海量代碼中發(fā)現(xiàn)各種語法上、以及邏輯上的錯誤。
以上面提到的ESLint為例,它不但具有高度可配置性,并且具有廣泛的插件生態(tài)系統(tǒng)。您可以通過安裝eslint -plugin-jsx-a11y之類的ESLint插件,來協(xié)助捕獲應(yīng)用程序中的違規(guī)訪問行為;或者是通過安裝eslint-plugin-react,來協(xié)助實(shí)現(xiàn)React的各種優(yōu)秀實(shí)踐。當(dāng)然,如果您不想花時間自己去挑選插件的話,也可以使用一些預(yù)設(shè)好的插件。例如:eslint-config-airbnb插件包,就預(yù)設(shè)好了一些由Airbnb推薦的ESLint配置項(xiàng)。
代碼格式化工具
諸如Prettier之類的格式化工具,可以對您的JavaScript、HTML、CSS、乃至各種Markdown文件,進(jìn)行格式化與規(guī)范化。與代碼查看器類似,代碼格式化工具可以自動化執(zhí)行,各種原本需要軟件工程師手動完成的任務(wù)。
通過預(yù)先配置,Prettier能夠?qū)?yīng)該使用的空格、制表符、分號、逗號等各種代碼格式予以自動規(guī)范化。在節(jié)省代碼審查時間的同時,團(tuán)隊(duì)不但可以在整個存儲庫中保持一致性和標(biāo)準(zhǔn)化,還能夠騰出更多的時間,專注于代碼本身的功能、以及可維護(hù)性。
如下Java代碼是Prettier配置的示例:
- {
- "tabWidth": 2,
- "useTabs": false,
- "printWidth": 80,
- "semi": false,
- "singleQuote": true,
- "trailingComma": "es5",
- "quoteProps": "as-needed",
- "jsxSingleQuote": false,
- "jsxBracketSameLine": false,
- "bracketSpacing": true,
- "arrowParens": "avoid",
- "endOfLine": "auto",
- "proseWrap": "preserve",
- "htmlWhitespaceSensitivity": "css"
- }
我們來看一個例子。顯然,下面的Java程序代碼,看上去十分雜亂無章:
- function HelloWorld({greeting = "hello", greeted = '"World"', silent = false, onMouseOver,}) {
- if(!greeting){return null};
- // TODO: Don't use random in render
- let num = Math.floor (Math.random() * 1E+7).toString().replace(/\.\d+/ig, "")
- return
;- { greeting.slice( 0, 1 ).toUpperCase() + greeting.slice(1).toLowerCase() }
- {greeting.endsWith(",") ? " " : ", " }
- { greeted }
- { (silent)
- ? "."
- : "!"}
- }
通過使用Prettier,代碼會變成如下的樣子:
- function HelloWorld({
- greeting = 'hello',
- greeted = '"World"',
- silent = false,
- onMouseOver,
- }) {
- if (!greeting) {
- return null
- }
- // TODO: Don't use random in render
- let num = Math.floor(Math.random() * 1e7)
- .toString()
- .replace(/\.\d+/gi, '')
- return (
- className="HelloWorld"
- title={`You are visitor number ${num}`}
- onMouseOver={onMouseOver}
- >
- {greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase()}
- {greeting.endsWith(',') ? (
- ' '
- ) : (
- ", "
- )}
- {greeted}
- {silent ? '.' : '!'}
- )
- }
自動化測試和持續(xù)集成
隨著應(yīng)用程序在復(fù)雜性和代碼體量上的增長,我們再也無法單靠一己之力,手動測試目標(biāo)應(yīng)用中涉及到的所有內(nèi)容。我們需要進(jìn)行動作分解,通過自動化測試來完成單元測試、集成測試、端到端(E2E)測試、以及回歸測試。
由DevOps理念帶來的持續(xù)集成(CI)實(shí)踐,則能夠確保您代碼的主分支在理論上,一直處于可執(zhí)行的狀態(tài)。為此,您可以使用Travis CI、CircleCI、GitLab CI/CD、以及Heroku CI之類的服務(wù),來為存儲庫設(shè)置持續(xù)集成。在此基礎(chǔ)上,您可以通過配置CI管道,以便在每次提交后,運(yùn)行查看器和自動化測試,進(jìn)而在滿足所有前續(xù)條件的基礎(chǔ)上,實(shí)現(xiàn)代碼合并。實(shí)踐證明,相對于手動測試,自動化測試和持續(xù)集成都能夠大幅減少整個開發(fā)周期的用時。
IaaS和PaaS平臺
在如今云服務(wù)盛行的時代,我們要學(xué)會善用基礎(chǔ)架構(gòu)即服務(wù)(IaaS)和平臺即服務(wù)(PaaS),來管理應(yīng)用的基礎(chǔ)架構(gòu)。目前,常見的IaaS平臺包括Amazon Web Services、Google Cloud Platform。而常見的PaaS平臺包括:Heroku等解決方案。
同時,通過使用諸如Amazon Relational Database Service(RDS)之類的托管數(shù)據(jù)庫服務(wù),您不必考慮數(shù)據(jù)庫的升級、以及安全補(bǔ)丁的安裝。而使用諸如Amazon Simple Notification Service(SNS,)之類的通知服務(wù),您將不必自行構(gòu)建發(fā)送電子郵件或短信等服務(wù)。
此外,通過將應(yīng)用程序部署到Heroku平臺上,您的應(yīng)用程序?qū)㈦S著使用量的增加,而能夠?qū)崿F(xiàn)水平方向和垂直方向的自動擴(kuò)展。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流