助你成长为优秀的程序员 杰出的软件工程师、设计师、分析师和架构师
編碼規范往往只是對具體編程的格式及細節要求進行規定,但對于提高軟件人員編程能力而言,編程規則更具有價值,下面將我的一些觀點和想法提出來供大家參考,也希望大家批評指正,謝謝!
?
1 概述
????? 編程是一個軟件工作者的基本能力,怎樣能夠成為一個優秀的軟件工程師,怎樣編寫出優雅的程序,漂亮、完美地解決問題,實現需求,將是每一個軟件人員永遠的追求。
????? 程序員都希望自己將來成為設計師、架構師,但小可比大、大可比小,局部的小程序設計不好,就奢談架構設計了,相反如果你程序設計的非常清晰、結構優美,你離架構師也就不遠了。因此請你胸懷遠大目標,從眼下做起吧!
??? 本文試圖指導你實現這樣的夙愿,使你在編程的過程中逐步成長、成熟,成為一個優秀的軟件工程師。
??? 本文即不是具體的軟件編程規范(具體的軟件編程規范亦是基于此文的基本規則制定),也不是軟件架構及設計指導書,它介于具體編程與系統架構之間,雖不明確細節,但注重編程的基本原則和規程,不限于語言(盡管示例采用java),可適用于任何面向對象的編程,其中大部分規則亦適用于非OO編程。
??? 要求所有軟件開發人員必須認真、反復閱讀此文,深刻體會每一個規則的內涵和外延,并在開發過程中認真貫徹、深入實踐,做到:
????? 知行合一,努力實踐,勇于重構,追求完美。?
????? 代碼是程序員的臉面,代碼是程序員的作品,代碼是程序員的榮譽,代碼是程序員的信用,優秀的軟件工作者,首先必須是一名優秀的程序員。
????? 你努力搞懂這些規則,并運用這些規則,他將幫你成就優秀。
????? 本文只是簡略地敘述這些規則,為了切實地弄清楚它們的真實意義,你不僅需要實踐,還需要通過其他方式去學習體會,例如學習相關書籍豐富知識面,請教、交流都是輔助手段。
????? 編程是一門實踐科學,你需要實踐-學習-總結-提高,再實踐-再學習-再總結-再提高,這是一條唯一的成功之路。
????? 編程是一種創造性工作,能夠滿足你創造的愿望,讓你的靈感放出燦爛的光芒,讓你的思想和創意能夠落地生花,令你在工作中收獲成功和快樂。
????? 編程是門藝術,它能夠展示結構之美、構造之美、表達之美,能夠給作者和讀者帶來喜悅、舒暢、優雅等高層次的精神享受,它有時像優美的詩歌,有時像設計精妙、蘊含人類智慧的精密裝置,給人帶來深層次的觸動和愉悅。
????? 讓我們用輕松、愉快、期盼的心情馳騁在編程的道路上吧,祝愿你一路收獲成就、收獲喜悅、收獲健康;更希望你的作品能夠為他人帶來快樂。
?
1.1 大處著眼,小處著手
????? 每件小事都值得我們努力去做,皮爾·卡丹曾經對他的員工說過:“如果你能真正地釘好一枚鈕扣,這比你縫出一件粗制的衣服更有價值。”從事不起眼的工作,其實正是大事業的開始,能否有這樣的理念,意味著一個人能否有長足的發展。
????? 一個程序員怎樣能夠成長為架構師,首先他必須是一個優秀的程序員,他能夠寫出結構優美、表達簡潔清晰的代碼,小可比大、大可比小,他才有能力對大系統進行架構的合理設計。
??????大處著眼、小處著手,精益求精、追求完美是優秀的軟件工作者的成功之路。大處著眼要求你要有整體思想、形象思維、胸懷全局,小處著手要求你認真對待每個細節,深刻掌握和靈活運用規則,執行規范,勇于重構,不斷改進,努力寫出好代碼、優秀的代碼、優美的代碼。
??? 樹立你宏遠的目標,但首先認真踏實地做好你身邊的每件事。
1.2 破窗與童子軍軍規
????? 破窗和童子軍軍規的故事你可以其他方式去了解。
????? 我們要求軟件開發過程要避免惡性循環,形成良性循環。在開發過程中要認真貫徹規范,有違犯規則的任何事情發生時必須及時糾正,每個人在創建或維護代碼時都有責任使之更加整潔、清晰,包括對不合理的結構進行梳理,對不恰當的命名進行重構,職責不單一(臃腫)的類或方法進行分解,對代碼中稀奇古怪的“魔法數字”進行治理。
????? 為什么提軍規呢,因為軍隊最講團隊精神,代碼不僅是程序員個人的臉面,同時它更代表一個組織的品質,每個人都要為這個品質的提高和榮譽努力,在軟件系統中短板效應非常明顯,一個Bug可以使整個系統坍塌,所以記住童子軍軍規,記住我們是一個整體。
????? 破窗是說一件很小壞事兒,如果不加控制的話,也會演變成嚴重的事件。
????? 童子軍軍規中有條規定,當你離開一個地方的時候,要讓它比你來的時候更整潔干凈。這樣的話,童子軍扎營的地方會越來越干凈。當程序員開發或維護一組代碼時,如果他能夠使代碼更加清楚整潔,那么軟件系統就會越來越結構優美了。
總結
以上是生活随笔為你收集整理的助你成长为优秀的程序员 杰出的软件工程师、设计师、分析师和架构师的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#读写文件总结
- 下一篇: Linux运维工程师必备技能