自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編程命名中的7+1個(gè)提示

開發(fā) 開發(fā)工具
編程中的命名是基本功,但其中也有很多需要注意的地方。壞的命名經(jīng)常容易令人一頭霧水。本文提供了7條命名中的建議,以及一條黃金法則??傊?,變量名是編程的第一步,第一步走好了,后面才走得好。

作者為編程命名提供了7+1個(gè)提示如下:

1.- 變量應(yīng)該是盡可能的望文生義。千萬不要使用教材中的命名方式。

◆好的變量: daysDateRange, flightNumber, carColor.

◆壞的變量: days, dRange, temp, data, aux…

在我們的日常工作中,有很大數(shù)量的開發(fā)人員在編程命名中喜歡使用短的變量名,而不是有含義的變量名。這主要是因?yàn)槲覀兇髮W(xué)教科書的那些示例所造成的,人都是先入為主,所以,教科書中的那些很抽象,帶著演示的變量命名影響了我們一代又一代的程序員,并影響了他們很多年。雖然那些短的,教材式的變量名,可能會(huì)讓你少打一些字,但其實(shí),這是非常非常不好的。因?yàn)檐浖木S護(hù)成本遠(yuǎn)遠(yuǎn)大于了軟件的開發(fā)成本,如果你不取一個(gè)好的一點(diǎn)的變量名,那么當(dāng)進(jìn)行代碼評(píng)審時(shí),當(dāng)進(jìn)行bug fixing時(shí),當(dāng)進(jìn)行代碼重構(gòu)時(shí),當(dāng)進(jìn)行代碼維護(hù)時(shí),你的某個(gè)變量名可能會(huì)讓你一頭霧水,不知道所措,還可以會(huì)讓你走入陷阱,造成更大的時(shí)間成本。所以,一個(gè)可閱讀的代碼必然和那些不錯(cuò)的變量名分不開,而這也能讓你的軟件間接上有更好的質(zhì)量。

2.- 變量名不要太長(zhǎng),盡可能地簡(jiǎn)短

只有簡(jiǎn)單和簡(jiǎn)短的變量名才是容易閱讀的。因?yàn)槟愕淖兞棵欢〞?huì)用于程序語句中,所以,為了讓你的程序語句看起來的簡(jiǎn)短,你的變量名也應(yīng)該短一點(diǎn),不然寫出來的一個(gè)表達(dá)式就會(huì)顯得很復(fù)雜。

當(dāng)然,在有些時(shí)候,一個(gè)有含義的變量名和一個(gè)簡(jiǎn)短的變量名可能存在一些沖突。這相當(dāng)鍛煉我們的語言能力——如果有最精煉的詞語來表達(dá)最豐富的含義。如果實(shí)在做不到,那么,在編程命名中取一個(gè)有含義的變量名要比取一個(gè)簡(jiǎn)短的變量名更好一些。不管怎么樣,我們希望即簡(jiǎn)短又有豐富的含義,但如果不能兩全,那有含義優(yōu)先級(jí)更高一些。

◆壞的變量:howLonDoesItTakeToOpenTheDoor, howBigIsTheMaterial…

◆好的變量:timeToOpenTheDoor, MaterialSize.

3.- 可以使用縮寫,但需要有一些注釋

有一些時(shí)候,我們需要使用一些縮寫來命名變量,比如:用usr來表示user,用gp來表示group,用conf來表示configuration,用cwd來表示current working directory,用ptr來代碼point to reference,等等,等等。縮寫一般要用在大家可以看得懂的,而不是為了縮寫而縮短一個(gè)單詞,當(dāng)然,如果你把縮寫后的變量名加上注釋,那就更加穩(wěn)妥了。關(guān)于一些約定俗成的縮寫,可參看本文的附錄一。

4.- 使用合適的匈牙利編程命名規(guī)則

這里有一篇非常不錯(cuò)的英文文章告訴你 《什么是合適的匈牙利命名 》,這篇文章同時(shí)還告訴你如何去用他?;旧蟻碚f,匈牙利命名法主要是為變量加上某種前綴以標(biāo)識(shí)這個(gè)變量的類型,或是一種方法的功能。其基本編程命名原則是:變量名=屬性+類型+對(duì)象描述。

比如:在描述類型方面:指針p,函數(shù)fn,長(zhǎng)整型 l,布爾b,浮點(diǎn)型(有時(shí)也指文件)f,雙字 dw,字符串 sz,短整型 n,雙精度浮點(diǎn) d,無符號(hào) u……等等。關(guān)于更多的命名規(guī)范,請(qǐng)參見附錄二。

