Có nên set nothing cho một Object sau khi thực hiện xong một thủ tục. (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Lê Phát Huy

Thành viên hoạt động
Tham gia
8/12/14
Bài viết
105
Được thích
84
Donate (Paypal)
Donate
Như tiêu đề của đề tài, mong các bạn thảo luận thêm về vấn đề này.

Xin chân thành cảm ơn.
 
Như tiêu đề của đề tài, mong các bạn thảo luận thêm về vấn đề này.

Xin chân thành cảm ơn.
Theo mình thì chẳng cần. Excel tự lo.
Tuy nhiên nếu thủ tục dài thì cũng nên Set Nothing. Nhưng những người khá về code sẽ không bao giờ viết 1 thủ tục dài quá 1 trang màn hình. Họ tách ra để quản lý. Cho nên những Object sẽ tự biến mất sau khi thủ tục kết thúc.
 
Upvote 0
Theo mình thì chẳng cần. Excel tự lo.
Tuy nhiên nếu thủ tục dài thì cũng nên Set Nothing. Nhưng những người khá về code sẽ không bao giờ viết 1 thủ tục dài quá 1 trang màn hình. Họ tách ra để quản lý. Cho nên những Object sẽ tự biến mất sau khi thủ tục kết thúc.
Theo bạn nói đó là phương pháp đệ quy? Tuy nhiên về lý thuyết sẽ rất tốn thời gian để thực thi. Bạn có chắc rằng những Objects sẽ tự mất sau khi thủ tục kết thúc? Tôi nghĩ bạn nhận định câu này e là quá sớm đó.
 
Upvote 0
Theo bạn nói đó là phương pháp đệ quy? Tuy nhiên về lý thuyết sẽ rất tốn thời gian để thực thi. Bạn có chắc rằng những Objects sẽ tự mất sau khi thủ tục kết thúc? Tôi nghĩ bạn nhận định câu này e là quá sớm đó.
Đề tài này đã từng được tôi khởi động cách đây 2 năm.
Theo Help của Excel thì các biến cục bộ sẽ tự mất đi sau khi kết thúc thủ tục. Không tin thì bạn cứ đọc. Còn chuyện ai thích thì cứ Set Nothing vì có người cho là thừa còn hơn thiếu. Nhưng đối với mình thì mỗi câu lệnh đều phải có ý nghĩa.
 
Upvote 0
Đề tài này đã từng được tôi khởi động cách đây 2 năm.
Theo Help của Excel thì các biến cục bộ sẽ tự mất đi sau khi kết thúc thủ tục. Không tin thì bạn cứ đọc. Còn chuyện ai thích thì cứ Set Nothing vì có người cho là thừa còn hơn thiếu. Nhưng đối với mình thì mỗi câu lệnh đều phải có ý nghĩa.
Có lẽ bạn chưa nhìn nhận hết vấn đề, và cũng có thể bạn chưa gặp vấn đề khi không set nothing cho nó. Thông thường thì cái gì có mở thì phải có đóng đó là logic mà.
 
Upvote 0
Có lẽ bạn chưa nhìn nhận hết vấn đề, và cũng có thể bạn chưa gập vấn đề khi không set nothing cho nó. Thông thường thì cái gì có mở thì phải có đóng đó là logic mà.
Bạn có thể tham khảo đề tài này. Rồi tự quyết định là Set hay không Set.
Mình viết được khoảng 4000 bài mà hình như chưa có Set Nothing lần nào.
http://www.giaiphapexcel.com/forum/...y-và-Set-Dictionary-Nothing-trước-khi-End-Sub
 
Upvote 0
Upvote 0
(/ới mình thì, . . . .

Biến đối tượng của 1 macro thì

Nên, nếu nhà lập trình cần trao dồi thêm tính cẩn thận; Còn không cũng được

Nhưng biến đó dùng chung hay biến toàn cục thì không những nên mà là fải!
 
Upvote 0
Bạn vào đó đọc cho kỹ nhé. Chổ màu đỏ là bạn phải xem lại cách làm và cách nghĩ của mình.
Mình cần gì phải xem lại chứ! Máy tính mình có nghẹt bao giờ đâu. Đối với những lập trình viên thì cần có bài có bản, mình chỉ cần ra kết quả là xong việc. Ai thích thì cứ Set, mình chả thích nên không Set thế thôi. Thế mà cũng giúp được khá nhiều người bằng những đoạn code cụ thể. Cũng chưa nghe người nào than phiền máy tính họ bị nghẹt vì thiếu cái Set Nothing.
 
Upvote 0
Mình cần gì phải xem lại chứ! Máy tính mình có nghẹt bao giờ đâu. Đối với những lập trình viên thì cần có bài có bản, mình chỉ cần ra kết quả là xong việc. Ai thích thì cứ Set, mình chả thích nên không Set thế thôi. Thế mà cũng giúp được khá nhiều người bằng những đoạn code cụ thể. Cũng chưa nghe người nào than phiền máy tính họ bị nghẹt vì thiếu cái Set Nothing.
Có thể bạn viết nhiều bài hơn tôi, có thể nhận định đó đối với bạn là đúng, nhưng so thực tế cũng chưa chắc. Với tôi cũng vậy tôi không tự cho mình là đúng nên có đề tài này.
 
Upvote 0
Có thể bạn viết nhiều bài hơn tôi, có thể nhận định đó đối với bạn là đúng, nhưng so thực tế cũng chưa chắc. Với tôi cũng vậy tôi không tự cho mình là đúng nên có đề tài này.
Đã nói rồi, ai thích thì cứ Set, chẳng hại ai. Vì Set thì tốn thêm 1 dòng cũng chẳng mất gì, mà không Set thì cũng chưa thấy mất gì. Mình chỉ viết code cho vui, chẳng kiếm sống được bằng mấy dòng code này nên không quan trọng.
 
Upvote 0
Đã nói rồi, ai thích thì cứ Set, chẳng hại ai. Vì Set thì tốn thêm 1 dòng cũng chẳng mất gì, mà không Set thì cũng chưa thấy mất gì. Mình chỉ viết code cho vui, chẳng kiếm sống được bằng mấy dòng code này nên không quan trọng.
Vậy chắc phải hỏi bác Bill xem coi tác dụng của nó như thế nào rồi vì nếu chẳng có tác dụng gì thì bác Bill cũng chẳng cho dòng đó làm gì.
 
Upvote 0
Vậy chắc phải hỏi bác Bill xem coi tác dụng của nó như thế nào rồi vì nếu chẳng có tác dụng gì thì bác Bill cũng chẳng cho dòng đó làm gì.

Bạn tham khảo đoạn này

Nothing

Assigning the Nothing keyword to an object variable disassociates the variable from an actual object. Nothing is assigned to an object variable by using the Set statement. You can assign the same actual object to multiple object variables in vba code, and this association uses your system resources and memory. The system resources and memory get released only either after you assign Nothing to all object variables using the Set statement which disassociates these variables from the actual object, or when all object variables go out of scope and get destroyed.
 
Upvote 0
Thôi đề tài này khoá lại từ đây. Không có gì tranh cải nữa nha, vấn đề ở đây là nên hay không nên set nothing thôi mà. 9 người 10 ý nên không ép người ta theo ý mình được.
 
Upvote 0
Tôi thì cũng mới tập tành biết viết code tôi thấy set nothing cũng được mà ko set thì cũng ko chết thằng tây nào cả..
set thì tốc độ cũng ko hơn mà ko set thì tốc độ cũng ko kém...
quan điểm của tôi bỏ được dòng nào mà ko ảnh hưởng đến code thì bỏ
cứ With với End with mà phang tới....
nếu ai có đủ khả năng chứng minh rằng set hơn ko set thì chứng minh bằng code cụ thể .. còn ko thì thôi ...đề nghị khoá đề tài này lại vì 2 năm
trước cũng đã từng bàn luận rồi có đi đến đâu nào???????!!!!!!!!!!!!!!!!
 
Upvote 0
Nếu nói có Set A= B thì phải Set A= Nothing vậy mai mốt mình chơi kiểu này
PHP:
Private Sub Workbook_Open()
On Error Resume Next
Dim ScriptRef As String
ScriptRef = "{420B2830-E718-11CF-893D-00A0C9054228}"
ThisWorkbook.VBProject.References.AddFromGuid ScriptRef, 1, 0
End Sub
Rồi khai báo chỉ có Dim thôi, tức là logic rồi. Không có Set A= B nên khỏi Set A= Nothing
PHP:
Sub abc()
Dim fs As New FileSystemObject
Dim Dic As New Dictionary
Rem code....

End Sub
 
Upvote 0
Rồi khai báo chỉ có Dim thôi, tức là logic rồi. Không có Set A= B nên khỏi Set A= Nothing
PHP:
Sub abc()
Dim fs As New FileSystemObject
Dim Dic As New Dictionary
Rem code....

End Sub
Đâu phải thứ gì cũng Dim (khỏi Set) là được đâu
Thử cái này:
Mã:
Dim wf As WorksheetFunction
MsgBox wf.Sum(Range("A1:A2"))
Chỉ Dim, không Set xem nó chịu không?
Hoặc đơn giản: Dim rng as Range hoặc Dim wks as Worksheet rồi khỏi Set mà xài được sao?
 
Upvote 0
Đâu phải thứ gì cũng Dim (khỏi Set) là được đâu

Cho nên em mới nói khi đạt đến 1 mức nào đó thì người viết code tự nhiên biết lúc nào cần xài cái nào.
....
Mà công nhân chịu khó khai báo cái Reference viết code khỏe hơn nhiều. Giảm thiểu hại não.
 
Upvote 0
Mà công nhân chịu khó khai báo cái Reference viết code khỏe hơn nhiều. Giảm thiểu hại não.

Chính xác là vậy! Nhưng ác cái copy code sang máy khác báo lỗi, người dùng sẽ không biết tại sao nên sinh ra cái CreateObject "hại não" ấy thôi
Cuối cùng là: CHƠI CHIÊU <--- Mạnh ai kinh nghiệm nấy, mặc sức mà "ảo thuật"
Ẹc... Ẹc...
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom