Bạn có bất kỳ hướng dẫn nhóm liên quan đến ngoại lệ? [đóng cửa]


8

Nhóm của tôi gần đây đã kế thừa một dự án từ một nhóm mà số lượng nhà phát triển giảm xuống thấp đến mức họ phải giảm tải một số công việc. Một trong những dự án mà chúng tôi kế thừa là một dự án chứa đầy mã lồng nhau và xử lý ngoại lệ khủng khiếp (Các ngoại lệ có hiệu lực được xử lý như các câu lệnh goto và do đó được sử dụng như một phần của luồng chương trình thông thường.).

Nói chung, đó là một quả bóng mã lông mà ai đó đã ho trong vài năm.

Bây giờ chúng tôi đã có một vài hướng dẫn nhóm tại chỗ trong một thời gian khá lâu, nhưng tất cả đều liên quan đến cấu trúc của các đối tượng, kiểu mã hóa và những gì không. Nhưng chúng tôi không bao gồm xử lý ngoại lệ.

Vì vậy, tôi tự hỏi nếu bạn có bất kỳ hướng dẫn trong nhóm của bạn về xử lý ngoại lệ, và nếu vậy làm thế nào bạn thực thi chúng?


Bạn có nghĩa là thực thi xã hội hoặc thực thi công nghệ? Có rất nhiều công cụ phân tích mã tĩnh để phát hiện các mẫu Ngoại lệ bị lạm dụng.
MatthewMartin

Vâng cả hai thực sự.
Morten

Có thể đơn giản hơn để cấu trúc lại mã để kiểm tra các điều kiện tiên quyết trước và trở về từ chức năng sớm nếu bất kỳ điều kiện tiên quyết nào không được đáp ứng. Ngoài ra, một số chuyên gia nổi bật coi finally(logic rollback) là phần có giá trị hơn của một hệ thống xử lý ngoại lệ.
rwong

Câu trả lời:


4

Mặc dù chúng không phải là hướng dẫn chính thức cho bất kỳ đội nào tôi từng tham gia, tôi cảm thấy rằng các ngoại lệ chỉ nên được sử dụng cho các điều kiện thực sự đặc biệt hoặc khi bạn hoàn toàn (vì một lý do nào đó) phải giơ tay và để người gọi của bạn ( hoặc nổi lên từ điểm hiện tại của bạn, có khả năng là tất cả các cách để người dùng) biết rằng hoàn toàn không có cách nào mà một thành phần cụ thể có thể hoạt động trong các điều kiện hiện tại và không thể phục hồi nếu không có sự can thiệp của bên ngoài (mô-đun hoặc người dùng khác) .


1

Chúng tôi không có quy tắc xử lý ngoại lệ cụ thể cho nhóm của mình, ngoại trừ các quy tắc thông thường: không sử dụng ngoại lệ cho hành vi 'bình thường', không chỉ im lặng nuốt ngoại lệ, v.v.

Ananlysis tĩnh có thể giúp bạn nắm bắt được một số trong số đó (tùy thuộc vào ngôn ngữ bạn sử dụng) nhưng bạn sẽ an toàn hơn với các đánh giá mã.


1

Hiện tại chúng tôi không có hướng dẫn rõ ràng, chủ yếu là vì không ai trong nhóm của tôi làm sai. (Không giống như nhiều chủ đề khác, có sự đồng thuận chung khi nào và cách sử dụng ngoại lệ)

Nhưng tôi chắc chắn sẽ thực hiện chúng cùng ngày tôi thấy một ngoại lệ bị lạm dụng như một goto.


0

Tôi nghĩ rằng các ngoại lệ nên reamin Ngoại lệ. Tôi nghĩ rằng nó lạm dụng và tạo ra chi phí khi sử dụng các ngoại lệ như một quy trình công việc trong mã của bạn. Vì vậy, hãy giữ chúng dài dòng và chỉ sử dụng khi có điều gì đó bất ngờ xảy ra.

Lưu ý: khay để tránh các lỗi phổ biến nhất, như không chuyển cơ sở dữ liệu kết nối đến một chức năng hoặc những thứ tương tự. Nhưng thay vì sử dụng chúng khi khóa chính không tồn tại và bạn cần nó để làm một cái gì đó.


0

Tôi cảm thấy tiếc cho bạn rằng bạn đã phải thừa hưởng mã từ những người lạm dụng các ngoại lệ để trở thành các tuyên bố giống như goto.

Tôi luôn cố gắng bắt chúng khi bất kỳ đầu vào nào của người dùng hoặc thứ gì đó nằm ngoài tầm kiểm soát của tôi có thể xảy ra (ví dụ: IOExceptions), nhưng bất cứ điều gì có thể là lỗi mã hóa (ví dụ: NullPulumException) là thứ tôi cố gắng nắm bắt khi phát triển sớm.

Hiệu suất đạt được từ loại mã hóa đó là một tiêu cực rất lớn. Tôi tự hỏi liệu công ty có bị thu hẹp do các nhà phát triển khủng khiếp tự biến mình thành một mớ hỗn độn ngoài tầm hiểu biết ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.