??防呆即減少對人的注意力、能力和經(jīng)驗(yàn)的依賴尝蠕,通過設(shè)計(jì)提煉為模式或方法避免犯錯(cuò)或最大限度地降低犯錯(cuò)概率的發(fā)生烘豌。生活和工作中隨處可見防呆設(shè)計(jì)的例子:
1、 衣服衣領(lǐng)處的標(biāo)簽可以輕易識別前后和正反看彼,避免穿錯(cuò)的情況發(fā)生扇谣,即使是沒有燈光的情況下;
2闲昭、 TypeC接口正反都能插,避免USB式的尷尬靡挥;
3序矩、 在電子設(shè)備中刪除文件時(shí)的確認(rèn)提示,降低文件被誤刪的概率跋破;
4簸淀、 插座插口的安全設(shè)計(jì)瓶蝴,從根本上解決家長對小孩玩耍時(shí)觸電的擔(dān)憂;
5租幕、 IDE中代碼語法錯(cuò)誤提示舷手、編譯時(shí)的錯(cuò)誤提示、運(yùn)行時(shí)的異常提示劲绪,盡量提前暴露問題減少因?yàn)殄e(cuò)誤導(dǎo)致的修復(fù)成本男窟;
6、 企業(yè)微信可將發(fā)信息的快捷鍵調(diào)成Ctrl+Enter贾富,避免按Enter一時(shí)爽歉眷,按了之后可能不爽的情況,尤其是在群里發(fā)言或者和領(lǐng)導(dǎo)溝通時(shí)颤枪;
7汗捡、 自動沖水馬桶解決沖不干凈或者忘記沖的尷尬;類似的還有自動水龍頭畏纲、自動沖水小便池等扇住。
??防呆設(shè)計(jì)給工作和生活帶來的好處是顯而易見的,舉幾個(gè)沒有防呆的例子你就知道防呆有多重要了盗胀,比如:
1艘蹋、 秋冬干燥季節(jié)的靜電,因?yàn)榇蠖鄨鼍岸紱]有防呆設(shè)計(jì)读整,導(dǎo)致每次觸摸帶有靜電的東西都有些恐懼簿训;
2、 即使是再聰明米间、心細(xì)的人强品,也有出門忘帶手機(jī)、鑰匙等隨身物品的時(shí)候屈糊。
??因?yàn)檐浖_發(fā)的復(fù)雜度以及開發(fā)人員能力經(jīng)驗(yàn)參差不齊的榛,在開發(fā)過程中開發(fā)人員犯錯(cuò)是常有的事情。輕則幾乎沒有影響逻锐,比如大多數(shù)代碼層面的錯(cuò)誤夫晌;重則影響項(xiàng)目進(jìn)度、項(xiàng)目質(zhì)量甚至是產(chǎn)品口碑昧诱,比如流程機(jī)制或關(guān)鍵節(jié)點(diǎn)方案決策上的錯(cuò)誤晓淀。不管是個(gè)人或團(tuán)隊(duì),犯錯(cuò)不可怕盏档,但一直犯錯(cuò)才可怕凶掰。作為團(tuán)隊(duì)負(fù)責(zé)人,有必要基于過往經(jīng)驗(yàn)和團(tuán)隊(duì)實(shí)際情況總結(jié)提煉出模式或方法,固化下來防呆懦窘,避免或降低錯(cuò)誤的發(fā)生前翎,就像設(shè)計(jì)模式一樣,使用了設(shè)計(jì)模式就能在一定程度上保證代碼的質(zhì)量畅涂。
??結(jié)合在實(shí)際工作中的實(shí)踐港华,分享一下在軟件開發(fā)過程中的防呆設(shè)計(jì)。
通過自動化實(shí)現(xiàn)流程上的防呆:
??通過將Gitlab午衰、Jenkins和企業(yè)微信打通立宜,實(shí)現(xiàn)提交代碼后即可通過企業(yè)微信接收構(gòu)建錯(cuò)誤的結(jié)果通知,避免提交代碼后忘記構(gòu)建苇经、或者構(gòu)建錯(cuò)誤沒有及時(shí)修正的問題赘理。具體做法是通過Gitlab的Webhook實(shí)現(xiàn)提交代碼自動觸發(fā)Jenkins項(xiàng)目的構(gòu)建,通過對企業(yè)微信做二次開發(fā)扇单,實(shí)現(xiàn)Jenkins構(gòu)建后將構(gòu)建結(jié)果推送到企業(yè)微信商模。更進(jìn)一步還可以打通自動化測試平臺、線上異常采集平臺蜘澜、運(yùn)維平臺和企業(yè)微信施流,實(shí)現(xiàn)測試報(bào)告、異常報(bào)告鄙信、運(yùn)維告警的自動推送瞪醋。
通過模板化實(shí)現(xiàn)規(guī)范化和技術(shù)方案設(shè)計(jì)上的防呆:
??團(tuán)隊(duì)規(guī)范的落地是一件頭疼的事情,比如編碼装诡、命名银受、公共技術(shù)使用規(guī)范:
1、 通過改造IDE中的項(xiàng)目Demo模板鸦采,將對公共技術(shù)的依賴直接在模板中編寫好宾巍,就像MFC一樣,開發(fā)人員通過模板創(chuàng)建項(xiàng)目時(shí)自動引入對公共技術(shù)的依賴渔伯,只需要在這基礎(chǔ)上填空或微調(diào)即可顶霞。
2、 通過編寫靜態(tài)代碼檢測工具锣吼,在Jenkins構(gòu)建項(xiàng)目時(shí)檢測文件和編碼的命名选浑、版本名和版本號、項(xiàng)目結(jié)構(gòu)是否符合團(tuán)隊(duì)規(guī)范玄叠,只要不符合規(guī)范就報(bào)錯(cuò)古徒,久而久之讓開發(fā)人員形成了遵守規(guī)范的習(xí)慣。
??通過將技術(shù)方案設(shè)計(jì)文檔模板化读恃,避免因?yàn)槿藛T能力描函、經(jīng)驗(yàn)的差異崎苗,導(dǎo)致不同人做出來的技術(shù)方案質(zhì)量相差太大、考慮不周全舀寓。尤其是需要團(tuán)隊(duì)或上級決策的文檔,通過模板化可以讓你考慮得更為周全肌蜻,減少對人的依賴互墓。不要指望你沒意識到的問題團(tuán)隊(duì)其他成員或上級能夠發(fā)現(xiàn),他們也是人蒋搜,并且對項(xiàng)目的理解還沒有你深入篡撵,總有考慮不周全的情況。
通過CheckList實(shí)現(xiàn)項(xiàng)目發(fā)布版本時(shí)的防呆:
??有本書叫《清單革命》豆挽,全書的主題就是講清單的重要性育谬,尤其是對于復(fù)雜的工作,通過梳理清單可以降低對人的依賴帮哈,避免或降低錯(cuò)誤的發(fā)生膛檀。在軟件版本發(fā)布時(shí),也很有必要梳理清單娘侍,將每一項(xiàng)需要做的事情作為檢查項(xiàng)咖刃,形成版本發(fā)布的CheckList。比如埋點(diǎn)憾筏、自更新嚎杨、切換正式服務(wù)器、專項(xiàng)測試是否通過氧腰、依賴最穩(wěn)定的公共技術(shù)組件枫浙、修改版本號和版本名等和軟件功能不相關(guān)但影響發(fā)布質(zhì)量的事項(xiàng)。每次發(fā)布版本前必須逐一Check確認(rèn)CheckList中的每一項(xiàng)古拴,都通過了才允許發(fā)布版本箩帚,避免了很多影響發(fā)布質(zhì)量問題的出現(xiàn)。
下面是對這篇文章的總結(jié):
1斤富、 防呆能減少對人的注意力膏潮、能力和經(jīng)驗(yàn)的依賴,避免或最大限度降低錯(cuò)誤的發(fā)生满力;
2焕参、 通過流程自動化、文檔模板化和制定CheckList能很大程度地避免或降低團(tuán)隊(duì)在軟件開發(fā)過程中的錯(cuò)誤油额,提升軟件開發(fā)質(zhì)量和效率叠纷。