新聞中心
在如今全球疫情持續(xù)蔓延的情況下,人們往往希望通過各種生產(chǎn)力的增強方式,來替代當前無法面對面開展高效協(xié)作的狀況。在本文中,我們將和您討論五種有助于軟件工程師和技術公司提高工作效率的實用方式,其中包括:設計系統(tǒng)(Design systems)、代碼查詢器(code linters),代碼格式工具(code formatters)、持續(xù)集成(continuous integration)、以及IaaS/PaaS平臺(IaaS/PaaS providers)。它們能夠幫助您在不犧牲軟件產(chǎn)品質量的情況下,加快整個開發(fā)周期和交付進程。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站設計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的東至網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
設計系統(tǒng)
設計系統(tǒng)主要包含了各種設計模式、使用指南、文檔、所有權模型、溝通方法、以及產(chǎn)品路線圖等。我們可以簡單地把它理解為一個根據(jù)可重用的構建塊(building blocks),來創(chuàng)建某個產(chǎn)品的組件庫。此處的構建塊主要包括:圖標生成器(avatars)、標志、按鈕、下拉菜單、輸入表單、圖標、鏈接、模式、進度指示器、以及工具提示等組件。就像樂高積木一樣,這些組件可以被組合起來,以創(chuàng)建應用程序必需的所有頁面和功能。
為了使軟件產(chǎn)品的用戶界面(UI)能夠隨著業(yè)務與功能不斷擴展,設計系統(tǒng)能夠給用戶帶來如下好處:
- 設計系統(tǒng)可幫助您創(chuàng)建一致性的UI,以便您在整個應用程序中都使用統(tǒng)一的構件塊組件。
- 設計系統(tǒng)通過提供一種可以在任何地方實現(xiàn)的通用模式,以方便設計師和軟件工程師加快開發(fā)的速度,而不必花費數(shù)小時、甚至數(shù)天的時間去重構模式。
- 您可以使用一組共享的組件,來輕松地在整個應用中一次性進行模式的更改。例如:如果您需要更改某個應用的按鈕樣式,那么就無需逐個進行調整,而只需在設計系統(tǒng)中統(tǒng)一更改,以便直觀地應用到任何使用相關按鈕的地方。
- 設計系統(tǒng)使您更加專注于提升用戶體驗(UX)。用戶體驗設計師無需花費時間,去逐個決定每個新功能的下拉菜單和模式該如何工作,而是只需在整體上,集中確保其合理性和用戶友好度即可。
目前,市場上有許多設計系統(tǒng)類工具可供選用,其中包括:Google的Material-UI、Adobe的Spectrum、以及Ant Design等。當然,如果您有足夠的時間和資源的話,也可以自行構建設計系統(tǒng)。
編碼查看器
上圖是針對JavaScript的ESLint的截圖。它通過對代碼進行靜態(tài)分析,協(xié)助自動捕獲各種語法錯誤,以及潛在的運行問題。此類查看器不但短小精悍,并且能夠直接被包含在您的構建過程或git hook中。畢竟,它們最擅長的,便是通過自動化執(zhí)行,在海量代碼中發(fā)現(xiàn)各種語法上、以及邏輯上的錯誤。
以上面提到的ESLint為例,它不但具有高度可配置性,并且具有廣泛的插件生態(tài)系統(tǒng)。您可以通過安裝eslint -plugin-jsx-a11y之類的ESLint插件,來協(xié)助捕獲應用程序中的違規(guī)訪問行為;或者是通過安裝eslint-plugin-react,來協(xié)助實現(xiàn)React的各種優(yōu)秀實踐。當然,如果您不想花時間自己去挑選插件的話,也可以使用一些預設好的插件。例如:eslint-config-airbnb插件包,就預設好了一些由Airbnb推薦的ESLint配置項。
代碼格式化工具
諸如Prettier之類的格式化工具,可以對您的JavaScript、HTML、CSS、乃至各種Markdown文件,進行格式化與規(guī)范化。與代碼查看器類似,代碼格式化工具可以自動化執(zhí)行,各種原本需要軟件工程師手動完成的任務。
通過預先配置,Prettier能夠對應該使用的空格、制表符、分號、逗號等各種代碼格式予以自動規(guī)范化。在節(jié)省代碼審查時間的同時,團隊不但可以在整個存儲庫中保持一致性和標準化,還能夠騰出更多的時間,專注于代碼本身的功能、以及可維護性。
如下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ù)集成
隨著應用程序在復雜性和代碼體量上的增長,我們再也無法單靠一己之力,手動測試目標應用中涉及到的所有內容。我們需要進行動作分解,通過自動化測試來完成單元測試、集成測試、端到端(E2E)測試、以及回歸測試。
由DevOps理念帶來的持續(xù)集成(CI)實踐,則能夠確保您代碼的主分支在理論上,一直處于可執(zhí)行的狀態(tài)。為此,您可以使用Travis CI、CircleCI、GitLab CI/CD、以及Heroku CI之類的服務,來為存儲庫設置持續(xù)集成。在此基礎上,您可以通過配置CI管道,以便在每次提交后,運行查看器和自動化測試,進而在滿足所有前續(xù)條件的基礎上,實現(xiàn)代碼合并。實踐證明,相對于手動測試,自動化測試和持續(xù)集成都能夠大幅減少整個開發(fā)周期的用時。
IaaS和PaaS平臺
在如今云服務盛行的時代,我們要學會善用基礎架構即服務(IaaS)和平臺即服務(PaaS),來管理應用的基礎架構。目前,常見的IaaS平臺包括Amazon Web Services、Google Cloud Platform。而常見的PaaS平臺包括:Heroku等解決方案。
同時,通過使用諸如Amazon Relational Database Service(RDS)之類的托管數(shù)據(jù)庫服務,您不必考慮數(shù)據(jù)庫的升級、以及安全補丁的安裝。而使用諸如Amazon Simple Notification Service(SNS,)之類的通知服務,您將不必自行構建發(fā)送電子郵件或短信等服務。
此外,通過將應用程序部署到Heroku平臺上,您的應用程序將隨著使用量的增加,而能夠實現(xiàn)水平方向和垂直方向的自動擴展。
網(wǎng)頁題目:軟件工程師必備的五種生產(chǎn)力增強方式與實踐
當前路徑:http://www.fisionsoft.com.cn/article/djcecdd.html


咨詢
建站咨詢
