首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

高質量 C++/C 編程指南:前言 —— 從「代碼能跑」到「工程級質量」的覺醒

     編輯:關於C++

前言:軟件質量,不只是掛在嘴邊的口號

「軟件質量是被大多數程序員掛在嘴上而不是放在心上的東西!」—— 這句話道出了行業的痛點。除非你是完全外行或真正的編程大師,初讀本書時,你大概率會感到一陣驚慌:「哇!我以前寫的 C++/C 程序原來有這麼多問題?」

別灰心,作者只是比你早幾年、多經歷幾次這種驚慌罷了。花一兩個小時認真研讀這本「百頁經書」,你將獲益匪淺——這是前 N-1 位讀者的共同建議。

一、 編程「老手」與「高手」的認知誤區

自計算機誕生以來,程序設計一直是令人羨慕的職業,但程序員在受寵若驚後,容易養成「毛病特多卻常自我感覺良好」的壞習慣。網上流傳的所謂「真正程序員」特徵,諸如:

  • 不寫進度表、不寫文檔、不寫註釋、不畫流程圖
  • 不看參考手冊、不接受團隊開發、認為自己比用戶更懂需求
  • 程序首次運行必有錯,但願意守著機器調試 30 小時
  • 不在朝九晚五工作,凌晨還在碼代碼……

擁有這些特徵越多,似乎水平越高、資歷越老。這就像武俠小說裡獨來獨往、帶點邪氣的高手最令人崇拜。作者曾深信不疑,渴望成為那樣的「真正程序員」,結果卻沒討到好處。

從「自以為高手」到「真正覺醒」

作者從大學到博士畢業十年,累計編寫數十萬行 C++/C 代碼,開發的科研軟件(集成電路 CAD、3D 圖形學)動輒數萬行、技術極其複雜,屢獲大獎,甚至有軟件在 1995 年開發、2000 年仍有人購買。按常理,這算「編程高手」了吧?

可惜個人感覺 ≠ 事實。

讀博期間,作者用一年開發近 10 萬行的 3D 圖形產品,自以為得意地請教一位真正的軟件高手。對方雖未涉足 3D 領域,卻在幾十分鐘內指出多處重大設計錯誤——那套軟件像紙糊的華麗衣服,一扯掉一塊,一戳破個洞。作者當場意識到:一年心血白費,連帶害死自己的軟件公司。

人的頓悟往往發生在最心痛時刻。在沮喪與心痛中,作者「面壁」半年,重溫軟件設計基礎,「補修內功」後再出發。博士畢業前去微軟中國研究院面試,被要求寫 strcpy 函數。看似太簡單?錯!面試官從編程風格、出錯處理、算法複雜度分析三個維度嚴格考查。作者花半個小時改了數次仍不合格,被要求回家好好琢磨。這次「考試」徹底粉碎了作者的「高手」幻覺。

國內 IT 人才的「先天不足」與質量危機

作者將反省心得發文網上,引發大量共鳴,並有幸與華為、上海貝爾、中興等頭部企業廣泛交流。共識是:提高質量與生產率是軟件工程核心問題,高質量程序設計是關鍵環節。

但現實令人憂心:國內大學計算機教育從未灌輸高質量程序設計觀念,教師與學生極少自覺關注軟件質量。勤奮的程序員長期在低質量代碼堆裡打滾,吃盡苦頭才慢慢有心得,成長極慢——作者就是活生生的例子。

現在國內 IT 企業滿是碩博士,但他們在大學就「先天不足」,豈能入職就質變?有多少開發人員能說清正確性、健壯性、可靠性、效率、易用性、可讀性、可擴展性、可復用性、兼容性、可移植性等質量屬性,並靈活運用?「高質量」絕不是「干活小心點」就能實現的!

作者在上海貝爾一年,面試測試近百名「新」「老」程序員,質量合格率約 10%。極少人能寫出完全合規的 if 語句,大量程序員對指針、內存管理一知半解。領導不信,作者做現場實驗:14 名新入職碩士生,眾人覺得考題不難,結果零人及格,半數零分。競對公司同樣慘敗。這不是作者「心狠手辣」,而是從業者對自己要求不夠高。

華為、上海貝爾、中興員工素質已屬國內前列,若連他們代碼質量都如此,中小企業怎麼敢期望產出高質量軟件?連程序都寫不好,談何振興民族軟件產業?

重新定義「老手」與「高手」

  • 定義 1:能長期穩定編寫高質量程序的程序員 = 編程老手
  • 定義 2:能長期穩定編寫高難度、高質量程序的程序員 = 編程高手

推論:作者寫書前,既非高手,甚至算不上老手。閱讀大量英文著作後越發羞愧——連編程基本功都未全面掌握,頂多二流水平。希望國內土生土長的程序員朋友們能做到:知錯就改、溫故知新、堅持學習,天天向上。

二、 本書導讀:從測試開始,到 CMMI 進階

  1. 先做附錄 B 試題(勿看答案),嚴格自評。
    • 幾十分:別氣餒,質量差多因不良習慣,與智力無關,有藥可救。成績越差,進步空間越大。下決心改習慣,二次考試必及格。
    • 及格:基礎不錯,虛心學習,不斷進步。未就業者可投遞上海貝爾。
    • 85 分以上:有義務為團隊做「C++/C 編程」培訓,歡迎交流切磋。
    • 無提示滿分:請收作者為徒。
  2. 閱讀正文:
    • 第 1-6 章:編程風格,難度不高但細節多。提高質量就從點滴做起。無最佳風格,一切因需求而定。團隊開發講究一致,制定風格後全員遵守。覺得本書風格合用就照做,別只看不練。
    • 第 7-11 章:專題論述,技術難度高,需積極思考。特別是第 7 章「內存管理」,讀懂 ≠ 會用。有同事讀後自以為懂「野指針」,兩周後調試 Bug 仍是野指針,被迫重讀。
  3. 延伸閱讀:光看本書不夠,建議研讀參考文獻(皆經典名著)。
  4. 進階之路:編程質量過關後別滿足。想成優秀軟件工程師,請研讀並遵循 CMMI 規範,綜合水平再上台階。上海貝爾員工可向軟件工程研究小組索取資料、參加培訓。

三、 版權聲明:開放共享,嚴守底線

本書大部分內容取材於作者一年前未出版手稿,整理為上海貝爾規範化文件兼培訓教材。C++/C 編程屬眾所周知技術,無秘密可言,好經驗應共享。作者願公開電子文檔:

  1. 讀者可任意拷貝、修改,但不得篡改作者及所屬單位
  2. 未經許可,不得出版或大量印發
  3. 競對公司員工獲取本書,請勿公開使用,避免糾紛

預計 2002 年 7 月建立切合國情的 CMMI 3 級解決方案,屆時本書在內約 1000 頁規範將嚴格受控。歡迎讀者批評指正。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved