Nguyên lí thứ 3 của S.O.L.I.D code qua kiểm chứng thực tế

Thật ra trước đó Hà Mà Tím đáng yêu có lập trình theo S.O.L.I.D, nhưng vẫn cảm thấy mơ hồ, cho đến khi gặp một trường hợp thực tế.
Đây là trải nghiệm vi phạm S.O.L.I.D code thực tế mà Hà Mã Tím đáng yêu đã gặp qua ứng dụng Pomodoro Smart Timer.
Với 1000 người dùng 1 ngày và dãy android từ 4.1 (API 16) đến 9.0 (API 29) với hàng chục ngàn mẫu mã thiết bị thì việc sửa đỗi code cũ dễ dàng làm xuất hiện lỗi bất ngờ, một khi đưa về phía user chắc chắn sẽ bị ăn gạch.


Phiên bản 29-7 (v2.1) rất ổn định, ai cũng vui. Hôm qua Hà Mã Tím đáng yêu xuất phiên bản mới, vi phạm nguyên lí thứ 2 (Open/closed principle - Cho mở rộng, cấm sửa đổi) bằng việc sửa đổi code trong class cũ (trước đó ổn định). Kết quả toàn bộ thiết bị 4.4 bị lỗi, dù chạy testlab rồi, thấy passed 14/15 thiết bị (API 16->API 29) nhưng do chủ quan, nghĩ rằng số thiết bị 4.4 khá ít nên Hà Mã Tím đáng yêu quyết định xuất bản (v2.3).
Hậu quả là ăn ngay 1 loạt 1* thần chưởng từ user, do thiết bị chạy 4.4 tuy ít về tỉ lệ nhưng cũng đến hàng trăm về số lượng. Hà Mã Tím đáng yêu phải hủy xuất bản ngay, sau một hồi lâu debug mới tung được bản ổn định v2.4 (tỉ lệ lỗi đang cao do không tắt analytics khi debug)
Qua trường hợp thực tế này, Hà Mã Tím đáng yêu hi vọng các bạn chưa biết nguyên lí S.O.L.I.D là gì thì nên tham khảo. Ở phần mềm nhỏ nhưng số lượng user đáng kể mà việc nâng cấp không tuẩn thủ nguyên tắc chung đã khó. Thì những hệ thống lớn khi các bạn tham gia mà không tuân thủ nguyên tắc sẽ khiến việc maintain trở nên bất khả dần theo thời gian.
Các bạn có thể tìm hiểu về S.O.L.I.D qua bài dịch này, có ví dụ luôn mình thấy dễ hiểu hơn bên todicodedao nhiều: https://nhungdongcodevui.com/2017/03/18/solid-la-gi-nguyen-tac-1-don-nhiem-single-responsibility-principle/

8 Likes

Đây là số liệu thực tế bản v2.4 tung ra đã lại vấn đề mà do bản v2.3 vi phạm S.O.L.I.D đã gây ra.
Tỉ lệ lỗi giảm xuống dưới 7/10,000 phiên (chưa đến 0,1%) với hàng chục ngàn thiết bị.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?