【暢言】首先為人編寫程序,其次才是計算機

2020-12-17 CSDN技術社區


「首先是為人編寫程序,其次才是計算機」,這是軟體開發的基本要點,軟體的生命周期貫穿於產品的開發、測試、生產、發布、用戶使用、版本升級和後期維護等長期過程中,只有易讀、易維護的軟體代碼才具有生命力。

在實際的軟體開發過程中,可能是由於工作很忙的原因,很多開發人員只注重實現程序的基本功能,而忘記了編程規範,因此寫出來的代碼只能讓計算機看懂,人要看懂很不容易。更有甚者,有些項目組為了趕進度,明確要求組員以實現產品功能為主,代碼能夠運行起來就可以了。低要求產生低質量的代碼,既然「上頭」都這樣要求了,那還有必要寫出「讓人能夠讀懂」的代碼嗎?

如果不為人編程,帶來的後果是?

進度是趕上了,產品也交付出去了,一切看來是OK的,但問題也就來了。前方產品故障頻發,後方開發人員不停地撲火。這個時候,他們才發現之前別人寫的代碼很難讀懂,甚至連閱讀自己寫的代碼都十分的困難,真是悔不當初。如果開始的時候能夠將代碼寫規範一點,文檔配備齊全一點,何至於此?

「好」的代碼和「不好」的代碼給人的感覺是千差萬別。當我們看到優美的代碼時,會有一種想繼續研究下去的欲望,甚至會有一種覺得很享受的感覺。相反,當我們看到醜陋的代碼時,就會咬牙切齒,因為它不僅不利於閱讀,還會浪費我們很多時間,降低我們做事的效率。

一般說來,「好」的代碼和「不好」的代碼給我們的印象有如下幾種:

排版工整 VS 排版不工整

我們打開一個代碼文件的時候,最先看到的就是其排版怎樣,這也是最直觀的感覺。當代碼排版工整時,我們很容易找出其條理和邏輯,會很快理解其到底要實現什麼功能;而排版不工整的時候,我們的眼睛會覺得很累,進而影響了我們的思維。

命名規範 VS 命名不規範

在看完排版之後,我們就會看到每個函數和變量的命名。由於一般項目的代碼行數都比較多,我們不可能花很多時間去理解每個函數和變量到底是何用意,到底是拿來做什麼的。這就要求我們在編碼的時候,使函數和變量的命名具有自說明性,讓它們自己告訴讀者是做什麼用的,而不是要別人花大量時間去研讀後才能知道。這在一定程度上反映了開發人員的態度和專業化程度。

例如,一個處理消息的函數,命名為ProcessMsg和FunctionA,哪個更好呢?顯然是前者。我們只要一看到其名字,就知道它是做什麼用的。

再如,有三個變量,命名為ReturnValue、MaxNum、SumOfTwoNum,我們就能一下子明白它們有何用途。第一個變量用於作為返回值,第二個變量用來存放最大數,第三個變量用來存放兩個數之和。這太明顯了,你都可以不用去問元芳,自己就能搞清楚。而如果同樣三個變量,命名為i、j、k,你就無法一眼看出它們到底有什麼用,還要花大量的時間去閱讀代碼,甚至用幾個小時的時間,你還不知道它們有何用途。這時,你的老大來問你事情做得怎樣,你照實一說,他便說你無能。其實你是「啞巴吃黃連」,怪就怪別人沒有把代碼寫好。

注釋得當 VS 注釋不得當

閱讀代碼,我們還會注意到其是否有注釋,注釋多還是少。這也是很直觀的。

如果代碼實現的功能較為複雜,那麼添加注釋是必不可少的。在恰當的地方,使用恰當的注釋,能夠讓讀者覺得思路豁然開朗,他們會默默地在心裡感激你。注釋過少或沒有注釋是不行的,就像我們吃飯一樣。如果一碗青菜裡面什麼也沒有,你會覺得很乏味,沒有食慾。如果放上一點辣椒醬,就會覺得食慾倍增。不管你信不信,反正我是信了。

但是,注釋也不能過多,不能將有用的代碼掩蓋住了,不能夠喧賓奪主,讓真正實現功能的代碼成了陪襯。

為人編程:如何才能寫出讓「人」看得懂的好代碼

那麼,我們如何寫出讓「人」能夠看懂的「好」代碼呢?這個過程不能一蹴而就,要循序漸進,要從我做起,從身邊做起,不斷地提升個人編程的境界。

個人認為可以考慮從以下幾個方面入手:

