講師介紹楊周 連續(xù)創(chuàng)業(yè)者、DIY/Linux 玩家、知乎小 V,曾在創(chuàng)新工場(chǎng)、百度擔(dān)任后端開發(fā)。十余年一線研發(fā)和帶隊(duì)經(jīng)驗(yàn),經(jīng)歷了 ToB、ToC、O2O、國(guó)內(nèi)、出海各種項(xiàng)目,見證了云計(jì)算時(shí)代的誕生,擅長(zhǎng)研發(fā)最佳實(shí)踐:Code Review、DevOps、Git Workflow、敏捷開發(fā)、架構(gòu)、極客辦公硬件。 PHP 老項(xiàng)目常見質(zhì)量問(wèn)題問(wèn)題一:未提交 composer.lockComposer 官方文檔(getcomposer.org)提醒:一定要提交 composer.lock 文件到代碼庫(kù),才能確保所有人、所有機(jī)器安裝的依賴包都是同一版本。 問(wèn)題二:提交了 vendor把第三方包的代碼提交到了自己的代碼庫(kù)里,導(dǎo)致代碼庫(kù)過(guò)大,拉取速度慢,并且無(wú)法跟進(jìn)第三方包的升級(jí)。所以,應(yīng)該使用.gitignore 忽略vendor 目錄。 解決方案:刪除 vendor,執(zhí)行 composer install,再把 composer.lock 提交到代碼庫(kù)。 結(jié)果報(bào)錯(cuò): 1.使用了廢棄的包; 查看 PHP 官方文檔可以發(fā)現(xiàn):PHP 7.4 不贊成使用花括號(hào)語(yǔ)法來(lái)訪問(wèn)數(shù)組元素和字符串偏移量。 修改之后即可解決,從這個(gè)技術(shù)細(xì)節(jié)可以看出此開源項(xiàng)目無(wú)法跟上 PHP 官方的版本升級(jí),在我們做技術(shù)選型時(shí)要避免使用這種落后的項(xiàng)目、框架,而應(yīng)使用全球知名框架,能夠緊跟語(yǔ)言官方版本升級(jí),目前 PHP 7.1 已經(jīng)廢棄,7.2 即將結(jié)束維護(hù)升級(jí),建議大家使用 7.4 。 修改 composer 包如果需要修改 vendor 中的第三方包,有兩個(gè)辦法: 1.Fork:修改代碼→制作補(bǔ)丁,自己用 → 發(fā)起合并請(qǐng)求,回饋開源; Lint:增量檢查代碼規(guī)范清理了第三方代碼之后,可以通過(guò) Lint(代碼靜態(tài)分析工具)程序掃描自己的代碼,PHP Lint 常用的是 CodeSniffer,內(nèi)置知名的「PSR12」規(guī)范,包括很多規(guī)則,比如:
老項(xiàng)目有成千上萬(wàn)的報(bào)錯(cuò),一次難以清理干凈,建議使用增量檢查,具體請(qǐng)?jiān)L問(wèn) CODING 幫助文檔,搜索「增量檢查」。 PHP 自動(dòng)化測(cè)試自動(dòng)化測(cè)試要點(diǎn)可測(cè)性:不要在系統(tǒng)中使用系統(tǒng)時(shí)間、隨機(jī)數(shù)、實(shí)例化對(duì)象。 PHPUnit 在自動(dòng)化測(cè)試時(shí),可同時(shí)生成測(cè)試覆蓋率的 HTML 報(bào)告,可以看到哪一行代碼沒有覆蓋。這種報(bào)告包含代碼,所以需要私有訪問(wèn),可使用 CODING 通用報(bào)告功能,在持續(xù)集成中自動(dòng)上傳即可。 PHP 代碼自動(dòng)生成 API 文檔在項(xiàng)目開發(fā)中,最好讓代碼先行,在代碼里寫注釋,這樣可以保證注釋與代碼一起維護(hù),然后通過(guò)工具自動(dòng)生成文檔。 在持續(xù)集成中自動(dòng)生成文檔,可上傳到 CODING API 文檔中,支持團(tuán)隊(duì)成員直接訪問(wèn)、加密分享。 |
|