iT邦幫忙

0

●●●變數命名法投票

  • 分享至 

  • xImage

我公司用vb6 + MS SQL 2000來開發系統
最近在討論新系統「變數命名」的議題,分2派:
●中派:允許變數加入中文命名,如:txt品號, sub算月利潤率 ...等,理由:(甚至不用註解)可一眼即知其意
●英派:不允許變數加入中文命名,如:txtPartNo, Get_ProfitRate_M,理由:加入中文名,會使得整體程式變得難以辨識(因為table欄位有用到中文欄名)

請教各位支持何者?
理由? (暫不論舊系統的用法,及主管的意見)
thanks!

看更多先前的討論...收起先前的討論...
James iT邦大師 6 級 ‧ 2010-04-27 08:22:18 檢舉
反對用中文,因為用的人太少難免編譯器中有未發現的bug,
如果貴公司願意當白老鼠而微軟用願意幫貴公司除錯,
那我就投贊成票
我投「中派」一票

原因:table欄位有用到中文欄名
也不必太在乎變數用不用中文了

至於 table 的「column name」和「變數」如何區別
決定在命名的人和命名方式
跟「中英文」的關係其實不大
symis iT邦新手 3 級 ‧ 2010-04-27 09:44:24 檢舉
感謝指教,老實說,舊系統已經用中派命名法有3年了,從未遇過因為中文命名而編譯錯誤的案例,況且,所謂中派命名,其實在中文變數名之前,是有英文字串當辨識的。
symis iT邦新手 3 級 ‧ 2010-04-27 10:00:33 檢舉
感謝指教,英派者認為,欄名已用中文,程式註解又有中文,如今變數再用中英文混合,容易眼花潦亂,很難快速的找到需要的程式段,不知您看法如何?
ps. 欄名(黑色字),程式註解(綠色字),變數(黑色字)
我的觀念比較老派
所以我自己是採用第1種
我的公司和團隊也是用第1種

由於公司已經使用中文欄位名稱
也就是第2種或是第3種
在這個前提之下
我才會建議第2種
提供您參考

第1種(全英文)
txtEmpNo.Text = mobjADORst.Fields("empno")
txtAddress.Text = mobjADORst.Fields("address")
txtCity.Text = mobjADORst.Fields("city")

第2種(欄位變數都用中文)
txt員工編號.Text = mobjADORst.Fields("員工編號")
txt地址.Text = mobjADORst.Fields("地址")
txt城市.Text = mobjADORst.Fields("城市")

第3種(欄位中文、變數英文)
txtEmpNo.Text = mobjADORst.Fields("員工編號")
txtAddress.Text = mobjADORst.Fields("地址")
txtCity.Text = mobjADORst.Fields("城市")
補充一下
第1種和第2種最大的好處就是「比較不會打錯名稱」以及「一看就懂」
而第3種寫法可能的最大問題就是「容易打錯」
譬如:
員工編號是EmpNo
有人會打成EmpNumber或是EmployeeNo
就算沒打錯
大概也得另外準備份文件或對照表來說明
EmpNo = 員工編號

這點可能也得列入考慮...
symis iT邦新手 3 級 ‧ 2010-05-07 10:32:28 檢舉
感謝指教,您說得是
還有另2個考量:
* 命名時要傷腦筋
* 閱讀時,未必所有變數均能立即得知其意,常常要查照表也很費時
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
8
蟹老闆
iT邦大師 1 級 ‧ 2010-04-26 18:55:39
最佳解答

VB變數命名原則支援中文變數,若是不能用就沒必要讓中文也可當變數了,如果因為表格欄位有使用到中文名就不用中文當變數,那英語系的設計者可能會更困擾吧,這點我覺得不是考量的重點,要考量的是命名的規則。
上述 「命名原則」不等於「命名規則」

看更多先前的回應...收起先前的回應...
蟹老闆 iT邦大師 1 級 ‧ 2010-04-27 00:28:44 檢舉

