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