良好的編程習慣

***************************************************

更多精彩,歡迎進入:http://shop115376623.taobao.com

***************************************************


良好的編程習慣
??????良好的習慣對于人的成長是非常重要的,良好的編程習慣對于我們編程能力的提高也是非常重要的。我們編程時要有良好的風格,源代碼的邏輯簡明清晰,易讀易懂是好程序的重要標準。
?????其實編程的過程中最容易忽略的還是程序的“風格”。這些東東有時讓人挺煩的,剛剛放射出光茫的思想似乎被約束住了,本來是靈感發現,還要在后面羅索上半天。
?????程序需要風格嗎?讓我們的程序寫得更加平易近人,更加生動對我們的編程是大有益處的。對我們的程序學習也能起到事半功倍的作用。編程過程中遵守的不成文的標準,對于我們和他人的交流和自己的再學習都是有益無害的。畢竟有時我們寫的程序不是只給自己看的,也不是一時興起,不管以后。 好的編碼可使源代碼的可讀性強且意義清楚,與其他語言約定相一致,并且盡可能直觀。我們自己一眼能看出個大概,在別人眼中也不至于成為千古奇書。下面以VB為例,對程序風格做一下全面的概述,希望對您的編程水平的提高有所幫助。

---------------------------------------------------------------------------------------------------------
一、程序內部文檔應具備的規則
1、標識符應含有含義鮮明的文字。
?????含義鮮明的文字,能正確地提示程序對象所代表的實體。這對于幫助閱讀者理解程序是非常重要的。如果用縮寫的形式,那么縮寫規則應該一致,并且應該給每個名字加注解。在VB中,主要有如下的約定:
(一)對象命名約定
?????應該使用一致的前綴來命名對象,使人們容易識別對象的類型。例如我們常用控件CommandButton(命令按鈕)可用cmd做為其前綴。Form以frm,Image以 img ,Label以 lbl,List Box 以lst,PictureBox以 pic,Timer以 tmr,等等,在我們編程的過程中,我們看到下面的名稱cmdExit我們就知道這一定是一個命令按鈕了。如果是第三方提供的控件,我們的說明最好要清晰地標出制造商的名稱,以區別于我們的常用控件。
(二)常量和變量命名約定
?????除了控件以外,常量和變量也是我們編程過程中經常遇到的,我們和他們打交道也是通過名字。
(1)給變量加范圍前綴
?????變量按其作用范圍可分做三類,過程級,模塊級和全局,所以我們在編程的過程中應將三者加以區別。我們在使用變量時,為了更好地體現代碼重用和可維護原則,其定義范圍應盡量縮小,這樣將使我們的應用程序更加容易理解和易于控制。在VB應用程序中,只有當沒有其他方便途徑在窗體間共享數據時才使用全局變量。當使用全局變量時,在一個單一模塊中聲明它們,并按功能分組,給模塊取一個有意義的名字。較好的編碼習慣是盡可能地定模塊化的代碼。除了全局變量,過程和函數應該僅對傳遞給它們的的對象操作。在過程中使用的全局變量應該在過程起始處的聲明部分標識出來。變量的作用范圍前綴如下:全局 g(global) ,模塊級 m(model),本地過程不需要使用。例如:gintFlag,表示全局整型變量,mstrPassword,可表示模塊級字符型變量。
(2)聲明所有變量原則。聲明所有變量將會節省編程時間,鍵入錯誤將大大減少,我們可在程序開始寫上如下語句:
?????Option Explicit
?????該語句要求在程序中聲明所有變量。
(3)變量數據類型聲明。可通過下面的前綴來做為變量的數據類標志。
?????Boolean bln
?????Byte byt
?????Double dbl
?????Integer int
?????String str
(4)常量。常量的命名,可遵循與變量命名大體相同的原則。
(5)對變量和過程名作出描述。變量或過程名的主體應該使用大小寫混合的形式,并且應該足夠長以描述它的作用。而且,函數名應以一個動詞開頭。如JudgeDialog。

2、適當的注解
注解是程序員和程序讀者通信的重要手段,正確的注解非常有助于對程序的理解。VB中代碼注解約定如下:所有的過程和函數都應該以描述這段過程的功能的一段簡明的注釋開始,說明該程序是干什么的,至于是如何做的,也就是編程的細節,最好不要包括。因為可能日后我們要修改程序,這樣做會帶來不必要的注釋維護工作,如果不修改,將提供誤導信息,可能成為錯誤的注釋。因為代碼本身和后面程序中的注釋將起到相應的說明作用。
?????過程中的注釋塊應該包括如下標題:
?????小節 描述內容
?????目的 該過程完成什么
?????假設 列出每個外部變量、控件、打開文件或其他不明顯元素
?????效果 列出每個被影響的外部變量、控件或文件及其作用(只有當它不明顯時)
?????輸入 每一個可能不明顯的參數。
?????返回 函數返回值的說明
格式化代碼
(1)標準的,基于制表位的嵌套應該包括一個嵌注釋,來描述該變量的使用。
(2)變量、控件及過程的命名應該足夠清楚,使得只有復雜的執行細節才需要嵌入注釋。
(3).bas 模塊包含包含工程的VB一般常量聲明,在其起始處,應包括程序的綜述,列舉主要數據對象,過程、算法、對話、數據庫及系統需求。

