程序員如何寫(xiě)出好代碼?

作為一名程序員,我渴望我加入的應(yīng)該要是一支“30%的時(shí)間在寫(xiě)代碼,而70%的時(shí)間在喝著咖啡討論著如何將產(chǎn)品做好”的團(tuán)隊(duì)。我覺(jué)得軟件工作應(yīng)該成為一項(xiàng)技術(shù)和藝術(shù)融合的高智力活動(dòng),我們的項(xiàng)目經(jīng)理應(yīng)該是一個(gè)高度理解質(zhì)量、范圍和進(jìn)度客觀規(guī)律的明白人,“高效工作,快樂(lè)生活”才應(yīng)該是我們的座右銘。

創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶(hù)提供滿(mǎn)意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的10年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶(hù),如水處理設(shè)備等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶(hù)的一致贊賞。

可現(xiàn)實(shí)情況卻是,團(tuán)隊(duì)在一邊超負(fù)荷的做著需求,一邊改著沒(méi)完沒(méi)了的Bug。過(guò)點(diǎn)前夕,項(xiàng)目經(jīng)理熬著通紅通紅的眼睛盯著我們整晚整晚的加班,質(zhì)量專(zhuān)員一遍一遍的催促質(zhì)量數(shù)據(jù)還不夠,軟件工作已經(jīng)無(wú)可挽回的淪落成了體力勞動(dòng),別說(shuō)快樂(lè)生活,生活都沒(méi)了。

好吧,以上可能都對(duì),項(xiàng)目經(jīng)理和質(zhì)量專(zhuān)員是一個(gè)不懂客觀規(guī)律并且毫無(wú)同情之心的大魔頭,讓我們程序員們毫無(wú)尊嚴(yán)卑賤的活著。

只是,有句話(huà)憋了很久了:“醒醒吧,所有的這些,都是因?yàn)槟愕拇a寫(xiě)的太爛,你制造了太多的Bug!”。你可能會(huì)抱怨這分明是需求變更太快,領(lǐng)導(dǎo)計(jì)劃太緊導(dǎo)致的。嗯,聽(tīng)著挺有道理,但是要知道需求變更本身就是軟件的客觀規(guī)律,而領(lǐng)導(dǎo)要求進(jìn)度,呵呵,你也可以認(rèn)為是客觀規(guī)律。

所以 陜西優(yōu)就業(yè)小編今天就給大家分享一些實(shí)實(shí)在在的經(jīng)驗(yàn)和方法。讓大家多看一點(diǎn)就多獲得一點(diǎn)實(shí)際的價(jià)值。也可加入我們的 IT技能交流群:838940752備注:IT,和大家一起學(xué)習(xí)探討。更重要的是還有免費(fèi)學(xué)習(xí)資料分享。

程序員如何寫(xiě)出好代碼?

1、不要一上來(lái)就開(kāi)始寫(xiě)代碼

你可能性子急,也可能早已按耐不住躍躍欲試昨天剛學(xué)會(huì)的一個(gè)編程小技巧,我想要告訴你的是,不急,收起你那磨刀霍霍的表情,在你拿到需求準(zhǔn)備寫(xiě)出你第一行代碼之前還有更重要的事情要做。我想怎么強(qiáng)調(diào)這件事情的重要性都不為過(guò),在我以前寫(xiě)的自己非常滿(mǎn)意的代碼經(jīng)歷中,我都采用了這個(gè)方法,它能消滅原來(lái)可能會(huì)被測(cè)試提的90%的Bug單,甚至做到零缺陷,當(dāng)然做到這點(diǎn)可能需要一個(gè)過(guò)程。

拿到需求之后你首先要問(wèn)下自己對(duì)需求是不是已經(jīng)充分理解了,得到肯定的回答之后,我們就可以開(kāi)始了:

先在你忙碌的工作中,找出你能完全掌控的一個(gè)小時(shí)時(shí)間段,這一個(gè)小時(shí)完全屬于你自己,保證這一個(gè)小時(shí)不會(huì)有任何打擾,或者任何能影響到你執(zhí)行不下去這個(gè)方法的打擾。要記住這一個(gè)小時(shí)非常重要,比你后面要執(zhí)行的所有活動(dòng)的時(shí)間都重要,它絕對(duì)值得。

在第一張白紙的上方寫(xiě)下“該需求特性的正常流程和影響范圍”,然后在白紙下方逐條開(kāi)始寫(xiě)下該需求特性正常流程包含的內(nèi)容,大概會(huì)使用到哪些庫(kù)函數(shù),會(huì)提供出哪些接口,是否會(huì)影響版本升級(jí),是否影響資源文件,是否影響原有的接口等等。

