← Trang chủ

Làm sao để sử dụng biến hiệu quả hơn (part1)

Khi chương trình còn đơn giản thì việc sử dụng biến thường không thành vấn đề, nhưng khi bạn làm những chương trình lớn hơn thì việc sử dụng biến thế nào cho dễ quản lí, tránh lỗi không mong muốn và dễ bảo trì, nâng cấp sau này thì không đơn giản tí nào blush

Part1: Một số lưu ý về khi khai báo biến và khởi tạo biến (Declarations and Initializing Variables)

Không sử dụng tính năng khai báo ẩn(Implicit Declarations)


Một số ngôn ngữ hỗ trợ khai báo ẩn, tức là khi bạn quên mất không khai báo biến nào đó thì compiler sẽ tự động khai báo cho bạn (ví dụ như Visual Basic). Chức năng này thực sự rất nguy hiểm và đây là một số lưu ý với tính năng này:

Tắt khai báo ẩn. Một số trình biên dịch cho phép tắt khai báo ẩn. Ví dụ, trong Visual Basic bạn có thể dùng câu lệnh Option Explicit, câu đó sẽ bắt bạn phải khai báo toàn bộ các biến trước khi bạn sử dụng chúng.

Khai báo tất cả các biến. Khi bạn gõ một biến mới, hãy khai báo nó, dù cho compiler không yêu cầu

Khởi tạo biến


Đây là 3 trường hợp phổ biến về việc biến tự dưng có những giá trị mà bạn không ngờ tới:

  • Biến từ đầu đã chưa hề được gán giá trị. Vì thế nên giá trị của nó có thể là bất kì giá trị nào trong bộ nhớ từ khi khởi động chương trình.

  • Giá trị của biến đã "hết hạn sử dụng". Biến đã được gán một giá trị tại một số thời điểm nào đó, nhưng giá trị đó sau này không còn hợp lệ nữa.

  • Làm việc với con trỏ. Khi làm việc với con trỏ nếu không cẩn thận bạn rất dễ bị dính những lỗi cực kì khó debug, vì triệu chứng lỗi của con trỏ thường hay thay đổi theo thời gian nên có thể nói lỗi về con trỏ là "nỗi khiếp sợ " của lập trình viên.

Và đây sẽ là cách để bạn tránh những trường hợp như vậy xảy ra:

Khởi tạo biến ngay khi nó được khai báo.

 float studentGrades[ MAX_STUDENTS ] = { 0.0 }

Khởi tạo biến ngay trước khi nó được dùng lần đầu tiên.

Ví dụ:

Dim accountIndex As Integer

accountIndex = 0
' code using accountIndex
...

Dim total As Double
total = 0.0       <-- 1
' code using total
...

Dim done As Boolean
done = False       <-- 2
' code using done
While Not done
...
(1) total được khai báo và khởi tạo gần với vị trí nó được sử dụng lần đầu tiên
(2) done cũng được khai báo và khởi tạo gần với vị trí nó được sử dụng lần đầu tiên

Đây chính là ví dụ cho Nguyên Tắc Tiệm Cận: "Hãy giữ những thứ có liên quan ở gần nhau". Ta có thể áp dụng nguyên tắc này trong việc giữ những comment gần với code mà được chúng giải thích, hoặc là giữ sự thiết lập vòng lặp gần vòng lặp hoặc là giữ những lời gọi (tham chiếu) đến 1 biến gần nhau (cái này sẽ được nói chi tiết trong bài nói về phạm vi biến) và còn rất nhiều trường hợp để áp dụng nguyên tắc này nữa.

Sử dụng final hoặc là const khi có thể.Với những biến mà được khai báo bằng final trong Java hoặc const trong C++, bạn có thể bảo vệ biến của bạn từ khi bạn khởi tạo cho nó một giá trị nào đó.

Và bạn hãy nhớ chú ý đến các biến kiểu như biến đếm. Những biến như là i, j, k,sumtotal thường được sử dụng làm biến đếm, biến tích trữ. Lỗi cơ bản trong lập trình là việc quên mất không reset các biến đếm trước khi sử dụng chúng tiếp ở lần sau.

Hãy tận dụng lợi thế của các cảnh báo của compiler. Nhiều trình biên dịch cảnh báo bạn rằng bạn quên khởi tạo biến.

Luôn kiểm tra tính hợp lệ của các tham số truyền vào. Trước khi bạn gán giá trị truyền vào, hãy chắc chắn rằng nó hợp lệ.

Sử dụng memory-access checkers để debug mấy lỗi về con trỏ (chưa dùng cái này bao giờ, bác nào biết xin chỉ giáo joy)

Debug lỗi con trỏ bằng cách nhập những giá trị đặc biệt. Giá trị 0 là lựa chọn tốt vì nó dễ bị phát hiện ra hơn khi chúng được sử dụng. Với vi xử lí Intel, 0xCC là một giá trị khá tốt để sử dụng. Một ích lợi khác của giá trị 0xCC là nó rất dễ dàng nhận ra trong memory dump - và nó ít khi được sử dụng với lí do chính thống. Ngoài ra, bạn cũng có thể sử dụng hằng số 0xDEADBEEF cho việc này. (vãi cả thịt bò chết smile hình như có liên quan đến câu hỏi tuyển dụng của google thì phải)

Và cuối cùng là đừng quên khởi tạo bộ nhớ làm việc khi bắt đầu chương trình.


Bài viết có tham khảo một số nội dung trong cuốn Code Complete và các tài liệu khác blush


Part2 ở đây: http://daynhauhoc.com/t/lam-sao-de-su-dung-bien-hieu-qua-hon-part2/6936
Part3 ở đây: http://daynhauhoc.com/t/lam-sao-de-su-dung-bien-hieu-qua-hon-part3/6992
Part4 ở đây: http://daynhauhoc.com/t/lam-sao-de-su-dung-bien-hieu-qua-hon-part-4/7063

Tác giả

thanhmssl10

Đăng vào

Bài viết gốc

Thông tin

Proudly published with Statinamic