3、程序的視覺組織
?????程序的視覺組織可用階梯式,結構化的程序風格對于我們實際編程也很有意義,可極大地改善代碼的可讀性。主要有代碼注釋和一致性縮進。

---------------------------------------------------------------------------------------------------------
二、數據說明
?????數據結構的組織和復雜程序是在設計期間就已經確定了的,然而數據說明的風格卻是在寫程序時確定的。為了使數據更容易理解和維護,有一些比較簡單的原則應該遵循。
?????1、數據說明的次序應該標準化。有次序就容易查閱。因此能夠加速測試、調試和維護的過程。當多個變量名在一個語句中說明時,應按字母順序排列這些變量。
?????2、數據結構復雜時,應加以說明其特點和實現方法。

---------------------------------------------------------------------------------------------------------
三、語句構造
?????語句構造原則:每個語句應該簡單而直接,不能為了提高效率而使程序變得過分復雜。下述規則的使用有助于語句簡單明了。
?????1、不要為了節省空間把多行語句寫在一行;
?????2、盡量避免復雜的條件測試;
?????3、盡量減少對“非”條件的測試;
?????4、避免大量使用循環嵌套和條件嵌套
?????5、利用括號使邏輯表達式或算術表達式的運算次序清晰直觀。

---------------------------------------------------------------------------------------------------------
四、輸入輸出
?????1、對所有輸入數據都進行檢驗;
?????2、檢查輸入項重要組合的合法性;
?????3、保持輸入格式簡單;
?????4、使用數據結束標志,不要要求用戶指定輸入數據的數目
?????5、明確提示交互式輸入的請求,詳細說明可用的選擇或邊界數值;
?????6、當語言對格式有嚴格要求時,應保持輸入格式一致
?????7、設計良好的輸出報表;
?????8、給所有輸出加標志;

---------------------------------------------------------------------------------------------------------
五、效率
?????效率三原則:
?????1、效率是性能的要求,需求分析時就應確定;
?????2、效率是靠設計提高的;
?????3、程序的效率和程序的簡單程序是一致的。
(一)運行時間
?????(1)寫程序前先簡化算術和邏輯表達式;
?????(2)他細研究嵌套的循環,以確定是否有語句從內層移到外層;
?????(3)盡量避免使用多維數組;
?????(4)盡量避免使用指針和復雜的表;
?????(5)使用執行時間短的算術運算;
?????(6)不要混合使用不同的數據類型;
?????(7)盡量使用整數運算和布爾表達式
(二)存儲器效率
(三)輸入輸出效率
?????如果用戶是為了給計算機提供輸入信息或為了理解計算機輸入的信息,所需花費的腦力勞動是經濟的,那么,人和計算機之間的通信效率就高。簡單清晰是關鍵。

---------------------------------------------------------------------------------------------------------
六、小結
?????其實風格是非常重要的,程序的外表是我們交流中不可缺少的東西。象我們常說的紅顏命薄而歸疚于外表太靚,也常聽一些才子佳人的悲劇故事,提醒我們外表美而引出的一見鐘情的浪漫不可取。可讓人細想,才子佳人產生悲劇雖多,可也讓人找到過心動和美好的感覺,做為一個人,活了一輩子,連那種感覺都未體驗到,豈不比悲劇更加令人覺得可悲!編程亦然。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458847.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ntfs for mac使用注意事項有哪些?

2019獨角獸企業重金招聘Python工程師標準>>> mac的用戶有很多,一些用戶朋友會發現自己的電腦是無法讀寫ntfs驅動器的。而ntfs驅動器又是一種常用的驅動器。面對這種情況我們可以選擇用NTFS for Mac軟件來幫助我們,它可以讀寫ntfs驅動器&#…

android音樂播放器文章,Android復習09【內容提供者、音樂播放器】

目 錄PersonCpPersonCp.javainsert()ContentObserver音樂播放器1、添加讀寫權限1.1、動態權限授予(調用封裝好的方法)2、獲取音樂文件(MainActivity.java)2、Music.java(實體類)申請訪問SD卡的權限設置適配器下拉刷新PersonCpPersonCp.javapackage cn.wangzg.personcp;import a…

程序員的業余項目

程序員的業余項目&#xff0c;我們也叫它 side project。 前幾天&#xff0c;100offer 發起了一場活動叫 <尋找實干和堅持的技術力量>&#xff0c;他們是這么說的&#xff1a; 世界在被代碼改變著&#xff0c;而我們在創造著代碼。 僅僅是因為好玩&#xff0c;他開發了…

C語言的數組名和對數組名取地址

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 相信不少的C語言初學者都知道&#xff0c;數組名相當于指針&#xff0c;指向數組的首地…

小米 android 8,小米華為們誰最良心?10大手機廠商安卓8.0升級情況盤點

