- Java開發(fā)之道
- 張振坤 李鐘尉 陳丹丹等編著
- 2268字
- 2018-12-27 19:53:50
細(xì)節(jié)5 高貴的品質(zhì)——程序書寫要規(guī)范化
著名的“清晰第一,效率第二”是編寫程序時應(yīng)遵循的規(guī)則,也就是說,所編寫的程序應(yīng)該簡單、清晰、易于理解,這樣的程序有利于后期維護(hù)和修改,具有很好的擴(kuò)展性。
編程準(zhǔn)則:程序代碼應(yīng)簡單、清晰、易于理解
無論多么好的程序,如果你的代碼不能讓別人理解、接受,那這個程序就不能說是一個好的程序,軟件設(shè)計的基本原則就是代碼應(yīng)簡單、清晰、可讀性好、易于理解和維護(hù),所以,作為一款優(yōu)秀的軟件,其代碼必須要做到這一點,否則就不能說是一款優(yōu)秀的軟件。
作為一名優(yōu)秀的程序員,在編寫代碼時一般應(yīng)做到以下幾點。
1.標(biāo)識符要有意義
在進(jìn)行程序開發(fā)時,代碼中的標(biāo)識符應(yīng)使用有意義的名稱,包括常量、變量、成員變量、方法、方法的形參、包、類和接口等的命名都要有一定的實際意義,這樣有利于別人對程序功能的理解。
示例:
String name = "ZhenKun Zhang"; // 聲明存放姓名的變量name String sex = "男"; // 聲明存放性別的變量sex int age = 18; // 聲明存放年齡的變量age
說明
上面代碼聲明了三個變量name、sex和age,這樣,當(dāng)別人看到這三個變量名時,很容易就會猜到name是存放姓名的變量、sex是存放性別的變量、age是存放年齡的變量,因此有意義的標(biāo)識符有利于別人對程序功能的理解。
2.給代碼添加注釋
通過添加注釋,可以提高代碼的質(zhì)量,增強(qiáng)代碼的可讀性,有利于對程序代碼的理解和維護(hù)。對于一個較優(yōu)秀的程序,通常都要為代碼添加注釋,清楚地說明代碼的含義和作用。
示例:
public class Demo { // 創(chuàng)建類Demo /* * 應(yīng)用程序的主方法,程序從這里開始執(zhí)行 * args 字符串?dāng)?shù)組,用于接收從命令行傳入的參數(shù) */ public static void main (String[] args) { String message = "Hello World! "; // 聲明變量message,其值為Hello World! System. out. println (message); // 輸出變量message的值,即輸出Hello World! } }
說明
上面的示例通過為代碼添加注釋,增加了代碼的可讀性,有利于別人對代碼的理解,通過閱讀代碼的注釋,程序員就能很容易地理解每部分代碼的含義,這樣既有利于程序員對代碼的理解,又方便了對代碼的維護(hù)。
3.為代碼分段和添加縮進(jìn)
為了有利于對程序代碼的理解,增強(qiáng)程序的可讀性,還應(yīng)該對程序代碼進(jìn)行分段和添加縮進(jìn),通過添加空白行,可以實現(xiàn)代碼分段,代碼縮進(jìn)則以每增加一層縮進(jìn)為一個單位,這樣可使代碼清晰,可讀性好,易于理解和維護(hù)。
示例:
public class Demo { // 創(chuàng)建類Demo public static void outputInfo (){ // 聲明靜態(tài)方法showInfo,用于輸出信息 // 在命令行或控制臺輸出信息 System. out. println ("我正在學(xué)習(xí)Java編程!"); } public static void main (String[] args) { // 應(yīng)用程序主方法,程序從這里開始執(zhí)行 String message = "Hello World! "; // 聲明變量message,其值為Hello World! System. out. println (message); // 輸出變量message的值,即輸出Hello World! outputInfo (); // 調(diào)用outputInfo ()方法 } }
說明
上面的示例在outputInfo方法和main主方法的上方各添加了一個空行,而且在主方法內(nèi)調(diào)用outputInfo方法時也在其上方添加了一個空行,將不同的代碼塊分隔,從而實現(xiàn)了代碼的分段。在類Demo 的內(nèi)部對outputInfo 方法和main 主方法各添加了一個縮進(jìn),并對outputInfo 方法和main 主方法內(nèi)部的代碼又各添加了兩個縮進(jìn),從而使代碼層次分明。這樣通過對代碼進(jìn)行分段和添加縮進(jìn),增強(qiáng)了代碼的可讀性,為代碼的查閱和維護(hù)提供了方便。
4.代碼行要獨立
在書寫程序代碼時,應(yīng)遵循一行只寫一條語句,一條語句較長則可以分多行書寫,語句是否太長,可以根據(jù)一屏是否能夠完全顯示來判斷,如果能在一屏完全顯示,則不需要分多行書寫,如果一屏不能完全顯示,則應(yīng)該分多行書寫。
一條語句占用一行,有助于對代碼的閱讀和理解,如果多條語句寫在一行,代碼就會顯得比較混亂,因此在編寫程序時,代碼行應(yīng)該獨立,這也是軟件設(shè)計所要求的,完全符合“清晰第一,效率第二”的編程規(guī)則。
接下來我們看一個示例,該示例說明了如果在一行寫多條語句,將降低程序代碼的可讀性,不利于代碼的理解與維護(hù)。
示例:
// 聲明變量 String name = "ZhenKun Zhang"; String sex = "男"; int age = 18;
注意
上面的代碼在一行聲明了三個變量name、sex和age,雖然在Java中允許在一行書寫多條語句,但是當(dāng)看到這樣的程序代碼后,讀者朋友不會覺得代碼很亂嗎?所以在書寫程序代碼時,一定不要在一行書寫多條語句,應(yīng)該做到一行只寫一條語句。
接下來我們再來看一個示例,該示例對上面的示例進(jìn)行了改進(jìn),每一條語句只寫在一行,這樣,程序代碼看上去就顯得簡單、清晰、容易理解了。
示例:
String name = "ZhenKun Zhang"; // 聲明存放姓名的變量name String sex = "男"; // 聲明存放性別的變量sex int age = 18; // 聲明存放年齡的變量age
說明
上面的代碼對前一個示例進(jìn)行了改進(jìn),同樣是聲明三個變量name、sex和age,但是由于每一條語句各占一行,這樣的代碼看上去就清晰多了,看著也舒服,有利于代碼的理解和維護(hù)。
5.程序要模塊化
模塊化就是指將程序所要解決的總目標(biāo)分解為若干分目標(biāo),對每個分目標(biāo)再進(jìn)一步分解為具體的小目標(biāo),每個小目標(biāo)就是一個模塊。
假設(shè)要開發(fā)一個企業(yè)進(jìn)銷存管理系統(tǒng),不但要進(jìn)行需求分析,還要考慮硬件設(shè)施、軟件環(huán)境等諸多因素,并根據(jù)用戶需求設(shè)計出系統(tǒng)的功能圖,如圖1.5所示。

圖1.5 企業(yè)進(jìn)銷存管理系統(tǒng)功能圖
說明
這里只是一個假設(shè)而已,并不是說真正要開發(fā)一個企業(yè)進(jìn)銷存管理系統(tǒng),所以這里并沒有給出系統(tǒng)所需的具體硬件、軟件以及需求分析的過程,而且系統(tǒng)功能圖也并沒有完整給出,這里只是為了說明程序開發(fā)模塊化的原因。
從企業(yè)進(jìn)銷存管理系統(tǒng)功能圖可以看出,整個系統(tǒng)被分解為基本信息管理模塊、采購信息管理模塊、銷售信息管理模塊等若干個分目標(biāo),也就是分解為若干個子模塊,然后再對每個子模塊進(jìn)行進(jìn)一步分解,例如,將基本信息管理模塊又分解為商品信息模塊、客戶信息模塊等更具體的小模塊。
通過上面的分解,程序的結(jié)構(gòu)就清晰多了,程序開發(fā)人員只需要對具體的小模塊進(jìn)行開發(fā),如商品信息模塊、客戶信息模塊等,然后再將各個小模塊組織到一起,最終完成整個系統(tǒng)的開發(fā),因此程序模塊化能夠簡化程序、降低程序的難度、縮短開發(fā)周期。
- .NET之美:.NET關(guān)鍵技術(shù)深入解析
- 零起步玩轉(zhuǎn)掌控板與Mind+
- Ceph Cookbook
- Java Web程序設(shè)計
- ArcGIS By Example
- Linux Shell核心編程指南
- Julia for Data Science
- Python從入門到精通(第3版)
- ASP.NET Web API Security Essentials
- OpenCV 3.0 Computer Vision with Java
- Applied Deep Learning with Python
- Shopify Application Development
- C語言程序設(shè)計教程
- Mastering Bootstrap 4
- 體驗之道:從需求到實踐的用戶體驗實戰(zhàn)