iT邦幫忙

DAY 7
2

程式設計心法系列 第 7

程式設計心法:6.資料型別--列舉型別

  • 分享至 

  • xImage
  •  

列舉?我只知道所得稅可以使用列舉扣除額,程式設計也有這個項目嗎?

列舉(Enum)型別,就像列舉的扣除額一樣,您可以將一些設定值設成列舉型別,您的值就只限定在這些列舉出來的值當中;這樣解釋或許很抽象,我們看一個實際程式設計的畫面就可以知道。

如圖中所示,我們在判斷 ADO.Net 的 Connection State 時,就會使用到列舉型態,來判斷目前 Connection 的狀態為何,進一步做後續的判斷處理,這樣對於程式設計會容易理解許多。
在書中就提到,使用列舉型別的幾點建議:
.利用列舉型別來增進程式的可讀性
例如我們在程式中寫了一段 Code

if ChosenColor=1

對於程式的閱讀上,是不能知道這是什麼顏色的,但是如果改寫成

if ChosenColor=COLOR_RED

就很容易明白,這段程式碼的作用,也不用耗費時間做註解

.使用列舉型別增進可靠度
使用列舉型別的另一個好處,就是可以將變數的值限定在列舉的型別當中,讓 Compiler 可以知道列舉型別代表的意義,當有超出型別範圍的值出現,就會 raised error。

.利用列舉型別使程式容易修改
另一個好處,跟之前提到的魔術數字或魔術字串一樣,將寫死在程式中的數字或字串改以列舉型別的方式替代,會使程式更加容易修改,就如同我們使用全域變數一樣,但是列舉型別可以限制變數值的範圍,讓程式更加嚴謹。

.利用列舉型別取代布林變數
我們常會使用函式來做運算結果的判斷,如函式傳回值的 TRUE/FALSE,但是常常我們更想知道的是執行後的狀態,這時候布林變數就不符合我們的需求,如果改以像 Success/Warning/FataError 之類的回傳訊息,這樣會讓程式更有彈性一些。

很幸運的,在 VB.Net 中,也提供自定 enum 型別的功能,如以下寫法:

Imports System

Public Class MainClass
    Private Enum Names As Integer
        Norman = 1
        Mike = 2
        Reece = 3
    End Enum

    Shared Sub Main()
       System.Console.WriteLine(Names.Norman.ToString & " = " & Names.Norman)
       System.Console.WriteLine(Names.Mike.ToString & " = " & Names.Mike)
       System.Console.WriteLine(Names.Reece.ToString & " = " & Names.Reece)

    End Sub
End Class

(參考來源:http://www.java2s.com/Code/VB/Language-Basics/EnumdataDemo.htm

本系列文章


上一篇
程式設計心法:5.資料型別--布林變數
下一篇
程式設計心法:7.資料型別--具名常數
系列文
程式設計心法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言