我通常在幾乎所有的 VBA 代碼中看到所有變數都在例如 Sub/Function 名稱行之后宣告
我知道并且我在我的一些代碼中間使用了變數宣告(不在回圈內)并且沒有看到任何問題。
我通常避免這樣做,因為我看到大多數 VBA 示例代碼都在第一行之后宣告了它們。我只想知道從專家/經驗豐富的 VB 程式員的角度來看有哪些風險。
uj5u.com熱心網友回復:
在中間宣告它沒有風險。
宣告在中間變數的效果是,它只能用于在該點之后而不是之前(這是范圍)。變數
的生命周期是不同的:當你進入程序時,變數被創建(分配并初始化為它各自的風格零),但你可能不會真正使用它,直到你到達它的作用域(程序中宣告它的點) )。
在回圈內部或外部宣告在 VB6/A 中沒有區別,因為它們沒有塊作用域,與 VB.NET 不同。
所以這兩種方法在性能上沒有區別(因為所有的變數都是在進入程序時創建的),但是在用法上有區別(你不能在宣告行之前使用創建的變數)。如果您認為這種區別有助于確保您沒有錯誤地使用變數,請僅在需要時宣告您的變數。否則,您可以自由選擇這兩種方法中的任何一種,只需始終如一地應用它(在開頭宣告大部分變數然后在中間宣告一些變數可能不是一個好主意)。
uj5u.com熱心網友回復:
在您真正需要它們時宣告您的變數。當您將所有宣告集中在程序的頂部時,重構就會變得更加困難。如果您想在閱讀代碼時仔細檢查您的宣告(或者,也許是其他人),在頂部搜索它可能再次非常不方便,除非您的程式很短。
uj5u.com熱心網友回復:
在您的子/函式頂部預先宣告您的變數,以便其他人(如果您是在一個月后看到代碼的,那么您)可以輕松閱讀和理解您的代碼需要計算的內容,以及哪些占位符/代碼運行需要變數。
您當然可以在任何地方宣告變數(只要您記得不要使用該變數,除非您已經實際宣告了它)。這可以作業,并且對代碼的性能沒有任何影響。在頂部宣告一些變數然后做一些作業,然后在代碼中間宣告另一組變數并不是好的做法。
Sub CalculateAge()
Dim BirthYear As Integer
Dim CurrentYear As Integer
'Code to fetch current year
'Code to get BirthYear from user/or document
'Code to report result
End Sub
將其與以下內容進行比較:
Sub CalculateAge2()
Dim BirthYear As Integer
'Code to ask the user or fetch the birth year from the document
Dim CurrentYear As Integer
'Code to populate currentYear
'Code to do the calculation and report result
End Sub
在第一個示例中,變數和邏輯有明顯的分離。第二,一切都是混合的。
第一個示例更容易閱讀和理解,尤其是如果您使用了良好的命名約定。
如果您查看類的撰寫和定義方式,您會看到通常首先宣告屬性,然后是下面的方法/邏輯。這是用于撰寫代碼的常見做法。
PS:在其他語言中,您可以在同一行中宣告和分配變數。在 C# 或 VB.Net 中,您可以這樣說:
int Age = CurrentYear - BirthYear;
但這在 VBA 中是不可能的。您需要單獨的一行用于宣告,另一行用于分配。由于您的變數被拆分,您不妨將宣告移動到某個公共位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/386810.html