在第二張白紙上方寫(xiě)下“該需求特性所有的異常場(chǎng)景和本人以往經(jīng)常會(huì)犯的一些錯(cuò)誤點(diǎn)”,然后在白紙下方一條一條的開(kāi)始往下寫(xiě)。

不斷重復(fù)第2、3步。

你可能會(huì)覺(jué)得這不就跟寫(xiě)的需求澄清材料差不多嗎,我要告訴你的是這是兩回事,它不是一項(xiàng)質(zhì)量專(zhuān)員要求你做的質(zhì)量過(guò)程活動(dòng),這是你自己和自己之間的一次深層次對(duì)話(huà),這不需要告訴任何人,不需要向其他領(lǐng)域輸出任何交付物,這是對(duì)自己要寫(xiě)出優(yōu)秀代碼的一次自我驅(qū)動(dòng)。

一開(kāi)始你可能會(huì)覺(jué)得很難,寫(xiě)幾條就寫(xiě)不出來(lái)了,或者閃過(guò)“這玩意兒是不是真的有用”的念頭,不用著急,起身去窗戶(hù)邊呼吸一口新鮮空氣或者去打杯水喝,總之不要中斷,除非辦公室著火了不要去干讓這件事繼續(xù)不下去的事情。當(dāng)你慢慢往下寫(xiě)到第20或者第30條答案的時(shí)候,你可能突然會(huì)有一種“這么隱晦的一個(gè)異常點(diǎn)都被我發(fā)現(xiàn)了,簡(jiǎn)直太牛了!”的情感涌出,這個(gè)時(shí)候你會(huì)暗暗驚呼有點(diǎn)難以抑制自己的興奮,這說(shuō)明你快要接近成功完成了,后面每寫(xiě)出來(lái)的一條都會(huì)讓自己感動(dòng)。記住,中間不要放棄,你堅(jiān)持下去的決定會(huì)將這一個(gè)小時(shí)變成你整個(gè)需求實(shí)現(xiàn)當(dāng)中最重要的一個(gè)小時(shí)。

2、忘掉后面還有該死的質(zhì)量活動(dòng)

所有編碼之外的質(zhì)量活動(dòng),都是基于公司對(duì)于你寫(xiě)代碼水平的不信任產(chǎn)生的。也就是說(shuō)公司花了大量的錢(qián)招來(lái)質(zhì)量專(zhuān)員、網(wǎng)元測(cè)試、解決方案測(cè)試這些人都是因?yàn)槟銢](méi)把代碼寫(xiě)好造成的浪費(fèi)。

常見(jiàn)一些開(kāi)發(fā)人員,剛來(lái)的時(shí)候?qū)|(zhì)量專(zhuān)員安排的質(zhì)量活動(dòng)頗有微詞,“我以前公司做項(xiàng)目根本不需要做這些東西還不是一樣能把項(xiàng)目做完”,“這些質(zhì)量活動(dòng),簡(jiǎn)直就是對(duì)編碼時(shí)間的侵占”。說(shuō)這些都沒(méi)問(wèn)題,但是你一邊說(shuō)著這些一邊寫(xiě)完代碼后Bug就烏泱烏泱上來(lái),是不是有點(diǎn)不要臉?質(zhì)量專(zhuān)員設(shè)計(jì)的這些活動(dòng),就是為了不讓你的爛代碼一瀉千里的沖到客戶(hù)面前設(shè)計(jì)的一個(gè)個(gè)檢查站,當(dāng)你對(duì)于“寫(xiě)出好代碼”什么事都沒(méi)做,只想著取消這些質(zhì)量活動(dòng)的話(huà),就只能理解為耍流氓了。

那么,做好質(zhì)量活動(dòng)就能“寫(xiě)出好代碼”嗎? 答案是不能。質(zhì)量活動(dòng)只是質(zhì)量專(zhuān)員的監(jiān)管手段,它既不是目標(biāo)甚至也不是方法,你寫(xiě)代碼的目標(biāo)不是要滿(mǎn)足質(zhì)量活動(dòng)標(biāo)準(zhǔn),而是要追求零缺陷,也不會(huì)因?yàn)槟鉝bit測(cè)試做的好就能寫(xiě)出好代碼。你要做的一個(gè)是“不要一上來(lái)就開(kāi)始寫(xiě)代碼”,另外一個(gè)就是掌握盡量多的重構(gòu)方法,重構(gòu)思維方式,掌握重構(gòu)并不一定是要對(duì)原來(lái)代碼的重構(gòu),而是下筆之前就知道好代碼該怎么寫(xiě)。