第一,對新入職的員工進行軟體編程規範的培訓。在剛開始工作中的時候,讓他們嚴格參照編程規範來編寫代碼。越早開展編程規範的訓練,越是能夠早地養成編寫規範代碼的習慣,寫出的代碼也就越清晰。順便說句題外話,很多IT公司沒有這方面的意識,只顧對企業文化進行培訓,以為這樣就能夠讓員工的忠誠度增加。實際上,這只是個異想天開的做法。

第二,定期在項目組開展編程規範方面的主題討論,強化大家的意識。老員工寫出的代碼對新員工有示範的作用,如果老員工寫出的程序都是可讀性很差的,那麼新員工會怎麼想呢?他們又會怎麼做呢?很多開發人員每天只顧埋頭苦幹,卻忽略了一些最基本的東西,因此能力很難再次得到提升。在編寫完代碼之後,不要就以為事情做完了,還要編寫一些項目文檔,如詳細設計文檔、單元/集成測試文檔等。在這些文檔裡面,把自己的思路寫清楚,方便以後自己或他人查閱起來能夠很快理解程序思路。

第三,開發人員嚴格按照公司制定的編程規範來書寫代碼。變量如何命名?函數如何命名?注釋如何寫?代碼如何排版?這些都有嚴格的要求,作為一個合格的軟體開發工程師,編寫規範的代碼是基本的要求。當我們閱讀到書寫優美的代碼的時候,是不是心裏面會覺得很爽?從某種程度上來說,代碼編寫的規範程度可以體現一個程式設計師的態度和專業素養

第四,項目組要嚴格執行同行評審流程。大部分IT公司為了提高產品的質量,都有一個叫做「同行評審」的流程,也就是讓項目組成員相互檢查各自的成果,大家相互學習、取長補短、共同提高。但是,可能是中國文化的影響,大家都比較顧及面子,因此不願意將對他人真實的想法表達出來,也使得「同行評審」流於形式。當然,也許你對別人的程序確實沒有意見,那就另當別論了。對他人開誠布公地提意見並不是冒犯,而是大家相互學習的一種很好的方式。

第五,最重要的是,個人要有編寫規範代碼的意識,要不斷地學習各種提高編程能力的技術。不管別人對你怎麼說,如果你本人不想把程序寫好,那麼縱使萬般外力,又如何?程式設計師雖然工作很忙,但也要抽時間來學習新的技術,這樣才不會被新技術淘汰掉。

「長風破浪會有時,直掛雲帆濟滄海」,對於很多人來說,編寫出能夠讓計算機讀懂的程序就已經足夠了,但如果想要成為一位優秀的軟體開發工程師,那麼就要力求寫出讓「人」能夠很容易看懂並領會的代碼。這是一個長期的過程,大家要有「萬裡長徵」的準備,要有「愚公移山」的精神。

作者介紹:周兆熊,重慶潼南人。2009年7月畢業於海南大學通信工程專業,2012年4月畢業於南京郵電大學計算機應用技術專業,獲工學碩士學位。現在中興通訊股份有限公司重慶研發中心從事軟體開發工作。微博:@周兆熊,微信:245924426。


《暢言》第十三期:【[暢言]程式設計師的成功是否有規律可循?】自然界中存在許多規律,那麼在程序人生上是否有規律可循呢?這種規律是如大多數人期望的那樣嗎?V眾投發起人李智勇對此進行了探討,他分析了必然與偶然、本質與細節,並就程序人生規律的三要素進行了解讀。

《暢言》第十四期:【[暢言]公司應不應該禁止程式設計師上網?】應不應該禁止員工上網?這雖然是個其傻無比的問題,但仍然有公司去實踐,尤其是做傳統軟體、外包、電信的更容易選擇封殺堵截。這樣無非是兩個原因,一個是信息安全,一個是希望提高效率。然而其所來的危害很大。

《暢言》第十五期:【[暢言]程式設計師既要寫好代碼,又要寫好文檔】程式設計師是否應該注重文檔的編寫?這是一個看似很小但卻比較重要的問題。軟體除了程序和數據外,還包括文檔。其次,如果程式設計師只是會寫程序,不能在文檔中恰當且優雅地描述自己的想法,那麼就真的是「碼農」了。

《暢言》是CSDN新欄目,供大家各抒己見。只要你看完CSDN文章或評論後有話說,都可以通過電子郵件(zhangyong@csdn.net)投稿,從而獲得上CSDN首頁表達自己觀點、想法的機會。《暢言》不怕觀點「雷人」,只要你邏輯表達清楚、數據引用可靠,你敢投稿,我們就敢首頁!歡迎大家暢所欲言。