3月8日&#xff0c;谷歌放出了首個安卓9.0開發者預覽版的固件包&#xff0c;不出意外的話&#xff0c;它的正式版會在今年正式亮相。但對廣大安卓用戶來說&#xff0c;想要立刻用上最新系統并非易事。目前來說&#xff0c;安卓碎片化問題依然嚴重&#xff0c;我們不妨現實點&am…

窺探Swift之數組安全索引與數組切片

在Swift中的數組和字典中下標是非常常見的&#xff0c;數組可以通過索引下標進行元素的查詢&#xff0c;字典可以通過鍵下標來獲取相應的值。在使用數組時&#xff0c;一個常見的致命錯誤就是數組越界。如果在你的應用程序中數組越界了&#xff0c;那么對不起&#xff0c;如果由…

大小端模式的快速判斷方法

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 大小端的問題剖析&#xff1a; 嵌 入式系統開發者應該對Little-endian和Big-endian模…

【RAC】How to Proceed from Failed 11gR2 CRS Installation

Applies to: [ID 942166.1] Oracle Server – Enterprise Edition – Version: 11.2.0.1 to 11.2.0.2 – Release: 11.2 to 11.2 Generic UNIX Generic Linux Goal This goal of this note is to provide steps to proceed from failed 11gR2 Grid Infrastructure installat…

WinForm支持拖拽效果

有一個MSDN客戶提問在WinForm中如何實現拖拽效果——比如在WinForm中有一個Button&#xff0c;我要實現的效果是拖拽這個Button到目標位置后生成一個該控件的副本。 其實這個操作主要分成三步走&#xff1a; 1&#xff09;確定被拖拽的對象&#xff1a; 這里是Button&#xff0…

win7 64位出現桌面右鍵鼠標顯示忙碌

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 將下面綠色內容復制到txt文本中&#xff0c;然后另存為1.bat 雙擊運行即可 【針對64位…

android tee,Android 9.0的新增安全特性與TEE

Android P&#xff0c;預計將于 2018 年第三季度發布最終版本。特別是Android8.0以來&#xff0c;安全性是Android版本變更的一個重要因素。從安全性增強方面來看&#xff0c;本次Android9.0版本主要有以下幾個方面&#xff1a;統一的指紋身份驗證對話框Android P 中&#xff0…

哪些要素會讓咱們呈現抑郁癥的病癥

依據最新研討標明&#xff0c;一自個的性情怎樣&#xff0c;本來是天然生成的&#xff0c;后天的日子&#xff0c;僅僅對咱們的性情進行批改&#xff0c;但在咱們潛意識中&#xff0c;違反自個性情的行動&#xff0c;會讓咱們感到格外累&#xff0c;所以&#xff0c;不少人即是…

如何定義一個只能在堆上(棧上)生成對象的類?

在C中&#xff0c;類的對象建立分為兩種&#xff0c;一種是靜態建立&#xff0c;如A a&#xff1b;另一種是動態建立&#xff0c;如A* ptrnew A&#xff1b;這兩種方式是有區別的。 靜態建立一個類對象&#xff0c;是由編譯器為對象在棧空間中分配內存&#xff0c;是通過直接移…

canny算子的理論分析

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#x…

Android為spinner設置適配器,Android Spinner與適配器模式詳解及實例代碼

最近做項目對Android Spinner 使用&#xff0c;這里簡單寫個小例子&#xff0c;來測試如何使用。Spinner是一個下拉列表&#xff0c;往安卓界面中拖拽一個Spinner控件&#xff0c;在屬性中設置Android:entries“array/spinner_data”其中spinner_data為在string中設置的數組。數…

web框架-Struts開始

問題&#xff1a; 為什么有structs 作為一種框架&#xff08;frameset&#xff09;可以與傳統的mvc進行比較&#xff1f; MVC是一種模式數據處理、顯示和數據輸入分開&#xff0c;來規范開發&#xff0c;但是卻又并不規范。可以這樣想&#xff1a;有三家公司&#xff0c;他們對…

加快上架方法

估計最近蘋果app應用上架的比較多&#xff0c;審核比較慢&#xff0c;現在一個app從提交到上架短則7&#xff0c;8天&#xff0c;長則2&#xff0c;3個星期。我在實際上線應用時&#xff0c;總結了一個簡單實用的小技巧&#xff0c;可以加快上架時間&#xff0c;最近使用這種方…

接口自動化測試 返回html,接口自動化測試實戰(更新完畢)

前言自動化沒練習的項目怎么辦&#xff1f;自動化已經成為測試的必備技能之一了&#xff0c;所以&#xff0c;很多想跳槽的測試朋友都在自學&#xff0c;特別是最實用的接口自動化&#xff0c;但是很多人因為沒有可以練手的項目而苦惱&#xff0c;最終導致缺乏實戰經驗&#xf…

Opencv 圖像增強算法 圖像檢測結果及代碼

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#x…

php Hash Table(四) Hash Table添加和更新元素

HashTable添加和更新的函數&#xff1a; 有4個主要的函數用于插入和更新HashTable的數據: int zend_hash_add(HashTable *ht, char *arKey, uint nKeyLen,void **pData, uint nDataSize, void *pDest); int zend_hash_update(HashTable *ht, char *arKey, uint nKeyLen, void …