先前有看過一篇命名規則的介紹,一時找不到,
如果貴公司若有系統的規畫出一套命名規則也不錯,屆時維基也會有台式命名法了:D
[駝峰式大小寫/url]
[url=http://zh.wikipedia.org/zh-tw/%E5%B7%B4%E6%96%AF%E5%8D%A1%E5%91%BD%E5%90%8D%E6%B3%95]巴斯卡命名法](http://zh.wikipedia.org/zh-tw/%E9%A7%9D%E5%B3%B0%E5%BC%8F%E5%A4%A7%E5%B0%8F%E5%AF%AB)
匈牙利命名法

蟹老闆 iT邦大師 1 級 ‧ 2010-04-27 00:29:49 檢舉
symis iT邦新手 3 級 ‧ 2010-04-27 09:39:08 檢舉

感謝指教,vb確實可用中文當變數,但此處的中派,是指:中文變數前,有加英文識別字串,不只變數,包括FormName、元件名等均同!
不知您支持何者?

蟹老闆 iT邦大師 1 級 ‧ 2010-04-27 12:20:14 檢舉

我支持中文命名原因是一看就明白,且對使用中文的人來說是非常的合用,最大好處就與你說的一樣一看就明白連註解都可以省了,我個人覺得要注意的是變數使用規則(慣例)而不是使用哪一種文字(但限於萬國碼裡有的字,VB支援的是萬國碼)。
如果要比較二者命名方式的優劣我會考量
編譯後的執行速度--中文與英文效能上會差多少?無力做比較(用想的應該差不了多少,所以支持使用中文:)).......
編譯後的程式大小--這這這重要嗎?好像跟寫作風格比較有關係
對後續非原開發者閱讀程式碼的難易度--這關係著開發與修改的速度
或許還可以加入其他因素來比較,以上只是我想到的。

蟹老闆 iT邦大師 1 級 ‧ 2010-04-27 12:21:33 檢舉

symis提到:
此處的中派,是指:中文變數前,有加英文識別字串

台式匈牙利命名法,呵

10
shunyuan
iT邦研究生 1 級 ‧ 2010-04-26 22:46:24

千萬別用中文命名變數。

這不合乎良好的變數命名原則。

symis iT邦新手 3 級 ‧ 2010-04-27 09:54:12 檢舉

感謝指教,可否請你再說明清楚一點,為什麼「不合乎良好的變數命名原則」?

shunyuan iT邦研究生 1 級 ‧ 2010-04-27 13:56:12 檢舉

symis提到:
感謝指教,可否請你再說明清楚一點,為什麼「不合乎良好的變數命名原則」?

Naming convention (programming)
http://en.wikipedia.org/wiki/Naming_convention_(programming)

symis iT邦新手 3 級 ‧ 2010-04-28 14:58:23 檢舉

感謝指教,哇!全英文...A...要我消化可能要一段時間。

6
lanvers
iT邦新手 5 級 ‧ 2010-04-27 15:39:10

不建議使用中文命名。
誠然,用中文的確對"台灣"開發人員比較方便,
這套命名規則影響所及應該是涵蓋貴公司所有系統的,
難道未來貴公司外包軟體開發時,也用這套命名規則要求外包開發人員?
一旦用了這套中文名規則的系統,若是需要進行平台轉換,
豈不是也要考量新平台適不適用中文變數??

看更多先前的回應...收起先前的回應...
symis iT邦新手 3 級 ‧ 2010-04-28 16:16:37 檢舉

感謝指教,本公司原本自行開發的軟體,不大可能外包。
至於新平台,要換的話,極可能是.NET,據我所知,code要全部重寫,不能移轉vb6過去,所以屆時,變數命名規則,再說吧!

外獅佬 iT邦大師 1 級 ‧ 2010-04-28 16:48:47 檢舉

symis提到:
是.NET,據我所知,code要全部重寫,不能移轉vb6過去

是嗎?VB6可以透過Visual Studio的升級方式,匯入再做些微修正就行了。
請參考:
http://msdn.microsoft.com/en-us/library/aa260644.aspx
http://support.microsoft.com/kb/309617/en-us

symis iT邦新手 3 級 ‧ 2010-05-03 17:36:59 檢舉

感謝您,聽我主管說,若用.NET,他想改用C#,因為支援較多!

外獅佬 iT邦大師 1 級 ‧ 2010-05-03 17:56:26 檢舉

symis提到:
感謝您,聽我主管說,若用.NET,他想改用C#,因為支援較多!

==....有差嗎?都是CLR...只是程式語言不同而已,骨子裡是一樣的。
而且網路上有VB.NET <-> C# converter

http://www.developerfusion.com/tools/convert/csharp-to-vb/

symis iT邦新手 3 級 ‧ 2010-05-04 14:21:05 檢舉

您真內行!

外獅佬 iT邦大師 1 級 ‧ 2010-05-04 14:25:12 檢舉

也不算是內行,只是跟.net相處很久了....從.net 1.0 beta的時代開始到現在 4.0...(煙)

symis iT邦新手 3 級 ‧ 2010-05-04 14:52:21 檢舉

我有做了一個vb的小程式如下:

save.la/EZ1612876636

不知如何測"許功蓋"的問題,請教大家,thanks!

symis iT邦新手 3 級 ‧ 2010-05-07 10:34:35 檢舉

聽說,

許功蓋之所以有問題,是因為那些中文字的第二Byte都是 \ 字元,
所以在一些不認識中文字的英文軟體,如果用到許功蓋當做路徑名稱
或者檔案名稱的話,在解析時就會導致錯誤產生,可能會說找不到該路
徑或者檔案!

我要發表回答

立即登入回答