注意,匈牙利命名也是有不好的地方的,比如你要把一個(gè)整形改成一個(gè)浮點(diǎn)型,你除了要改變這個(gè)變量的類型,你還要改變這個(gè)變量的名字。這是相當(dāng)麻煩的。而且,在某些時(shí)候,這種前綴式的命名可以反而讓你不知所措。另外,在C++中,有了類以后,這種命名方法就顯得不容易去實(shí)施了。所以,合適地使用匈牙利命名方式背后的思想是很關(guān)鍵的。

5.- 不要使用反邏輯來為編程命名

◆好的命名:  IsEnabled.

◆壞的命名: IsNotEnabled.

在閱讀的時(shí)候,我們更喜歡正向的邏輯,而不是反向邏輯。這一規(guī)則不單單的命名,在條件語句中,我們也是要盡量不要使用這種反面的邏輯。如:if (! (isAdmin || isUser)),這樣的語句很不符合人讀代碼的習(xí)慣,寫成這樣會(huì)更好一些——if (!isAdmin && !isUser)。

6.- 保持一致性

保持所有代碼的一致性。使用相同的命名規(guī)則。這外世界上沒有最好的命名規(guī)范。但有一點(diǎn)是可以確認(rèn)的,那就是在一個(gè)代碼庫中,應(yīng)該使用一致的命名規(guī)則,即使這個(gè)規(guī)則不那么好,但整個(gè)團(tuán)隊(duì)使用一致的就是好的。

7.- 附和應(yīng)用程序的領(lǐng)域術(shù)語

在不同的領(lǐng)域中,不同的觀念會(huì)有非常特別和不同的意思。例如:?jiǎn)卧~“order”并不總是意味著“次順”,有些時(shí)候,其意味著“訂單”,有些時(shí)候,意味著“命令”,有些時(shí)候,意為著“規(guī)則”。所以,在某個(gè)領(lǐng)域中,某些單詞會(huì)有不同的含義,所以,這需要我們的命令去附和這些領(lǐng)域。

黃金法則- 花一些時(shí)間去思考去權(quán)衡一下你的變量名

當(dāng)你設(shè)計(jì)好一個(gè)的變量名一個(gè)函數(shù)名的時(shí)候,別著急去使用他,停下來,想一想,這個(gè)變量名是否合適,是否還有更好的?也許你正在使用的是一個(gè)很不好的變量名。有些時(shí)候,需要我們權(quán)衡利弊一下,可能還要去和同事討論一下。

總之,變量名是編程的第一步,第一步走好了,后面才走得好。試想,無論是你或你的同事在使用一些好的變量名編程是一件多么輕松的事啊。

 

附錄:部分的縮寫規(guī)范


完整單詞 縮寫
A  
average avg
B  
back bk
background bg
break brk
buffer buf
C  
color cr,clr
control ctrl
D  
data dat
delete del
document doc
E  
edit edt
error err
escape esc
F  
flag flg
form frm
G  
grid grd
I  
increment inc
information info
initial init
insert ins
image img
L  
lable lab
length len
list lst
library lib
M  
manager mgr,mngr
message msg
O  
Oracle Ora
P  
panorama pano
password pwd
picture pic
point pt
position pos
print prn
program prg
S  
server srv
source src
statistic stat
string str
Sybase Syb
T  
temp tmp
text txt
U  
user usr
W  
window win,wnd

附錄二、匈牙利命名法
  a       Array                       數(shù)組
  b       BOOL (int)                  布爾(整數(shù))
  by      Unsigned Char (Byte)        無符號(hào)字符(字節(jié))
  c       Char                        字符(字節(jié))
  cb      Count of bytes              字節(jié)數(shù)
  cr      Color reference value       顏色(參考)值
  cx      Count of x (Short)          x的集合(短整數(shù))
  dw      DWORD   (unsigned long)     雙字(無符號(hào)長(zhǎng)整數(shù))
  f       Flags                       標(biāo)志(一般是有多位的數(shù)值)
  fn      Function                    函數(shù)
  g_      global                      全局的
  h       Handle                      句柄
  i       Integer                     整數(shù)
  l       Long                        長(zhǎng)整數(shù)
  lp      Long pointer                長(zhǎng)指針
  m_      Data member of a class      一個(gè)類的數(shù)據(jù)成員
  n       Short int                   短整數(shù)
  p       Pointer                     指針
  s       String                      字符串
  sz      Zero terminated String      以0結(jié)尾的字符串
  tm      Text metric                 文本規(guī)則
  u       Unsigned int                無符號(hào)整數(shù)
  ul      Unsigned long (ULONG)       無符號(hào)長(zhǎng)整數(shù)
  w       WORD (unsigned short)       無符號(hào)短整數(shù)
  x,y     x, y coordinates (short)    坐標(biāo)值/短整數(shù)
  v       void                        空

