概述
自表達代碼(Self-expressive codes)是軟體開發的一種代碼書寫方式。由史蒂芬.王首次在其部落格上提出,並在全球案例研究峰會上進行演講。
代碼究其本質,除了完成人機對話的作用之外,更重要的作用是人人對話。即一個程式設計師通過另一個程式設計師書寫的代碼來了解其意圖。如果代碼不能夠自我表達,則閱讀代碼時降低效率,產生理解困難等問題。如果代碼能夠自我表達,閱讀不會產生障礙。
和非自我表達代碼之間的區別
下面例子有助於理解自我表達代碼和非自我表達代碼之間的區別。自我表達的代碼:
if (isHardKeyboardConnected()) {
softKeyboard.hide();
}
非自我表達代碼
if (hardKeyboardHidden == false) {
setSoftKeyboardHeight(0);
}
上述例子可見,自我表達的代碼本身就是注釋,不需要額外的說明就可以明白其意思。而非自我表達的代碼,其代碼本身無法表達自身的意思,必須輔以說明才能夠明白。當很多的費自我表達代碼聚集在一起時,它會產生:
1.代碼冗長(長方法、長參數列表、長比較式)
2.意思表達不直接()
3.意思不穩定
4.擴展困難
5.無法測試
等問題。
自表達代碼的核心思想
1.代碼應該是能夠自我表達的。2.書寫代碼應該像寫小說一樣。
3.代碼應該有明確的歸屬關係。
4.代碼是可以測試的。
5.代碼是容易擴展的。
而代碼之所以沒能寫成自表達的形式其原因歸結為如下幾點:
1.理論知識不充分
2.程式語言不熟悉
3.編程工具不熟悉
4.設計方式不了解
5.英語能力不足
6.管理者誤導
而針對上述幾個問題的改進之後,代碼可以逐步達到自我表達的境界。
如果代碼能夠書寫成自表達形式的,則開發過程中的詳細設計就不需要了。自表達代碼在開發效率改進上也起到很重要的作用。
自表達代碼相關內容已經整理成書《會說話的代碼》,由電子工業出版社於2013年7月正式出版。