Tự tin hơn khi gặp lỗi trong lập trình

Thảo luận trong 'Kiến thức, kỹ năng lập trình' bắt đầu bởi nhatlectv, 28/2/18.

  1. nhatlectv

    nhatlectv Stanford - Nâng tầm tri thức Thành viên BQT

    Lập trình là công việc đòi hỏi tỉ mỉ, hoàn hảo tuy nhiên khó tránh khỏi sơ suất hay các lỗi nhỏ. Bài viết dưới đây nhằm giúp các bạn có thể phân biệt các loại lỗi trong lập trình, nhận biết các nguyên nhân lỗi nhanh và có thể sửa chữa triệt để các lỗi cơ bản trong lập trình. Từ đó giúp các bạn tự tin hơn trong việc giải quyết các lỗi mắc phải và yêu thích công việc lập trình hơn.

    Khi bắt đầu giải quyết một bài toán trên máy tính hay thiết kết một phần mềm dù rất nhỏ thì cá nhân hay nhóm lập trình cần tuân thủ đúng các bước trong quy trình phát triển phần mềm sau:

    1. Xác định yêu cầu (Specify the problem)

    2. Phân tích yêu cầu (Analysis the problem)

    3. Thiết kế giải thuật (Design the algorithm)

    4. Hiện thực giải thuật (Implement the algorimth)

    5. Kiểm thử và kiểm chứng (Test and Verify the program)

    6. Bảo trì và cập nhật phần mềm (Maintain and update the program)

    Việc tuân thủ các bước trong quy trình này sẽ giúp ta hạn chế các lỗi lớn trong lập trình và giúp ta giải giải quyết các bài toán phức tạp, các chương trình lớn một cách chính xác và đúng với yêu cầu hơn. Bạn cần tránh việc đọc qua loa yêu cầu xong bắt đầu code theo ý nghĩ trong đầu, nghĩ đến đâu code đến đó mà chưa nắm rõ các yêu cầu , cũng như chưa xác định được cách thức cụ thể để giải quyết bài toán hay không biết giải pháp của mình có khả thi hay không.

    Trong thực tế lỗi phần mềm rất thường xảy ra. Thuật ngữ Bugs đề cập các lỗi các lập trình viên gặp phải trong quá trình sửa lỗi chương trình hay gọi là “debugging”. Khi trình biên dịch tìm ra lỗi, máy tính sẽ hiển thị các thông báo chỉ ra cụ thể lỗi mắc phải hoặc nguyên nhân có thể gây ra lỗi.

    Lỗi cú pháp (syntax errors)

    Lỗi cú pháp được phát hiện bởi trình biên dịch khi biên dịch chương trình. Nếu một câu lệnh mắc lỗi cú pháp, nó sẽ không được biên dịch và chương trình của bạn sẽ không được thực thi.

    Làm thế nào để phát hiện nhanh các lỗi cú pháp?

    Để tránh lỗi cú pháp bạn cần nắm vững các cú pháp đã được quy định trong Ngôn ngữ lập trình mà bạn sử dụng; Đọc kỹ các thông báo lỗi của trình biên dịch; Trong đa số các trường hợp nên bắt đầu sửa lỗi từ thông báo đầu tiên và biên dịch lại sau mỗi lần sửa xong một lỗi cú pháp vì trình biên dịch thường thông báo hàng loạt lỗi phát sinh từ một lỗi gốc.

    Chương trình đã chạy có tồn tại lỗi cú pháp không?

    Câu trả lời là “Có”. Một số lỗi cú pháp tồn tại trong chương trình nhưng trình biên dịch không báo lỗi hoặc bỏ qua hoặc chỉ cảnh báo (Warning) và vẫn thực thi chương trình.Thông thường, các lỗi này thường sẽ gây lỗi cấp cao hơn như lỗi run-time hay lỗi logic hoặc gây mất mát dữ liệu.

    Lỗi thực thi (run-time errors)

    Lỗi thực thi xảy ra khi máy tính được ra lệnh thực hiện một hành động lỗi. Khi xảy ra lỗi run-time, máy tính dừng thực thi chương trình và hiển thị thông báo chuẩn đoán tại dòng lệnh gây ra lỗi.

    Khi nào gặp lỗi run-time?

    Một số lỗi run-time thường xảy ra khi:

    - Overflow: Kết quả tính toán cho quá lớn không thể lưu trữ vào biến

    - Divide by Zero: Chia một số cho 0.

    - Error Memory: Thực hiện truy cập vào vùng nhớ không xác định làm cho kết quả trả về không lường được. Ví dụ: truy cập phần tử nằm ngoài vùng giới hạn của mảng; Truy cập vào vùng nhớ heap sau khi đã giải phóng bộ nhớ.

    - Uninitialized Data Access: Truy cập vào bộ nhớ trước khi bộ nhớ được khởi tạo vì vậy không lường trước được kết quả trả.

    - Error Memory: Lỗi bộ nhớ có thể phân làm hai loại lỗi trên bộ nhớ Heap và lỗi trên bộ nhớ Stack.

    Lỗi luận lý (logic errors)

    Là loại lỗi khó tìm thấy và sửa chữa nhất vì dấu hiệu lỗi không thể hiện rõ ràng. Thông thường các chương trình chạy thành công, nhưng nó không trả về kết quả như mong đợi. Trình biên dịch không thể chuẩn đoán lỗi luân lý, do đó lập trình viên phải là người kiểm tra toàn bộ từng dòng code của mình và đảm bảo chương trình chạy đúng như mong đợi.

    Nguyên nhân gây nên lỗi luận lý?

    Lỗi luận lý tồn tại trong chương trình thường là do sự kết hợp của các nguyên nhân sau đây:

    - Bạn chưa thật sự hiểu yêu cầu của chương trình

    - Bạn chưa hiểu rõ các hoạt động của từng dòng code trong chương trình mình viết

    - Bạn đã bất cẩn trong khi lập trình

    Lỗi logic phát hiện càng muộn thì càng gây thiệt hại và chi phí để khắc phục cao hơn. Vì vậy hãy kiểm tra chương trình của mình thật cẩn thận trước khi chuyển nó cho khách hàng của bạn sử dụng. Bạn phải tự tin là chương trình tôi viết hoạt động đúng với độ chính xác như khách hang đã mong đợi.

    Làm thế nào để tránh lỗi luận lý trong chương trình?

    Để tránh lỗi luận lý trong chương trình mình viết bạn phải tuân thủ ba bươc đầu tiên trong thiết kế phần mềm: Xác định yêu cầu, Phân tích yêu cầu và thiết kế giải thuật. Các bước tiếp theo của quy trình là cũng phải rà soát và kiểm chứng xem rằng chương trình đang thực hiện có đang được phát triển đúng hướng hay không. Hãy thực hiện từng bước thật cẩn thận, chính xác trong từng dòng code bạn viết và chay thử nghiệm với tất cả các tình huống có thể xảy ra để đảm bảo tính đúng đắn của chương trình.

    Hy vọng rằng những chia sẻ trên sẽ giúp bạn tránh được những lỗi cơ bản trong lập trình.
     

Chia sẻ trang này