Robert C. Martin trong một trong những cuốn sách của ông đề cập đến độ nhớt như là một triệu chứng của thiết kế mục nát. Tôi không hoàn toàn hiểu ý tưởng về độ nhớt trong phát triển phần mềm. Bạn có thể cho tôi một số ví dụ không?Thiết kế và độ nhớt thối rữa
Trả lời
Ông có hai công dụng, độ nhớt của thiết kế và độ nhớt của môi trường.
Đầu tiên, chất lỏng có độ nhớt cao, như kem đánh răng và bơ đậu phộng, không dòng chảy trơn tru như chất lỏng có độ nhớt thấp như nước.
Thiết kế có độ nhớt cao giúp dễ dàng thực hiện hack hơn là bảo toàn thiết kế. Việc hack làm cho mã trở nên cứng nhắc hơn, tăng độ nhớt hơn nữa.
Độ nhớt của môi trường đề cập đến luồng công việc. Nếu thời gian biên dịch kéo dài, hoặc đó là một nỗi đau để xây dựng hệ thống hoặc chạy thử nghiệm, các lập trình viên sẽ thực hiện các phím tắt để giảm bớt cơn đau.
Khi mã trở nên cũ hơn, nó có nhiều hacks hơn và nhiều phụ thuộc hơn, và do đó sẽ khó thay đổi hơn mà không vi phạm điều gì đó.
Vì vậy, nó sẽ ít "chất lỏng" hơn và "rắn" hơn, do đó tương tự với độ nhớt.
Độ nhớt là khả năng của chất lỏng để chống lại các thay đổi từ lực bên ngoài. Nước là cơ sở để đo lường và có độ nhớt rất thấp (tức là nó sẽ chảy tự do từ nơi này sang nơi khác), trong khi đó, sữa chua có độ nhớt cao khi làm lạnh nó gần như chắc chắn và đẹp ở lại nhiều nơi bạn đặt nó (trừ khi bạn mặc quần màu sáng trong trường hợp nó tìm đường đến đó mỗi lần ...).
Trong phần mềm, điều này dịch cho biết mã của bạn chống thay đổi bao nhiêu. Nếu bạn có rất nhiều phụ thuộc, thì có thể khó thay đổi một lớp học lớn, do đó dẫn đến các giải pháp ít lý tưởng hơn để tăng sức đề kháng của mã (tăng độ nhớt của nó). Mã được thiết kế tốt (độ nhớt thấp) có thể được cập nhật và bổ sung mà không ảnh hưởng lớn đến các ứng dụng hoặc các lớp khác phụ thuộc vào nó.
- 1. dừng đang thối
- 2. Mẫu thiết kế và Scala
- 3. Chế độ xem Tab WPF Ribbon trong Nhà thiết kế
- 4. Thiết kế phần mềm ở mức độ phức tạp?
- 5. Cửa sổ ngay lập tức ở chế độ thiết kế
- 6. bật chế độ xem thiết kế trong VS 2010
- 7. NetFx40_LegacySecurityPolicy trong chế độ thiết kế thời gian
- 8. Cách mở .cshtml trong chế độ xem thiết kế?
- 9. Phiên bẩn thối Hibernate là gì?
- 10. Cân nhắc thiết kế MQTT và MQ
- 11. Thiết kế và triển khai ClojureScript
- 12. Các mẫu thiết kế và khung
- 13. Tổ chức và thiết kế tệp Javascript
- 14. Thiết kế mạng nơron
- 15. cách thiết kế ViewModel
- 16. Thiết kế GUI
- 17. Thiết kế học tập cho giao diện người dùng và thiết kế trang web
- 18. Visual Studio 2012 - nơi thiết kế ASPX và chế độ xem chia tách đã biến mất?
- 19. Các mẫu thiết kế cho thiết kế đồng thời/tác nhân dựa trên thiết kế
- 20. Thiết kế RESTful URI
- 21. Các mẫu thiết kế/chiến lược thiết kế mới
- 22. Thiết kế Java API - Thiết kế nội bộ
- 23. Thiết lập chế độ xem phức tạp trong UIVIew hoặc UIViewController? (Quyết định thiết kế)
- 24. CouchDB/NoSQL và thiết kế điều khiển miền?
- 25. Sự kiện và đại biểu. Thiết kế gì?
- 26. Mẫu thiết kế phần mềm kế toán
- 27. Quyền Thiết kế
- 28. Học thiết kế OOP
- 29. Mẫu thiết kế F #
- 30. Mẫu thiết kế nào?