【轉】 優秀代碼所具有的5大品質

在我先前的博客中,我主要講了咱們的編碼風格應該適應咱們所處的業務領域。即不一樣的業務領域須要不一樣編碼風格的軟件。例如,爲防護體系寫的軟件必須強健穩定,由於一次崩潰可能就會終結它的生命週期,而爲市場交易寫的軟件,則必須可維護,而且還能夠添加廣告,一般這些項目和軟件的生命週期都很是短,因此這些軟件還必須能夠重複使用。html

雖然我以前從沒看到過它被應用於這些業務領域,可是關於編碼優先順序這一觀點卻並非最近纔出來的。我第一次看到這一觀點是在Steve Maguire寫的一本由微軟出版社於1997年出版的書上,書名叫作《Debugging the Development Process》。程序員

在這本書中,Steve論述了關於在編寫軟件時,咱們應該創建優先順序的觀點。他列舉的他認爲須要考慮的優先事項包括:算法

  • 規模
  • 速度
  • 穩健性
  • 安全性
  • 可測試性
  • 可維護性
  • 簡單
  • 可重用性
  • 可移植性

如今說說那個時候的背景——1997年,那時的CD-RW驅動器和媒介剛問世,內存還很昂貴,處理器還很慢,語種選擇仍是C / C++。編程

隨着時間的推移,如今的Java程序員一般毋需再考慮規模和速度,因此上面的列表能夠縮減爲:安全

  • 安全性
  • 可測試性
  • 穩健性
  • 可維護性
  • 簡單
  • 可重用性

下面咱們要討論的是上面這個列表是否還適用於今天,具體爲……佈局

1.安全性

雖然寫着的是「安全性」,可是Steve真正想說的是編程範例和算法。有些技術是比其餘的要來得更安全,例如,使用查表返回值比使用邏輯驅動來計算數值要安全。咱們設計時也須要考慮到安全性這一特色。學習

2.可測試性和穩健性

對我來講,這二者差很少。從定義上講,通過充分測試的代碼就會比較穩健。若是你正在使用測試驅動開發(TDD),那麼你也能夠將這一條從列表中刪除,這是由於它們在此進程中是固有的。若是你是不喜歡使用TDD的程序員大軍中的一員,那麼這一條應該保留……測試

3.可維護性

這一條能夠反映出一我的的代碼風格、思惟條理和清楚表達本身的能力。在風格方面,你們能夠借鑑Uncle Bob在《Clean Code>中的描述,這也是我最喜歡的書籍之一。Uncle Bob的風格……怎麼說呢,總體感受就是乾淨。方法和類都很短,服從SRP和整潔的佈局。這也是優秀軟件的關鍵屬性。ui

4.簡單

代碼簡單是咱們共同的目標追求,可是這並不意味着寫出來的代碼是被過度簡化的,咱們只須要作到,代碼雖然最簡化,沒有裝飾、沒有鍍金,也不具有之後可能須要添加的功能,可是依然能夠完成工做。這種最簡化代碼的觀點已然成爲了敏捷社區的核心思想,甚至Shane Warden和James Shore也在他們的《The Art of Agile Development》一書中,花費了一整章的篇幅來描述這一觀點,包括它的概念,如「once and only once」以及「you ain’t gonna need it」。編碼

5.可重用性

這一點我就很少說了,咱們老是但願如今寫的代碼之後還能夠再次使用,省時省力。

綜上所述

首先,自1997年以來,不少事情都發生了變化,這是毋庸置疑的。可是在我看來,一些好的觀點依然值得咱們學習和借鑑……

 

轉:http://www.codeceo.com/article/rank-order-best-code.html

相關文章
相關標籤/搜索