Tại sao JavaScript rất khó gỡ lỗi?

Đó là một ngày phán xét. Tôi đã làm việc trên một tính năng trong tháng trước. Chiều hôm đó, nhóm của tôi phải trình bày công việc với CEO

Tôi cảm thấy khá tự tin. Ngày hôm trước, một người kiểm tra đã báo cáo một số lỗi nhỏ — một số điều rõ ràng cần khắc phục trong buổi cà phê sáng của tôi

Một nhiệm vụ là hiển thị logo của các công ty trong một bảng. Đủ công bằng. Nhưng nó thật kỳ lạ. Tôi cảm thấy như tôi đã sửa nó sớm hơn. Tôi thậm chí còn tự hỏi làm thế nào tôi có thể làm rối tung logic đơn giản

Chà, người duy nhất không phạm sai lầm là người không làm gì cả. Tôi đã xóa một dấu chấm than trong mã và tin rằng công việc đã hoàn thành

nó không phải là

Một tiếng rưỡi sau, tôi đã chạm vào 14 tệp và thay đổi 250 dòng mã. Tôi đã cầu nguyện cho bản sửa lỗi hoạt động

Gỡ lỗi là khó

Khi chúng tôi bắt đầu tạo ra các chương trình máy tính, chúng tôi ngay lập tức nhận thấy rằng chúng tôi luôn làm nó rối tung lên. Để làm cho nó tồi tệ hơn, thật không dễ dàng để sửa chữa những sai lầm của chúng tôi. Như Brian Kernighan đã nói

“Gỡ lỗi khó gấp đôi so với viết mã ngay từ đầu. Do đó, nếu bạn viết mã một cách khéo léo nhất có thể, thì theo định nghĩa, bạn không đủ thông minh để gỡ lỗi mã đó. ”

Vậy tại sao việc gỡ lỗi lại khó đến vậy?

Ngay cả những ứng dụng đơn giản nhất cũng được xây dựng trên nền tảng mã khổng lồ. Các nhà phát triển hiện đại nhận được nhiều công cụ miễn phí — những công cụ mà họ không thực sự hiểu. Chúng tôi có thể sử dụng chúng, nhưng chúng tôi không biết chúng hoạt động như thế nào

Sự phức tạp khiến chúng tôi gặp khó khăn, đặc biệt là khi chúng tôi nhận được thông báo lỗi cẩu thả hoặc dấu vết ngăn xếp phức tạp cần gỡ rối. Thông thường, khoảng cách trong mã giữa lỗi và triệu chứng của nó là rất lớn

Hệ thống của chúng tôi rất phức tạp, nhưng thông tin đầu vào của chúng tôi cũng có thể gây rắc rối. Bạn sẽ thường xuyên gặp phải tình huống người dùng cuối gặp một số lỗi nhưng bạn không thể nhìn thấy lỗi đó trên máy của mình. Lỗi có thể liên quan đến cấu hình hoặc phụ thuộc vào phiên bản trình duyệt hoặc chuỗi sự kiện. Một số lỗi hoạt động theo nhóm và làm mờ hình ảnh nhiều hơn

Ngoài ra, một lỗi có thể tạo ra nhiều lỗi khác nhau. Để làm cho vấn đề trở nên tồi tệ hơn, việc sửa chữa một sai lầm thường có thể tạo ra những sai lầm mới. Nó thường chỉ ra việc thiếu các bài kiểm tra hoặc các bản sửa lỗi được triển khai cẩu thả mà không hiểu mã

Ảnh của cottonbro trên Pexels. Cách gỡ lỗi tốt hơn

Tất cả chúng ta đều thừa nhận rằng việc gỡ lỗi là khó khăn, nhưng làm thế nào chúng ta có thể làm cho nó dễ dàng hơn?

Tìm lỗi

Để học gỡ lỗi, chúng ta cần hiểu một điều. Nó không phải là việc thêm hoặc xóa mã hoặc ghi nhật ký mọi thứ. Phần thiết yếu của việc gỡ lỗi không liên quan gì đến việc gõ. Nó có mọi thứ để làm với suy nghĩ

Trước khi bắt đầu gỡ lỗi, bạn cần suy nghĩ và phân tích mã của mình. Bạn nghĩ gì đã đi sai? . thậm chí có thể một vài

Bước tiếp theo là gì?

Kiểm tra các giả thuyết của bạn bắt đầu từ giả thuyết có thể xảy ra nhất. Thử nghiệm có thể bao gồm việc thay đổi đầu vào [e. g. kích thước hoặc định dạng tệp khác khi tải lên], sử dụng một trình duyệt khác hoặc nhận xét các phần mã mà bạn cho là OK. Mục tiêu là thu hẹp lỗi càng nhiều càng tốt