本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • 編寫程序有多難?
    有一回說過我是師大計算機三年專畢業,畢業時成績不錯直接籤約了,來到了一所逼人上進的百年老校,講真話,大學三年真的沒學多少實用的知識,連打字速度也是工作後才練的,工作後面臨太多的問題,學校分配的雜活、帶競賽,自考本科⋯⋯,沒有哪一樣不是從頭學起,加上學科領域的不斷更新,滿滿的壓力山大!       我在這所百年老校待了十年,褪變了!
  • 【暢言】不把C作為第一門語言是個好主意麼?
    厚積薄發要一點點打根基,比如學習C語言、學習計算機系統的構造,去看《電腦程式的構造與解釋》這類書,去學習算法等,這麼走有點吃力不討好,吭哧半天也還不一定能看到什麼結果;速成的就可以先學習IDE,先學習腳本,先學習CSS,JavaScript,這樣沒多久就可以獨立幹不少活了,比如創建個漂亮網站什麼的。這種不同道路的選擇最終決定了C是不是更適合做第一門語言。
  • 暢言Z-Blog PHP版插件上線
    首頁 > 動態 > 關鍵詞 > 暢言最新資訊 > 正文 暢言Z-Blog PHP版插件上線
  • 英語口語暢言1分鐘活動反饋|Keep on going never give up.
    由於對應用英語的熱愛和對提升自己英語能力渴望,我參加了口語暢言1分鐘活動,每天固定時間,不同主題,暢言發揮。經歷21天鍛鍊,收穫滿滿。首先,我講口語的心態更好了,起初在群裡發口語錄音時我還會緊張焦慮,經常是最後幾分鐘內才提交錄音,通過不斷積累、不斷嘗試,我發現只有自己把英語講出來的時候,自己才會深刻記住一些口語化表達。
  • 人工智慧系 | 走進電腦程式設計——程序語言設計
    一、程序設計語言:程序設計語言是用於書寫電腦程式的語言。語言的基礎是一組記號和一組規則。根據規則由記號構成的記號串的總體就是語言。在程序設計語言中,這些記號串就是程序。程序設計語言有3個方面的因素,即語法、語義和語用。語法表示程序的結構或形式,亦即表示構成語言的各個記號之間的組合規律,但不涉及這些記號的特定含義,也不涉及使用者。
  • 什琴斯尼談與布馮關係:首先是朋友,其次才是隊友
    懂球帝首頁>足球新聞> 什琴斯尼談與布馮關係:首先是朋友,其次才是隊友 什琴斯尼談與布馮關係:首先是朋友,其次才是隊友 DQD-willy 2019-11-12 16:50 2019年11月12日,足球網站Juventusnews24
  • 計算機英語術語解釋:application program 應用程式
    新東方網>英語>英語學習>語法詞彙>分類詞彙>正文計算機英語術語解釋:application program 應用程式 2012-12-27 14:45 來源:英美者 作者:
  • 編寫無需駕校學員真實學習即可刷滿學時程序 男子於紹興獲刑5年
    但男子趙某在工作期間,編寫了不需要駕校學員真實學習就可以刷滿學時的程序,並將該程序提供給多家駕校,並按照每名學員人民幣5元的價格向駕校收取費用。為查詢學員的學時信息有無通過駕培網推送到有關監管部門,趙某還編寫程序對駕培網進行持續訪問登錄,造成系統不能正常運行。1月16日,北京青年報記者獲悉,日前,浙江省紹興市越城區人民法院一審以趙某犯破壞計算機信息系統罪,判處其有期徒刑5年。
  • 如何編寫和運行Python程序
    本篇介紹在Windows、Linux、Mac OS不同環境下如何編寫和運行Pyhton程序。通過本篇的學習,可以達成如下目標。● 使用Pyhton自身提供的交互式解釋器編寫Python程序● 使用Python自身提供的IDLE集成開發環境編寫Python程序● 使用eclipse集成開發環境編寫Python程序
  • 澳洲計算機專業介紹
    計算機包括很多專業方向,例如軟體工程、網絡工程、網絡安全、信息系統、電子商務等。它的具體優勢體現在:首先,澳洲計算機教育高質領先,學生在完成碩士課程後一般都能獲得業界較高級別的認證。其次,澳洲計算機專業畢業生的就業前景非常可觀。這類職業也是澳洲目前發展勢頭最猛的行業。一個程序設計員的入職起薪點是4.5萬澳幣,而一個程序發展經理的薪水高達15萬澳幣。
  • Code::Blocks使用教程(使用Code::Blocks編寫C語言程序)
    CodeBlocks 完全支持單個源文件的編譯,如果你的程序只有一個源文件(初學者基本上都是在單個源文件下編寫代碼),那麼不用創建項目,直接運行即可;如果有多個源文件,才需要創建項目。這樣做的好處是,編譯器會讓程序自動暫停,我們也不用再添加 「system(「pause」)」 語句啦。刪除上面代碼中的 「system(「pause」)」 語句,按下 F9 再次運行程序,結果如下:
  • 編寫外掛程序出售被判刑,玩遊戲用外掛也是違法的.
    小斌是一名90後大學畢業生,學的是計算機專業,畢業之後進入一家國有企業技術部門工作,成為一名計算機技術員,工作穩定且自由時間較多。空閒的時候,小斌想到許多同齡人在工作之餘,通過兼職掙外快,自己也產生了做兼職的想法,可自己能做什麼呢,做什麼比較掙錢呢?
  • 編寫C程序的7個步驟
    很多人覺得編寫一個C語言程序是個很複雜的問題,但其實是很簡單的,至少對於二級C考試題目來說都比較簡單。面對一個相對複雜的問題,我們要學會理清楚思路,把它分解成若干小問題,然後條理清晰地解決這個「複雜」的問題。
  • 暢言訪談 一線理化老師談教育:追趕的腳步,從未停止
    暢言教學通的新功能,如數家珍也許正是於老師不拘一格的嚴謹教學方式和敢於創新的處世哲學,才造就了今天他與暢言的緣分。提到暢言,於老師的話匣子立刻打開了:「暢言舉辦的許多活動,我都有參加,活動中受益匪淺。暑假期間家裡沒網絡,一直沒有用過暢言,開學後,打開暢言才知道暢言升級了。
  • ABB機器人二次開發:基於PC SDK的控制器連接程序編寫
    引言上一期為大家介紹了基於PC SDK的ABB機器人控制器掃描程序的編寫方法,按照程序設計編寫流程,下一步就是機器人控制器的遠程登錄或遠程註銷登錄程序的編寫,也就是控制器的連接與斷開。本期就來為大家介紹一下這個功能的實現方法,使用的計算機語言同樣是C#。在這裡先更正一個錯誤,在上一期發布的《ABB機器人二次開發:基於PC SDK的機器人控制器掃描程序編寫》文章的窗口設計部分內容中,添加的公共控制項應該是ListView,而不是ListBox,其他內容保持不變。
  • 如何編寫標準作業程序SOP
    然而,你的公司可能已經有了許多SOP,你可以用來作為參考指南,它們能讓你知道如何編寫程序會比較好。如果是這樣的話,建議你使用預先存在的SOP作為模板。如果沒有,你有以下幾個選擇:① 簡單的分步式。這個格式適用於那些很短的例行程序,這些程序沒有多少種可能的結果,但卻是相當重要的。
  • 25種著名程式語言編寫您的第一個程序Hello World
    」 ——每個程式設計師在開始學習任何程式語言時編寫的第一個程序。「Hello World !」被認為是幾乎所有計算機語言中最簡單的程序之一,它向用戶輸出或顯示「Hello, World !」。它通常是用於工作程序的程式語言的基本語法的範例,用來向入門程式設計師介紹程式語言。從本文中,您將學習如何用25種不同的著名程式語言編寫您的第一個程序——「Hello World !」程序。
  • 我們首先是人,其次才是中國人
    首先,我們都是生命體,我們和山河大地這種非生命體就有了分別心,我們對生命體的關愛認同應該高於非生命體。其次,我們是地球生命體,如果真有外星生物入侵地球,我們應該站邊地球生物,為保衛地球家園和外星生物戰鬥。
  • Stata程序:10 分鐘快樂編寫 ado 文件
    這次 作業 是學習 Stata 第三周時 (剛剛講完第三講 - Stata 程序簡介) 布置的,目的是讓大家學會編寫 ado 文檔的流程。任務很簡單,就是實現一個階乘運算,當然,我也設定了一些選做題目,比如,增加選項、批量處理、編寫幫助文件等。同學們給出了多個版本的程序思路,都記錄在了 這裡。
  • 三菱GX-Works2軟體編寫電機啟停PLC程序教程
    首先,在桌面上找到GXWORKS2這款軟體,圖標如下圖1所示。圖12.其次雙擊圖標,打開軟體,編程界面如下圖2所示。圖45.現在,我們將開始編寫我們的控制電機啟停的基本程序,若X0為電機啟動按鈕,X1為電機停止按鈕,Y0為電機,則程序如下圖5所示。