更新時間:2019-08-07 10:06:43 來源:動力節(jié)點(diǎn) 瀏覽2660次
編輯導(dǎo)語:三十余年來,中國憑借“后發(fā)優(yōu)勢”“彎道超車”使國民經(jīng)濟(jì)得到了跨越式的發(fā)展,在信息技術(shù)領(lǐng)域更是搭上了互聯(lián)網(wǎng)爆發(fā)的快車,如今儼然已是世界頂尖的信息產(chǎn)業(yè)大國。但是,我們發(fā)展到現(xiàn)在,信息產(chǎn)業(yè)和傳統(tǒng)行業(yè)一樣,也面臨著轉(zhuǎn)型升級的壓力,淘汰落后生產(chǎn)力,提升服務(wù)水平,展開供給側(cè)改革是信息技術(shù)相關(guān)行業(yè)今后發(fā)展的必由之路,也是所有信息技術(shù)從業(yè)者必須重視的頭等大事,對軟件產(chǎn)業(yè)來說,代碼質(zhì)量和軟件質(zhì)量的提升則是重中之重。
在Java世界里編寫高質(zhì)量代碼并非易事,各種開源代碼檢測工具也對各種技術(shù)細(xì)節(jié)進(jìn)行了規(guī)定,Checkstyle里有134項,F(xiàn)indBugs里有408項,PMD里有368項,面對這么多的規(guī)則,可能有人會說這還怎么下手寫代碼啊?是的,學(xué)習(xí)與研究這些枯燥無味的規(guī)則估計就要花掉很多時間,而且即使學(xué)習(xí)了也不一定記住,況且有些是站在技術(shù)研究者的角度而做出的規(guī)則,實(shí)際商業(yè)上根本用不到。我們將Java代碼質(zhì)量和軟件質(zhì)量在下面概括的介紹一下。
1什么是代碼質(zhì)量
質(zhì)量是產(chǎn)品或服務(wù)的總體特征與特性,基于此來滿足明確或隱含的需要能力。簡而言之,質(zhì)量是滿足需求的能力。因此,代碼質(zhì)量也是滿足一種需求的能力,這里的需求來源不僅包括客戶,也包括各種技術(shù)人員(程序員,測試員,維護(hù)員等)。
2什么是軟件質(zhì)量
軟件質(zhì)量是滿足客戶軟件需求的能力。高質(zhì)量的軟件產(chǎn)品應(yīng)該符合用戶需求、運(yùn)行穩(wěn)定、性能優(yōu)異、維護(hù)簡單、文檔齊全。
軟件質(zhì)量一般具有以下特性:
1.可用性,是指系統(tǒng)能夠正常運(yùn)行的時間比例,除了維護(hù)時間外,一般都要求系統(tǒng)可以正常提供服務(wù)。
2.功能性,是指系統(tǒng)能為我們完成所期望工作的能力。
3.易用性,是衡量用戶使用軟件產(chǎn)品完成指定任務(wù)的難易程度,也就是用戶體驗(yàn),系統(tǒng)的柔軟度與親和力。
4.性能,是指系統(tǒng)的響應(yīng)能力,即要經(jīng)過多長時間才能對某個事件作出響應(yīng),或者在某段時間內(nèi)系統(tǒng)所能處理的事件個數(shù)。
5.可靠性,是指系統(tǒng)在錯誤面前或者錯誤使用的情況下維持軟件系統(tǒng)功能特性的能力。
6.健壯性,是指在業(yè)務(wù)處理或者運(yùn)行環(huán)境中,系統(tǒng)能夠承受的壓力或者變更能力。
7.安全性,是指系統(tǒng)向合法用戶提供服務(wù)的同時,能夠阻止非授權(quán)用戶使用的企圖或者拒絕服務(wù)的能力。
8.可維護(hù)性,是指體系結(jié)構(gòu)擴(kuò)充或者對應(yīng)需求變更的能力。
3代碼質(zhì)量VS軟件質(zhì)量
代碼質(zhì)量VS軟件質(zhì)量
小故事:程序猿的需求
有人問程序猿還有什么需求?
猿甲:客戶是上帝,我們又不是。
猿乙:可我曾聽一個程序猿說,他編寫代碼有時能體會到上帝造物的感覺(對客戶需求的滿足),也能體會到別的程序員的心聲(對既存代碼的理解)……
這個故事告訴我們:
一,我們研發(fā)的軟件就是要滿足客戶的需求,如果代碼跟客戶需求不相應(yīng),不能滿足客戶的需求,就對軟件的質(zhì)量造成了影響,即使代碼寫的漂亮,也不算是高質(zhì)量。
二,用戶的需求變動或者增加,程序員需要改動代碼,“看的懂容易改”就是程序員的需求。這種需求雖然對軟件質(zhì)量沒有直接的影響,但是會造成將來的時間與人力成本。
所以說,代碼質(zhì)量是軟件質(zhì)量的組成部分。開發(fā)人員寫的代碼質(zhì)量越高,Bug就會越少,即使有Bug也容易找到;反之代碼質(zhì)量越低,Bug就會越多。
軟件質(zhì)量不好遲早有一天會被用戶拋棄;同樣,代碼質(zhì)量不好遲早有一天會被它的需求來源所放棄,最糟糕的狀況是,自己被自己的代碼拋棄,陷入泥潭無法自拔。
4代碼質(zhì)量優(yōu)化理論
高質(zhì)量代碼一般具有以下特性:
1.高可用性:正確、有效、及時地滿足客戶需求,寫出能完成軟件的功能需求的代碼。
2.高可讀性:高可讀性就是層次清晰又有良好注釋的代碼。代碼是具有個人色彩的,每個人的思想是不同的,敲出來的代碼不會是完全相同的。繁冗的代碼,特別是沒有注釋的代碼,相信大家都不會很樂意去讀的。
3.高可測試性:是指軟件發(fā)現(xiàn)故障并隔離定位其故障的能力特性,以及在一定的時間或成本的前提條件下,進(jìn)行測試的能力。
4.高可擴(kuò)展性:這一點(diǎn)對于有多年工作經(jīng)驗(yàn)的程序員來說認(rèn)識會較深,因?yàn)榭蛻舻男枨笫请S時變化的,而所編寫的代碼就要滿足客戶的這種需求,即預(yù)留以后變更代碼的空間。
5.高可維護(hù)性:軟件研發(fā)完了,是研發(fā)階段的終止,卻是軟件運(yùn)營維護(hù)的開始,這需要一個團(tuán)隊長期運(yùn)作,高可維護(hù)性的目的就是要節(jié)省運(yùn)營維護(hù)成本。
以上特征都是我們進(jìn)行質(zhì)量優(yōu)化的目標(biāo),也是優(yōu)化之后給我們帶來的真實(shí)之利,其之間的關(guān)系如圖。可用性可以說是代碼優(yōu)化的最基本要求,只有首先滿足了可用性,我們才有資格談其他特性;如果代碼不可讀,就無從談起可維護(hù),因此可讀性是可維護(hù)性的基礎(chǔ);如果可測試性差,那么修改的代碼都無法測試,何談維護(hù);如果代碼不可以擴(kuò)展,成為一個僵化的系統(tǒng),那么系統(tǒng)會很快被遺棄。而且在整個軟件生命周期中,運(yùn)營維護(hù)費(fèi)用所占比例高達(dá)80%。由此可見,可維護(hù)性是我們代碼優(yōu)化的理論基礎(chǔ),也是代碼優(yōu)化的終極目標(biāo)。高可維護(hù)性,意味著系統(tǒng)可以不斷向前發(fā)展,升級優(yōu)化,與時俱進(jìn)。
代碼質(zhì)量目標(biāo)
提高代碼質(zhì)量手段
提高代碼質(zhì)量有兩大法寶:
第一、精細(xì)測試:外部表現(xiàn)
第二、代碼檢查:內(nèi)部功底
軟件測試是保證及提高代碼質(zhì)量主要途徑之一:可通過功能測試、性能測試、壓力測試、異常測試來保證可用性。
多途徑代碼檢查也是提高代碼質(zhì)量必不可少的一環(huán)。通過各種檢測工具以及人工檢查不僅可以保證代碼的可維護(hù)性,也可以在測試之前提早發(fā)現(xiàn)Bug,降低研發(fā)成本,而且代碼檢查已深入到程序邏輯、內(nèi)存檢測、復(fù)雜度、優(yōu)化建議等高級層面。
除了以上兩種手段,還有兩個影響代碼質(zhì)量的重要要素:
一是我們程序員自身的代碼質(zhì)量意識,也即個人品牌理念——我們應(yīng)該有主人翁精神,不但應(yīng)該為自己所擔(dān)任的產(chǎn)品或項目感到驕傲和自豪,更應(yīng)該具備主動為自己所參與的代碼質(zhì)量負(fù)責(zé)的精神。
二是項目品質(zhì)管理,保證代碼的質(zhì)量必須有良好的代碼質(zhì)量管理技術(shù)。這涉及到項目管理的知識與技能,我們官方網(wǎng)站有這方面的培訓(xùn)課程,感興趣的讀者可以到網(wǎng)站查詢。
如果你也想在IT行業(yè)拿高薪,可以參加動力節(jié)點(diǎn)的Java架構(gòu)師班,選擇最適合自己的課程學(xué)習(xí),技術(shù)大牛親授,進(jìn)入名企拿高薪不再是問題。我們的課程內(nèi)容有:Java工程化、高性能及分布式、高性能、深入淺出。高架構(gòu)。性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析和大數(shù)據(jù)等多個知識點(diǎn)。如果你想拿高薪的,想學(xué)習(xí)的,想就業(yè)前景好的,想跟別人競爭能取得優(yōu)勢的,想進(jìn)阿里面試但擔(dān)心面試不過的,你都可以來。
什么樣的適合學(xué)Java架構(gòu)師!
1、具有1-5工作經(jīng)驗(yàn)的,面對目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的
2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內(nèi)進(jìn)修、跳槽拿高薪的
3、如果沒有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對Java工作機(jī)制,常用設(shè)計思想,常用Java開發(fā)框架掌握熟練的
4、覺得自己很厲害,一般需求都能搞定。但是所學(xué)的知識點(diǎn)沒有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的
目標(biāo)已經(jīng)有了,下面就看行動了!記住:學(xué)習(xí)永遠(yuǎn)是自己的事情,你不學(xué)時間也不會多,你學(xué)了有時候卻能夠使用自己學(xué)到的知識換得更多自由自在的美好時光!時間是生命的基本組成部分,也是萬物存在的根本尺度,我們的時間在那里我們的生活就在那里!我們價值也將在那里提升或消弭!Java程序員,加油吧!
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743