程序員應當遵守的編程原則

發(fā)布時(shí)間:2011-8-18 15:05    發(fā)布者:Liming
關(guān)鍵詞: 編程原則 , 程序員
好的編程原則跟好的系統設計原則和技術(shù)實(shí)施原則有著(zhù)密切的聯(lián)系。下面的這些編程原則在過(guò)去的這些年里讓我成為了一名優(yōu)秀的程序員,我相信,這些原則對任何一個(gè)開(kāi)發(fā)人員來(lái)說(shuō),都能讓他的編程能力大幅度的提高,能讓他開(kāi)發(fā)出可維護性更強、缺陷更少的程序。

      我不要自我重復 — 這也許是在編程開(kāi)發(fā)這最最基本的一個(gè)信條,就是要告訴你不要出現重復的代碼。我們很多的編程結構之所以存在,就是為了幫助我們消除重復(例如,循環(huán)語(yǔ)句, 函數,類(lèi),等等)。一旦程序里開(kāi)始有重復現象的出現(例如很長(cháng)的表達式、一大堆的語(yǔ)句,但都是為了表達相同的概念),你就需要對代碼進(jìn)行一次新的提煉,抽 象。

  http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

  提煉原則 — 跟“不要自我重復原則”相關(guān),這一原則是說(shuō)“程序中任何一段具有功能性的代碼在源代碼文件中應該唯一的存在!

  http://en.wikipedia.org/wiki/Abstraction_principle_(programming)

  保持簡(jiǎn)單 — 簡(jiǎn)單化(避免復雜)永遠都應該是你的頭等目標。簡(jiǎn)單的程序讓你寫(xiě)起來(lái)容易,產(chǎn)生的bug更少,更容易維護修改。

  http://en.wikipedia.org/wiki/KISS_principle

  不要開(kāi)發(fā)你目前用不到的功能 — 除非你真正需要用到它,否則不要輕易加上那些亂七八糟用不到的功能。

  http://en.wikipedia.org/wiki/YAGNI

  用最簡(jiǎn)單的方法讓程序跑起來(lái) — 在開(kāi)發(fā)時(shí)有個(gè)非常好的問(wèn)題你需要問(wèn)問(wèn)自己,“怎樣才能最簡(jiǎn)單的讓程序跑起來(lái)?”這能幫助我們在設計時(shí)讓程序保持簡(jiǎn)單。

  http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html

  不要讓我動(dòng)腦子 — 這實(shí)際上是Steve Krug 關(guān)于web界面操作的一本書(shū)的書(shū)名,但也適用于編程。主旨是,程序代碼應該讓人們花最小的努力就能讀懂和理解。如果一段程序對于閱讀者來(lái)說(shuō)需要花費太多的努力才能理解,那它很可能需要進(jìn)一步簡(jiǎn)化。

  http://www.sensible.com/dmmt.html

  開(kāi)放/封閉原則 — 程序里的實(shí)體項(類(lèi),模塊,函數等)應該對擴展行為開(kāi)放,對修改行為關(guān)閉。換句話(huà)說(shuō),不要寫(xiě)允許別人修改的類(lèi),應該寫(xiě)能讓人們擴展的類(lèi)。

  http://en.wikipedia.org/wiki/Open_Closed_Principle

  為維護者寫(xiě)程序 — 任何值得你編寫(xiě)的程序在將來(lái)都是值得你去維護的,也許由你維護,也許由他人。在將來(lái),當你不得不維護這些程序時(shí),你對這些代碼的記憶會(huì )基本上跟一個(gè)陌生人 一樣,所以,你最好還是當成一直在給別人寫(xiě)程序。一個(gè)有助于你記住這個(gè)原則的辦法是“寫(xiě)程序時(shí)時(shí)刻記著(zhù),這個(gè)將來(lái)要維護你寫(xiě)的程序的人是一個(gè)有嚴重暴力傾 向,并且知道你住在哪里的精神變態(tài)者”。

  http://c2.com/cgi/wiki?CodeForTheMaintainer

  最少意外原則 — 最少意外原則通常是使用在用戶(hù)界面設計上,但這個(gè)原則同樣適用于編寫(xiě)程序。程序代碼應盡可能的不要讓閱讀者感到意外。也就是說(shuō)應該遵循編碼規范和常見(jiàn)習慣,按照公認的習慣方式進(jìn)行組織和命名,不符常規的編程動(dòng)作應該盡可能的避免。

  http://en.wikipedia.org/wiki/Principle_of_least_astonishment

  單一職責原則 — 一個(gè)代碼組件(例如類(lèi)或函數)應該只執行單一的預設的任務(wù)。

  http://en.wikipedia.org/wiki/Single_responsibility_principle

  最小化耦合關(guān)系 — 一個(gè)代碼片段(代碼塊,函數,類(lèi)等)應該最小化它對其它代碼的依賴(lài)。這個(gè)目標通過(guò)盡可能少的使用共享變量來(lái)實(shí)現!暗婉詈鲜且粋(gè)計算機系統結構合理、設計優(yōu)秀的標志,把它與高聚合特征聯(lián)合起來(lái),會(huì )對可讀性和可維護性等重要目標的實(shí)現具有重要的意義!

  http://en.wikipedia.org/wiki/Coupling_(computer_programming)

  最大化內聚性 — 具有相似功能的代碼應該放在同一個(gè)代碼組件里。

  http://en.wikipedia.org/wiki/Cohesion_(computer_science)

  隱藏實(shí)現細節 — 隱藏實(shí)現細節能最小化你在修改程序組件時(shí)產(chǎn)生的對那些使用這個(gè)組件的其它程序模塊的影響。

  http://en.wikipedia.org/wiki/Information_Hiding

  笛米特法則(Law of Demeter) — 程序組件應該只跟它的直系親屬有關(guān)系(例如繼承類(lèi),內包含的對象,通過(guò)參數入口傳入的對象等。)

  http://en.wikipedia.org/wiki/Law_of_Demeter

  避免過(guò)早優(yōu)化 — 只有當你的程序沒(méi)有其它問(wèn)題,只是比你預期的要慢時(shí),你才能去考慮優(yōu)化工作。只有當其它工作都做完后,你才能考慮優(yōu)化問(wèn)題,而且你只應該依據經(jīng)驗做法來(lái)優(yōu) 化!皩τ谛》鹊男阅芨倪M(jìn)都不該考慮,要優(yōu)化就應該是97%的性能提升:過(guò)早優(yōu)化是一切罪惡的根源”—Donald Knuth。

  http://en.wikipedia.org/wiki/Program_optimization

  代碼復用 — 這不是非常核心的原則,但它跟其它原則一樣非常有價(jià)值。代碼復用能提高程序的可靠性,節省你的開(kāi)發(fā)時(shí)間。

  http://en.wikipedia.org/wiki/Code_reuse

  職責分離 — 不同領(lǐng)域的功能應該由完全不同的代碼模塊來(lái)管理,盡量減少這樣的模塊之間的重疊。http://en.wikipedia.org/wiki/Separation_of_concerns

  擁抱變化 — 這是Kent Beck的一本書(shū)的副標題,它也是極限編程和敏捷開(kāi)發(fā)方法的基本信條之一。很多的其它原則都基于此觀(guān)念:面對變化,歡迎變化。事實(shí)上,一些經(jīng)典的軟件工程 原則,例如最小化耦合,就是為了讓程序更容易面對變化。不論你是否采用了極限編程方法,這個(gè)原則對你的程序開(kāi)發(fā)都有重要意義。http://www.amazon.com/gp/product/0321278658
本文地址:http://selenalain.com/thread-73605-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
無(wú)怨無(wú)悔yyl 發(fā)表于 2011-8-20 11:18:43
謝謝分享
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页