李菊 馬軍超 陳寅
關(guān)鍵詞:代碼質(zhì)量;應(yīng)用型人才;實(shí)驗(yàn)內(nèi)容;實(shí)驗(yàn)結(jié)果評價;實(shí)驗(yàn)教學(xué)方式
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2023)08-0074-03
1 引言
隨著互聯(lián)網(wǎng)的快速發(fā)展,軟件產(chǎn)品的開發(fā)復(fù)雜度越來越高,各軟件企業(yè)也開始逐步重視軟件的代碼質(zhì)量。無論是阿里發(fā)布的《Java開發(fā)手冊》,還是華為投入20億美元,計劃五年提高代碼質(zhì)量,都充分突顯出軟件企業(yè)對軟件代碼質(zhì)量的重視程度[1]。高質(zhì)量代碼特性體現(xiàn)為:正確性、可讀性、高效性、穩(wěn)定性、可維護(hù)性、可擴(kuò)展性,因此編碼不僅要實(shí)現(xiàn)完整的功能,而且還要保證代碼具有良好的可讀性、高效性、穩(wěn)定性、可維護(hù)性、可擴(kuò)展性。好的編碼能力及編碼規(guī)范習(xí)慣是高質(zhì)量代碼特性的保證,因此必須提升編碼能力及養(yǎng)成好的編碼規(guī)范習(xí)慣。
目前我國的高等教育分為研究型大學(xué)、高職院校、應(yīng)用型大學(xué)三種類型,應(yīng)用型大學(xué)與其他兩種類型的課程目標(biāo)不同,應(yīng)用型大學(xué)的課程以緊密對接企業(yè)人才需求,培養(yǎng)理論扎實(shí)、實(shí)踐能力強(qiáng)的高層次應(yīng)用型人才為目標(biāo),強(qiáng)調(diào)應(yīng)用理論知識解決實(shí)際問題的實(shí)踐能力,突出課程應(yīng)用性[2-4]。因此必須要基于企業(yè)人才的發(fā)展新需求,不斷對課程的教學(xué)內(nèi)容和教學(xué)方式進(jìn)行改革,才能適應(yīng)專業(yè)的發(fā)展,為企業(yè)人才需求提供強(qiáng)有力的支撐。
數(shù)據(jù)結(jié)構(gòu)與算法是計算機(jī)相關(guān)專業(yè)的核心課程,也是促進(jìn)計算機(jī)相關(guān)專業(yè)學(xué)生軟件設(shè)計水平提高的關(guān)鍵課程。目前應(yīng)用型大學(xué)的該課程主要借鑒研究型大學(xué)的教學(xué)成果及經(jīng)驗(yàn),在教學(xué)內(nèi)容和考核方式等方面基本保持一致。然而隨著軟件技術(shù)的快速發(fā)展,及企業(yè)對軟件人才的素質(zhì)更高的要求,在實(shí)際實(shí)驗(yàn)教學(xué)過程中,逐漸發(fā)現(xiàn)一些影響學(xué)生編程能力培養(yǎng)及編碼規(guī)范養(yǎng)成的問題;因此為了培養(yǎng)適應(yīng)專業(yè)發(fā)展需求的應(yīng)用型人才,急需對現(xiàn)有應(yīng)用型大學(xué)的數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)進(jìn)行教學(xué)改革。
2 數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)教學(xué)中存在的問題
應(yīng)用型大學(xué)的數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)教學(xué),主要存在以下三方面問題,這些問題嚴(yán)重影響著學(xué)生編程能力的提高及編程規(guī)范的養(yǎng)成。
2.1 實(shí)驗(yàn)內(nèi)容過于陳舊,與實(shí)際應(yīng)用結(jié)合不緊密,實(shí)際編碼能力提升有待改善
應(yīng)用型大學(xué)的人才培養(yǎng),更應(yīng)強(qiáng)調(diào)應(yīng)用理論解決實(shí)際問題的能力,強(qiáng)調(diào)工程實(shí)踐能力。目前數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)上機(jī)練習(xí)的內(nèi)容多為傳統(tǒng)驗(yàn)證性內(nèi)容,局限于將課本的算法偽代碼驗(yàn)證實(shí)現(xiàn),雖然通過驗(yàn)證性實(shí)驗(yàn),學(xué)生對數(shù)據(jù)結(jié)構(gòu)與算法的原理和操作有了一定的了解,但不明白其應(yīng)用價值[5]。例如表1中的上機(jī)實(shí)驗(yàn)題為順序表操作實(shí)驗(yàn)的內(nèi)容,其他實(shí)驗(yàn)內(nèi)容也類似,內(nèi)容大多為驗(yàn)證性,且內(nèi)容過于陳舊,導(dǎo)致學(xué)生容易出現(xiàn)抄襲傾向。實(shí)驗(yàn)缺少與實(shí)際應(yīng)用結(jié)合的綜合性內(nèi)容,數(shù)據(jù)結(jié)構(gòu)與算法理論較少與實(shí)際應(yīng)用場景相結(jié)合,在完成實(shí)踐任務(wù)后并不知道如何應(yīng)用到實(shí)際項目中,出現(xiàn)理論與實(shí)際脫節(jié),沒有達(dá)到學(xué)以致用的目的。
2.2 實(shí)驗(yàn)結(jié)果評價只注重代碼功能的正確性,不注重編碼規(guī)范問題
在軟件行業(yè),項目開發(fā)均以團(tuán)隊的形式開展。在項目開發(fā)過程中,團(tuán)隊成員的良好編程規(guī)范習(xí)慣對成員之間的交流非常便利及高效,對軟件開發(fā)過程中的測試工作及其后期數(shù)據(jù)維護(hù)可以起到重要的作用[6]。目前數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)結(jié)果評價針對學(xué)生提交的源代碼,只對編譯及實(shí)現(xiàn)功能的正確性進(jìn)行判別,而往往忽視了代碼規(guī)范的問題,無法對學(xué)生的編碼是否規(guī)范進(jìn)行判別,學(xué)生的編碼規(guī)范意識弱,導(dǎo)致代碼可讀性差,甚至代碼低效、穩(wěn)定性及可擴(kuò)展性差,代碼規(guī)范性沒法保證。例如圖1為學(xué)生的部分代碼,存在函數(shù)的輸入變量i含義不明確、for和else后缺少大括號、缺少注釋等規(guī)范性問題,導(dǎo)致代碼可讀性較差。
2.3 實(shí)驗(yàn)教學(xué)中缺少學(xué)生代碼評審環(huán)節(jié),缺乏學(xué)生之間的知識共享
目前所有的IT公司都離不開代碼評審過程,代碼評審是代碼問題發(fā)現(xiàn)的重要過程,通過代碼評審,分享者可以得到其他人的反饋,發(fā)現(xiàn)可能存在的問題和需要改進(jìn)的部分,評審者也可以從他人的代碼中學(xué)到新東西[7]。但現(xiàn)有傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)教學(xué),多以上機(jī)實(shí)驗(yàn)為主,實(shí)驗(yàn)教學(xué)過程中,缺少學(xué)生代碼評審,教師與學(xué)生之間、學(xué)生與學(xué)生之間缺少分享交流。大多數(shù)學(xué)生認(rèn)為上機(jī)實(shí)驗(yàn)運(yùn)行的功能結(jié)果正確,代碼質(zhì)量即符合要求,無法從可讀性、高效性、穩(wěn)定性、可維護(hù)性、可擴(kuò)展性等方面,進(jìn)一步審視代碼質(zhì)量,導(dǎo)致無法得到除正確性以外的其他反饋,更無法從其他同學(xué)分享到更優(yōu)秀的代碼。例如圖1所示為學(xué)生的代碼可讀性較差,同時由于缺少評審交流環(huán)節(jié),學(xué)生不僅發(fā)現(xiàn)不了代碼可讀性差的問題,而且很難學(xué)習(xí)到可讀性更好的代碼編寫方式。
3 數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)改革措施
為了更好地對接企業(yè)人才需求,針對當(dāng)前數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)課程中存在的問題,本次教學(xué)改革結(jié)合企業(yè)對軟件代碼質(zhì)量的需求,以編碼能力提升和編碼規(guī)范養(yǎng)成為目標(biāo),圍繞數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)課程的實(shí)驗(yàn)內(nèi)容、教學(xué)方法、教學(xué)評價三方面提出具體的改革措施。具體包括以下:
3.1 豐富實(shí)驗(yàn)題庫,加強(qiáng)理論與實(shí)踐的聯(lián)系
現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)題庫題目數(shù)量較少,以深圳技術(shù)大學(xué)為例,該校的本課程的實(shí)驗(yàn)題庫僅有150多道題,每個知識點(diǎn)最多5道,這些題目大多偏向于驗(yàn)證性,多年未更新,較少與實(shí)際應(yīng)用相結(jié)合。對于實(shí)驗(yàn)題庫,增加具有實(shí)際應(yīng)用場景的綜合性題,針對順序表、鏈表、字符串匹配、棧、隊列、二叉樹等知識點(diǎn),一方面,從國內(nèi)外知名企業(yè)搜集具有實(shí)際應(yīng)用場景的面試或機(jī)試題,加入新題到題庫;另一方面,結(jié)合實(shí)際應(yīng)用場景,設(shè)計新題到題庫。通過綜合性實(shí)驗(yàn)內(nèi)容,增強(qiáng)學(xué)生應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法理論解決實(shí)際問題的編碼能力[8-9]。例如表2為增加綜合類型實(shí)驗(yàn)后的順序表操作實(shí)驗(yàn)設(shè)計,其他實(shí)驗(yàn)類似。
3.2 增加代碼規(guī)范評價結(jié)果,促進(jìn)代碼編程規(guī)范養(yǎng)成
針對學(xué)生的代碼規(guī)范性無法保證的問題,在判題系統(tǒng)中加入代碼規(guī)范性評價功能。參考華為、騰訊、谷歌、阿里等IT企業(yè)的編碼規(guī)范,從學(xué)生源代碼的布局類、命名類、注釋類、邏輯類、冗余類、復(fù)雜類、內(nèi)存類等方面的編程規(guī)范進(jìn)行評價判分,表3為代碼規(guī)范評價的主要內(nèi)容。通過評價結(jié)果,不僅可以讓學(xué)生意識到編碼規(guī)范的重要性,還可以讓學(xué)生發(fā)現(xiàn)自己代碼存在的規(guī)范性問題,從而促進(jìn)編碼規(guī)范的養(yǎng)成。圖2 為增加代碼規(guī)范判別功能后的實(shí)驗(yàn)結(jié)果評價界面,點(diǎn)擊代碼規(guī)范分,可以查看到代碼規(guī)范判別詳情,發(fā)現(xiàn)存在的代碼規(guī)范問題。
3.3 增加代碼評審教學(xué)環(huán)節(jié),發(fā)現(xiàn)問題及學(xué)習(xí)優(yōu)秀
鑒于代碼評審對代碼質(zhì)量提升的重要性,參考IT 企業(yè)的代碼評審做法,在實(shí)驗(yàn)教學(xué)增加代碼評審環(huán)節(jié)。每次實(shí)驗(yàn)開始前安排一組同學(xué),針對上節(jié)實(shí)驗(yàn)的代碼,進(jìn)行講解分享,老師和同學(xué)根據(jù)表4中的評審方案進(jìn)行評審,分享及評審?fù)瓿珊螅瑢残詥栴}進(jìn)行總結(jié),對好的做法進(jìn)行提煉和推廣。這樣不僅可以發(fā)現(xiàn)可讀性、高效性、穩(wěn)定性、可維護(hù)性、可擴(kuò)展性等判題系統(tǒng)無法發(fā)現(xiàn)的問題,而且可以學(xué)習(xí)優(yōu)秀編碼案例,從而促進(jìn)編碼能力提升和編碼規(guī)范養(yǎng)成。
4 改革效果
深圳技術(shù)大學(xué)是廣東省和深圳市高起點(diǎn)、高水平、高標(biāo)準(zhǔn)建設(shè)的本科層次應(yīng)用型大學(xué),通過對數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)的實(shí)驗(yàn)內(nèi)容、實(shí)驗(yàn)結(jié)果評價、實(shí)驗(yàn)教學(xué)方式三方面的教學(xué)改革實(shí)踐,促進(jìn)了深圳技術(shù)大學(xué)學(xué)生的編碼能力提升及編碼規(guī)范養(yǎng)成,代碼質(zhì)量得到顯著提升,更滿足企業(yè)人才需求。以下將從多方面進(jìn)行分析。
(1) 期末成績。在考試難度相當(dāng)?shù)那闆r下,將深圳技術(shù)大學(xué)2019級和2020級物聯(lián)網(wǎng)專業(yè)的學(xué)生期末成績進(jìn)行對比,由表5可知,平均期末成績提高8分,代碼規(guī)范得分提高4分,成績差異顯著,因此教學(xué)改革有助于編碼能力提升和編碼規(guī)范養(yǎng)成。
(2) 競賽成績。2022年深圳技術(shù)大學(xué)學(xué)生在多個全國性軟件類大賽中有了新的突破,在“藍(lán)橋杯大賽”中首獲全國一等獎3項、全國二等獎3項、全國三等獎7項,在首次參加的“RoboCom機(jī)器人開發(fā)者大賽”全國總決賽中獲全國一等獎2項、全國二等獎6項、全國三等獎7項,因此教學(xué)改革以后,深圳技術(shù)大學(xué)學(xué)生的代碼質(zhì)量得到了顯著提升。
(3) 就業(yè)率。實(shí)施教改以后,深圳技術(shù)大學(xué)計算機(jī)相關(guān)專業(yè)學(xué)生有了更強(qiáng)的專業(yè)能力,就業(yè)率從2021 年的70%提升至2022年的79%,就業(yè)率有了顯著提升,因此教學(xué)改革以后,深圳技術(shù)大學(xué)培養(yǎng)的計算機(jī)人才更滿足企業(yè)需求。
5 結(jié)束語
本文針對應(yīng)用型大學(xué)的數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)課程存在的問題,從實(shí)驗(yàn)內(nèi)容、實(shí)驗(yàn)結(jié)果評價、實(shí)驗(yàn)教學(xué)方式三方面入手,提出了具體的改革措施。教學(xué)改革實(shí)踐結(jié)果表明,本文提出的教改措施,能較好促進(jìn)應(yīng)用型大學(xué)的學(xué)生編碼能力及編碼規(guī)范的養(yǎng)成,提升學(xué)生代碼質(zhì)量,更符合企業(yè)對軟件人才的需求。為了進(jìn)一步提升學(xué)生的軟件能力,在今后的教學(xué)中,仍將不斷優(yōu)化教學(xué)方案,以讓應(yīng)用型大學(xué)培養(yǎng)出更多符合企業(yè)需求的應(yīng)用型人才。