有關(guān)項(xiàng)目的全局變量用g_開始,類成員變量用m_,局部變量若函數(shù)較大則可考慮用l_用以顯示說明其是局部變量。
前綴       類型        例子
g_      全局變量       g_Servers
C       類或者結(jié)構(gòu)體   CDocument,CPrintInfo
m_      成員變量       m_pDoc,m_nCustomers

VC常用前綴列表:
前綴   類型   描述                      例子
ch     char    8位字符                   chGrade
ch     TCHAR   16位UNICODE類型字符       chName
b      BOOL    布爾變量                  bEnabled
n      int     整型                      nLength
n      UINT    無符號(hào)整型                nLength
w      WORD    16位無符號(hào)整型            wPos
l      LONG    32位有符號(hào)整型            lOffset
dw     DWORD   32位無符號(hào)整型            dwRange
p      *       內(nèi)存模塊指針,指針變量   pDoc
lp     FAR*    長(zhǎng)指針                    lpDoc
lpsz   LPSTR   32位字符串指針           lpszName
lpsz   LPCSTR  32位常量字符串指針       lpszName
lpsz   LPCTSTR 32位UNICODE類型常量指針  lpszName
h      handle  Windows對(duì)象句柄           hWnd
lpfn   (*fn)() 回調(diào)函數(shù)指針              lpfnAbort

Windows對(duì)象名稱縮寫:
Windows對(duì)象 例子變量  MFC類       例子對(duì)象
HWND        hWnd;      CWnd*       pWnd;
HDLG        hDlg;      CDialog*    pDlg;
HDC         hDC;       CDC*        pDC;
HGDIOBJ     hGdiObj;   CGdiObject* pGdiObj;
HPEN        hPen;      CPen*       pPen;
HBRUSH      hBrush;    CBrush*     pBrush;
HFONT       hFont;     CFont*      pFont;
HBITMAP     hBitmap;   CBitmap*    pBitmap;
HPALETTE    hPalette;  CPalette*   pPalette;
HRGN        hRgn;      CRgn*       pRgn;
HMENU       hMenu;     CMenu*      pMenu;
HWND        hCtl;      CStatic*    pStatic;
HWND        hCtl;      CButton*    pBtn;
HWND        hCtl;      CEdit*      pEdit;
HWND        hCtl;      CListBox*   pListBox;
HWND        hCtl;      CComboBox*  pComboBox;

【編輯推薦】

  1. 編程對(duì)軟件測(cè)試人員意味著什么?
  2. 對(duì)Java編程思想的忠告
  3. TopCoder國際編程大賽 中國程序員奪冠
  4. 6月編程語言排行榜:JavaScript轉(zhuǎn)正在即
  5. 編程語言的評(píng)測(cè) 性能和靈活性的最佳平衡
責(zé)任編輯:yangsai 來源: 酷殼
相關(guān)推薦

2017-09-01 11:01:22

開發(fā)編程習(xí)慣

2015-12-25 10:41:44

編程賺錢方法

2020-08-06 10:03:37

密碼網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2019-03-29 15:17:30

2020-10-27 07:37:07

Python

2020-07-20 10:29:20

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2010-08-03 08:54:07

JDK 7Lambda表達(dá)式函數(shù)式編程

2020-08-31 08:04:00

Python編程開源庫

2015-06-10 10:08:55

編程如何命名

2012-02-14 15:42:32

CSS3

2020-11-12 19:02:43

命名編程編碼

2015-11-05 08:59:19

編程Visual Stud擴(kuò)展

2012-04-19 10:12:12

ibmdw

2009-04-22 08:56:11

Windows 7微軟操作系統(tǒng)

2017-06-21 14:16:56

編程程序員開發(fā)

2024-04-07 08:12:54

設(shè)計(jì)模式工具

2009-09-01 16:12:41

C#命名指南

2024-03-08 16:47:32

2009-08-27 16:30:08

C#編程命名規(guī)范

2022-10-30 14:22:25

Python編程模塊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)