天天看點

程式設計規則 - 1 概述 -- 幫助你成長為優秀的程式員 傑出的軟體工程師、設計師、分析師和架構師1 概述

作者:Jon Ji 2011/8/20

    編碼規範往往隻是對具體程式設計的格式及細節要求進行規定,但對于提高軟體人員程式設計能力而言,程式設計規則更具有價值,下面将我的一些觀點和想法提出來供大家參考,也希望大家批評指正,謝謝!

1 概述

      程式設計是一個軟體工作者的基本能力,怎樣能夠成為一個優秀的軟體工程師,怎樣編寫出優雅的程式,漂亮、完美地解決問題,實作需求,将是每一個軟體人員永遠的追求。

      程式員都希望自己将來成為設計師、架構師,但小可比大、大可比小,局部的小程式設計不好,就奢談架構設計了,相反如果你程式設計的非常清晰、結構優美,你離架構師也就不遠了。是以請你胸懷遠大目标,從眼下做起吧!

    本文試圖指導你實作這樣的夙願,使你在程式設計的過程中逐漸成長、成熟,成為一個優秀的軟體工程師。

    本文即不是具體的軟體程式設計規範(具體的軟體程式設計規範亦是基于此文的基本規則制定),也不是軟體架構及設計指導書,它介于具體程式設計與系統架構之間,雖不明确細節,但注重程式設計的基本原則和規程,不限于語言(盡管示例采用java),可适用于任何面向對象的程式設計,其中大部分規則亦适用于非OO程式設計。

    要求所有軟體開發人員必須認真、反複閱讀此文,深刻體會每一個規則的内涵和外延,并在開發過程中認真貫徹、深入實踐,做到:

      知行合一,努力實踐,勇于重構,追求完美。 

      代碼是程式員的臉面,代碼是程式員的作品,代碼是程式員的榮譽,代碼是程式員的信用,優秀的軟體工作者,首先必須是一名優秀的程式員。

      你努力搞懂這些規則,并運用這些規則,他将幫你成就優秀。

      本文隻是簡略地叙述這些規則,為了切實地弄清楚它們的真實意義,你不僅需要實踐,還需要通過其他方式去學習體會,例如學習相關書籍豐富知識面,請教、交流都是輔助手段。

      程式設計是一門實踐科學,你需要實踐-學習-總結-提高,再實踐-再學習-再總結-再提高,這是一條唯一的成功之路。

      程式設計是一種創造性工作,能夠滿足你創造的願望,讓你的靈感放出燦爛的光芒,讓你的思想和創意能夠落地生花,令你在工作中收獲成功和快樂。

      程式設計是門藝術,它能夠展示結構之美、構造之美、表達之美,能夠給作者和讀者帶來喜悅、舒暢、優雅等高層次的精神享受,它有時像優美的詩歌,有時像設計精妙、蘊含人類智慧的精密裝置,給人帶來深層次的觸動和愉悅。

      讓我們用輕松、愉快、期盼的心情馳騁在程式設計的道路上吧,祝願你一路收獲成就、收獲喜悅、收獲健康;更希望你的作品能夠為他人帶來快樂。

1.1 大處着眼,小處着手

      每件小事都值得我們努力去做,皮爾·卡丹曾經對他的員工說過:“如果你能真正地釘好一枚鈕扣,這比你縫出一件粗制的衣服更有價值。”從事不起眼的工作,其實正是大事業的開始,能否有這樣的理念,意味着一個人能否有長足的發展。

      一個程式員怎樣能夠成長為架構師,首先他必須是一個優秀的程式員,他能夠寫出結構優美、表達簡潔清晰的代碼,小可比大、大可比小,他才有能力對大系統進行架構的合理設計。

      大處着眼、小處着手,精益求精、追求完美是優秀的軟體工作者的成功之路。大處着眼要求你要有整體思想、形象思維、胸懷全局,小處着手要求你認真對待每個細節,深刻掌握和靈活運用規則,執行規範,勇于重構,不斷改進,努力寫出好代碼、優秀的代碼、優美的代碼。

    樹立你宏遠的目标,但首先認真踏實地做好你身邊的每件事。

1.2 破窗與童子軍軍規

      破窗和童子軍軍規的故事你可以其他方式去了解。

      我們要求軟體開發過程要避免惡性循環,形成良性循環。在開發過程中要認真貫徹規範,有違犯規則的任何事情發生時必須及時糾正,每個人在建立或維護代碼時都有責任使之更加整潔、清晰,包括對不合理的結構進行梳理,對不恰當的命名進行重構,職責不單一(臃腫)的類或方法進行分解,對代碼中稀奇古怪的“魔法數字”進行治理。

      為什麼提軍規呢,因為軍隊最講團隊精神,代碼不僅是程式員個人的臉面,同時它更代表一個組織的品質,每個人都要為這個品質的提高和榮譽努力,在軟體系統中短闆效應非常明顯,一個Bug可以使整個系統坍塌,是以記住童子軍軍規,記住我們是一個整體。

      破窗是說一件很小壞事兒,如果不加控制的話,也會演變成嚴重的事件。

      童子軍軍規中有條規定,當你離開一個地方的時候,要讓它比你來的時候更整潔幹淨。這樣的話,童子軍紮營的地方會越來越幹淨。當程式員開發或維護一組代碼時,如果他能夠使代碼更加清楚整潔,那麼軟體系統就會越來越結構優美了。