第三十二章 隱藏缺陷
爺爺奶奶可以不聽(tīng)老爹的話,但是老媽的話卻要仔細(xì)的考量一番。覺(jué)得老媽這番話的確是有道理后,爺爺奶奶便坐在一邊,不再言語(yǔ)。
家里的氣氛有些怪異,我覺(jué)得心里有些堵得慌。
「真的是我錯(cuò)了么?」
我不禁在心里反復(fù)地問(wèn)自己,老爹好像說(shuō)得沒(méi)有錯(cuò),如果我不是為了炫耀的話,這一切根本就不會(huì)發(fā)生。想到這里,一陣難過(guò)涌上了心頭。
「玥玥,你再跟老爹把事情的經(jīng)過(guò),理性,客觀地說(shuō)一遍?!?p> 老爹輕輕地拍了拍我的后背,盡量讓自己的聲音更加溫和。
我的難過(guò)的情緒一下子得到了舒緩,于是將整個(gè)事情完完整整地說(shuō)了一遍。
「你看哈,對(duì)于其他小朋友來(lái)說(shuō),在你這個(gè)年齡階段能夠編寫(xiě)出來(lái)游戲的確讓人有些難以置信,他們會(huì)產(chǎn)生懷疑也是理所應(yīng)當(dāng)?shù)?。如果現(xiàn)在有個(gè)小朋友說(shuō)自己會(huì)開(kāi)挖掘機(jī),你是不是也會(huì)有所懷疑呢?」
「嗯~」
我點(diǎn)了點(diǎn)頭,畢竟當(dāng)初我學(xué)習(xí)騎自行車(chē)都費(fèi)了好大的勁,跟別說(shuō)是開(kāi)挖掘機(jī)了。
「但是對(duì)于那些已經(jīng)學(xué)會(huì)開(kāi)挖掘機(jī)的小朋友來(lái)說(shuō),只是just so so。你想看,自己是不是有這種感覺(jué),認(rèn)為編程也不過(guò)如此?人啊,都是這樣,對(duì)于自己不了解的東西總是覺(jué)得高深莫測(cè),難以企及,緊接著就是自我否定。
如果這個(gè)時(shí)候突然有個(gè)人跳出來(lái)說(shuō)自己可以,你說(shuō)那些否定了自己的人能不懷疑么?否則豈不是承認(rèn)自己比別人要差一些?」
聽(tīng)老爹這么一說(shuō),好像還真是那么回事。
「至于那個(gè)同學(xué)乙嘛,長(zhǎng)期被你以極小的優(yōu)勢(shì)壓了這么久,心里有些不平衡也是正常的。咱們也大度一點(diǎn),沒(méi)事不要去刺激她。當(dāng)然了,她如果實(shí)在要找不痛快,咱們就接著,但也要注意方式方法。
所以對(duì)于今天的事情,老爹認(rèn)為在性質(zhì)上沒(méi)有錯(cuò),只是在處理的方式方法上有些欠妥。玥玥啊,要記住,不同的方式方法可能會(huì)導(dǎo)致結(jié)果出現(xiàn)本質(zhì)上的不同。
莫要得理不饒人,得饒人處且饒人?!?p> 老爹語(yǔ)重心長(zhǎng)地說(shuō)道。
說(shuō)完后,老爹就拿出手機(jī)給班主任黃老師打了個(gè)電話,說(shuō)了一些給她惹麻煩云云之類的話。
接著老爹又給同學(xué)乙的家長(zhǎng)打了電話,又是一陣道歉。
有道是伸手不打笑臉人,同學(xué)乙的家長(zhǎng)表示這是小孩子之間的事情,就將此事揭過(guò)了。
「哦,對(duì)了老爹,我給你收了一個(gè)小徒弟……」
見(jiàn)氣氛緩和,我將小弦子想跟著我們學(xué)習(xí)編程的事情告知了老爹,老爹愣了一下,估計(jì)是和我有相同的疑問(wèn),畢竟六叔叔的編程技術(shù)可不是說(shuō)著玩兒的,要教小弦子是綽綽有余。
在聽(tīng)我說(shuō)完事情后,老爹欣然同意,主動(dòng)學(xué)習(xí)這可是好事情。于是老爹順帶將小弦子問(wèn)的那幾個(gè)問(wèn)題給解答了。
從此以后,我和小弦子之間的話慢慢變多了。當(dāng)然,爭(zhēng)論也變多了。課前課后的時(shí)間我們都會(huì)交流與編程相關(guān)的東西,譬如算法之類的東西。每次都會(huì)引來(lái)不少的同學(xué)圍觀,結(jié)果發(fā)現(xiàn)聽(tīng)不懂我們說(shuō)什么后總是要問(wèn)上一句,在得知是編程相關(guān)的東西后搖搖頭離去。
時(shí)間就這么一點(diǎn)一滴的溜走了,轉(zhuǎn)眼間就來(lái)到了星期六。
一大清早,小弦子的媽媽小鹿阿姨將他送到我們家,和爸媽寒暄了幾句就開(kāi)車(chē)離開(kāi)了,說(shuō)六叔叔最近新開(kāi)發(fā)的游戲還有bug,需要多測(cè)試。
因?yàn)槎嗔艘粋€(gè)人,老爹用他的筆記本電腦做演示的時(shí)候就顯得有些擁擠了,于是將客廳中用來(lái)看電影的投影儀拿來(lái)用上了,再然后手把手地教小弦子在他自己的筆記本上搭建C開(kāi)發(fā)環(huán)境。
一切準(zhǔn)備就緒后,課程就開(kāi)始了。
「因?yàn)楦袅诉@么多天,再加上小弦子的加入,所以我先把之前的內(nèi)容給回顧一遍,有什么問(wèn)題你們直接問(wèn)哈?!?p> 于是老爹花了一個(gè)多小時(shí)的時(shí)間就以前的知識(shí)回顧了一邊,考慮到小弦子還沒(méi)有寫(xiě)過(guò)代碼,老爹還帶著我們寫(xiě)了幾個(gè)比較經(jīng)典的案例,我和小弦子都若有所得。
「好了,在開(kāi)始我們今天的內(nèi)容之前,先來(lái)看看之前玥玥寫(xiě)的推箱子的程序?!?p> 話音未落,投影儀上已經(jīng)把我之前寫(xiě)的代碼顯示出來(lái)了。
「這個(gè)程序功能已經(jīng)正常了,照道理來(lái)說(shuō)應(yīng)該是沒(méi)有問(wèn)題。但是……」
聽(tīng)到老爹說(shuō)出「但是」兩個(gè)字,我的心臟猛然收縮了一下。
「但是如果我們需要對(duì)功能進(jìn)行擴(kuò)展,或者是后期的維護(hù)就有些不方便了。我知道這么說(shuō)你們可能覺(jué)得難以理解,特別是玥玥心里多半有些不服氣。那么我現(xiàn)在用實(shí)際的場(chǎng)景來(lái)演示給你們看。
咱們首先看控制移動(dòng)這部分,switch語(yǔ)句對(duì)于上下左右按鍵的邏輯處理部分的代碼是不是十分相似?」
經(jīng)老爹這么一說(shuō),我這才發(fā)現(xiàn),原來(lái)這部分代碼除了移動(dòng)的方向有所區(qū)別外,其他的邏輯幾乎完全一樣。
「那么聽(tīng)仔細(xì)了,如果我們把游戲中人物圖片的尺寸由原來(lái)的50x50修改為20x20,將會(huì)發(fā)生什么?」
我瞬間感覺(jué)腦瓜子嗡嗡的,看著那一團(tuán)如亂麻一般的代碼,其中至少有數(shù)十處用到了圖片尺寸參數(shù),我當(dāng)然可以一處一處的修改,但是得費(fèi)很大的勁。
「不錯(cuò),從你們的表情來(lái)看,要修改起來(lái)是一件比較麻煩的事情,一處一處的修改不是什么問(wèn)題,問(wèn)題是要修改的地方太多了,萬(wàn)一漏了怎么辦?這種問(wèn)題還真不好排查!
而且現(xiàn)在的代碼量只有這么幾十行,那以后你們寫(xiě)的大項(xiàng)目代碼可能數(shù)萬(wàn)行代碼,要是也這么修改的話,我估計(jì)能把人給改吐血?!?p> 數(shù)萬(wàn)行?聽(tīng)著這個(gè)數(shù)字我都有些犯暈。
「那這種問(wèn)題應(yīng)該怎么辦呢?」
老爹拋出了他的疑問(wèn)。
我和小弦子相互看了對(duì)方一眼,然后茫然的看著老爹搖搖頭。
「如果我們把這些相似的代碼抽離出來(lái),用一個(gè)魔法爐子裝起來(lái),然后在需要使用這些代碼的地方就把爐子放在那兒。當(dāng)我們需要修改的時(shí)候只需要修改爐子里面的內(nèi)容,使用爐子的地方自然而然的就跟著變化了。如此一來(lái),需要修改的地方始終就只有一處,問(wèn)題不就解決了那么?」
我和小弦子再次看了對(duì)方一眼,臉上都露出了似懂非懂的表情。