Bây giờ bạn đã khá tự tin về vị trí của lỗi. Nếu không, có một kỹ thuật bổ sung có thể giúp bạn. Phân chia và chinh phục

Tôi đã viết một bài báo về kỹ thuật đó, nhưng bản chất của nó rất đơn giản. Bạn cắt đôi cơ sở mã của mình và sử dụng nhật ký để kiểm tra xem lỗi nằm ở nửa đầu hay nửa sau. Bây giờ hãy cắt đôi phần lỗi một lần nữa. Lặp lại quy trình cho đến khi bạn thu hẹp lỗi chỉ còn một vài dòng mã

Sửa lỗi

Bạn đã tìm thấy lỗi. Bây giờ là lúc để sửa chữa nó. Chống lại sự thôi thúc để có được mã hóa ngay lập tức. Như mọi khi với việc gỡ lỗi, suy nghĩ quan trọng hơn thực hiện

Bạn có hiểu đầu vào và đầu ra cũng như quy trình của ứng dụng không?

Đôi khi có thể khắc phục nhanh, nhưng có thể bạn không hiểu hết chuyện gì đang xảy ra. Tìm hiểu tất cả các trường hợp code bị lỗi. Hãy thử kiểm tra nó với các đầu vào ngẫu nhiên. Nó có hoạt động như mong đợi không?

Sau khi khắc phục, hãy thử lại tất cả các trường hợp [cả thành công và không thành công]. Bạn có nhận được nó bây giờ? . Tinker xung quanh cho đến khi bạn hoàn toàn hiểu những gì đang xảy ra và khi nào. Nếu không, bạn sẽ lại vấp phải lỗi đó — có thể ở một nơi khác — và bạn vẫn không biết chuyện gì đang xảy ra

Sự kết luận

Bạn có thể tự hỏi, "Bản sửa lỗi có hoạt động không?" . Tôi quản lý để làm cho nó hoạt động và bài thuyết trình diễn ra tốt đẹp

Một sự hiểu lầm về đầu vào gây ra lỗi của tôi. Tôi đã làm việc trên các đối tượng lớn được trả về từ cơ sở dữ liệu và nhận thức sai về một số thuộc tính. Lỗi này có vẻ giống như một lỗi đơn giản trong logic boolean, nhưng đó là một sự hiểu lầm lớn về hệ thống

Vụ việc nhắc nhở tôi không nên coi thường bất cứ điều gì. Lập trình khó. Gỡ lỗi là khó. Đôi khi những lỗi tưởng chừng đơn giản lại có thể giúp bạn phát hiện ra một lỗ hổng lớn trong mô hình tinh thần của mình. Học từ nó

JavaScript có khó gỡ lỗi không?

Điều khiến JavaScript trở nên tuyệt vời cũng chính là điều khiến nó khó gỡ lỗi . Bản chất không đồng bộ của nó giúp dễ dàng thao tác DOM để đáp ứng với các sự kiện của người dùng, nhưng nó cũng gây khó khăn cho việc xác định các vấn đề.

Tại sao tôi lại khó hiểu JavaScript đến vậy?

Cú pháp và thụt đầu dòng duy nhất Làm cho JavaScript khó đọc. Có thể cho rằng, một trong những điểm yếu của JavaScript là cú pháp của nó. Chẳng hạn, đối tượng của nó, ví dụ, yêu cầu bạn sử dụng dấu ngoặc nhọn theo một cách khác với các ngôn ngữ khác. Giống như bất kỳ ngôn ngữ lập trình nào khác, có nhiều cách khác nhau để viết mã của bạn.

Cách tốt nhất để gỡ lỗi JavaScript là gì?

Các công cụ gỡ lỗi JavaScript tốt nhất cho năm 2021 trở đi .
Công cụ dành cho nhà phát triển trong các trình duyệt web hiện đại. Mọi trình duyệt hiện đại đều có sẵn các công cụ để gỡ lỗi mã. .
Công cụ gỡ lỗi có thể hack — debugger. .
Nút. .
Người đưa thư để gỡ lỗi các yêu cầu và phản hồi. .
ESLint. .
Thùng rác. .
Trình định dạng và Trình xác thực JSON. .
gói web

Tôi có thể gỡ lỗi tệp JavaScript không?

Javascript cung cấp từ khóa Trình gỡ lỗi để gỡ lỗi mã . Khi chúng tôi thêm từ khóa trình gỡ lỗi vào giữa mã của mình, vì vậy sau khi thực thi mã, bảng trình gỡ lỗi sẽ hiển thị nơi chúng tôi có thể tạo điểm dừng và phát/tạm dừng để kiểm tra giá trị và hiểu theo nó.

Chủ Đề