我讓大家忘記質(zhì)量活動(dòng),不是讓大家不聽(tīng)質(zhì)量專(zhuān)員的話(huà),而是大家在寫(xiě)代碼的時(shí)候要心中存有敬畏,代碼寫(xiě)完之后所有的活動(dòng)都是你造成的浪費(fèi),你要為消除這些浪費(fèi)而竭盡全力。

3、記住,你寫(xiě)的代碼是給人看的

我之前聽(tīng)一位同事講他上一家公司的一件聽(tīng)來(lái)十分驚悚的故事,他原來(lái)公司的一位同事離職了,留下的是一堆十分復(fù)雜,看了會(huì)讓人神經(jīng)錯(cuò)亂的C++代碼,他走了之后,發(fā)現(xiàn)整個(gè)項(xiàng)目組的人沒(méi)有一個(gè)人能接手得了他的模塊,項(xiàng)目經(jīng)理不得不高價(jià)加請(qǐng)客吃飯的方式讓他過(guò)來(lái)給全項(xiàng)目組的人講兩天他的代碼。 這個(gè)家伙大有“看吧,只有我才能搞定”的“衣錦還鄉(xiāng)”姿態(tài)。我好奇的是這個(gè)項(xiàng)目經(jīng)理為什么沒(méi)有盡早的開(kāi)除他,簡(jiǎn)直就應(yīng)該報(bào)警啊。

好的代碼是讓人看來(lái)賞心悅目的,任何能力不夠或者炫技成分的增加人的閱讀障礙的行為都需要被改進(jìn),你能不能三兩句話(huà)就能說(shuō)清楚你自己寫(xiě)出來(lái)的代碼的脈絡(luò),當(dāng)然這同樣涉及到你要掌握盡量多的重構(gòu)方法和重構(gòu)思維方式。

另外還有一個(gè)自我評(píng)判的標(biāo)準(zhǔn),就是你捫心自問(wèn)一下,“你寫(xiě)了這么多代碼,你曾經(jīng)為之動(dòng)心過(guò)嗎?”你是否寫(xiě)完之后會(huì)忍不住的反復(fù)閱讀自己寫(xiě)完的代碼,并連連暗暗驚嘆代碼之美?

作為一名程序員,希望在你某天離開(kāi)公司后回想起的若干個(gè)開(kāi)心時(shí)刻中,有一個(gè)會(huì)是因?yàn)槟忝鎸?duì)自己剛剛出爐了一份讓自己心動(dòng)的代碼的那份感動(dòng),而不要成為上面提到的那個(gè)“離開(kāi)后,公司才知道他有多么重要”的家伙。

4、現(xiàn)在開(kāi)始,刻意練習(xí)

你是否發(fā)現(xiàn)自己長(zhǎng)期維持著“剛剛好能完成story”的代碼水平,寫(xiě)了好幾年代碼仍然會(huì)被測(cè)試人員追著屁股提單?種種疑惑是因?yàn)榇a能力的提高跟你寫(xiě)了多少年代碼沒(méi)有直接關(guān)系,你需要做的是刻意練習(xí)。

比如把我前面提到的01、02、03中提到的方法反復(fù)練習(xí),或者把你自己琢磨出來(lái)的方法分解成一項(xiàng)項(xiàng)的環(huán)節(jié),刻意的去練習(xí),從測(cè)試那里得到反饋,然后不斷加以改進(jìn),慢慢你就會(huì)從一個(gè)整天被測(cè)試人員追著跑的人,變成發(fā)現(xiàn)自己很容易就能達(dá)到質(zhì)量過(guò)程標(biāo)準(zhǔn)的人,再慢慢就會(huì)發(fā)現(xiàn)你寫(xiě)出來(lái)的代碼測(cè)試人員越來(lái)越難發(fā)現(xiàn)問(wèn)題,最后只要你狀態(tài)好點(diǎn)就能經(jīng)常性的寫(xiě)出優(yōu)質(zhì)的代碼。

其實(shí)有些道理我們貌似都知道,但是我覺(jué)得離真正懂得還差了兩步,第一就是你需要親身去經(jīng)歷、踐行這些道理和方法,第二就是你要能夠轉(zhuǎn)述并讓其他人也能夠明白。

本文題目:程序員如何寫(xiě)出好代碼?
文章網(wǎng)址:http://bm7419.com/article48/ipdshp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、搜索引擎優(yōu)化定制網(wǎng)站、用戶(hù)體驗(yàn)、微信小程序、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司