Table of Contents
Tại sao áp dụng nguyên tắc Ru - tơ trong ngành kỹ thuật hiện đại
Giáo dục kỹ thuật phần mềm đã từ lâu đã vật lộn với việc liệt kê khoảng cách giữa lý thuyết và công nghiệp sẵn sàng thực hành. Các nguyên tắc SOLID cung cấp một khuôn khổ cụ thể để thiết kế, có thể mở rộng, và có thể kiểm chứng hệ thống. dạy dỗ những nguyên tắc này không chỉ là về việc liệt kê các từ khoá - nó là về trang bị cho học sinh bằng mô hình tâm lý mà sẽ hướng dẫn mọi quyết định thiết kế trong sự nghiệp của họ. khi sinh viên nội bộ hóa SOLID, họ di chuyển từ văn bản mã chỉ để làm việc tạo ra các phần mềm có hiệu quả để phát triển sự sang trọng yếu tố thay đổi. Bài này sẽ chỉ là những chiến lược có thể làm cho các nguyên tắc đạo đức để làm cho các nguyên tắc SOLID trong lớp học.
Nền tảng: Điều mà mỗi giáo sư nên biết về SOLID
Trước khi lao vào những chiến lược giảng dạy, rất quan trọng để có sự hiểu biết chung về mỗi nguyên tắc. năm hướng dẫn, được Robert C. Martin giới thiệu vào đầu những năm 2000, là:
- Nguyên tắc trách nhiệm phụ trách [SRP]: ) Lớp nên có một, và chỉ có một lý do để thay đổi.
- Nguyên tắc mở/Close (CP): ) thực thể phần mềm nên mở rộng để mở rộng nhưng đóng để sửa đổi.
- Các kiểu con Nguyên tắc conLiskov (LP): ) phải thay thế cho kiểu cơ bản của chúng mà không thay đổi tính chính xác.
- Ứng dụng khách không nên phụ thuộc vào giao diện họ không sử dụng.
- Nguyên tắc hậu cần (DIP): ) phụ thuộc vào trừu tượng, chứ không phải sự hòa nhập.
Để tìm hiểu sâu hơn về định nghĩa ban đầu, giấy căn bản của Martin [FLT: 0]"Deign Nguyên tắc và mẫu thiết kế" vẫn còn cần thiết đọc. Nhiều nhà giáo dục cũng tham khảo bài Wikipedia [FLT:] [FLT:] để tóm tắt.
Chiến thuật 1: Dạy SOLID qua bộ luật có mùi và bồi thường
Học sinh thường phải đấu tranh với SOLID vì lợi ích không hiện ra ngay trong một mã nhỏ. Một cách tiếp cận đã chứng minh là giới thiệu mã có mùi đặc trưng đầu tiên- pain mà mọi nhà phát triển đã trải qua. Lấy thí dụ, một lớp học quản lý tập tin I/O, hợp lệ hóa dữ liệu, và đăng nhập vi phạm quyền mật mã. Hiển thị các sinh viên một phiên bản "trước" được giải mã với các mùi này, sau đó hướng dẫn họ thông qua việc đền bù lại thiết kế SOLID- lợi ích. Thí dụ, một lớp học kỹ thuật gương thực: các nhà phát triển công nghiệp hiếm khi viết mã hoàn hảo; họ sửa đổi lại các hệ thống di sản này. Tính tương tác này xác định các sinh viên xác định nơi mà các chương trình vi phạm và các công cụ nhỏ hơn. [T1] có thể sửa chữa các mục tiêu như là: [FTS]
Phòng thí nghiệm học hỏi tích cực: Giải quyết một xe hơi mua sắm
Cung cấp một khóa Java hoặc Python gọi là mà tính toán tổng số chiết khấu, tạo một bản tóm tắt thứ tự, và lưu vào cơ sở dữ liệu. Yêu cầu sinh viên liệt kê tất cả các trách nhiệm. Sau đó, hãy cùng nhau, tính toán lại thành hạng riêng , ), , [FL:3], và [FL:] . Việc này làm cho các học sinh có tính chất hữu hình. Kế tiếp, giới thiệu một loại giảm giá mới và hiển thị cách hiệu hiệu hiệu hóa việc thêm vào nhóm này [FBLTTTT], [TT], [TTTT],], [TL:], và [FL:], LT], và [T: Giao diện lập lại] cho các nguyên tắc L.S.S.I.I.S.
Chiến thuật 2: Dùng thuật toán và siêu dữ liệu
Các nguyên tắc trừu tượng trở thành dễ truy cập khi vẽ các hệ thống quen. Đối với SRP, hãy so sánh một con dao quân đội Thụy Sĩ (vio Sĩ sRP) với một tập hợp các dao bếp đã đóng góp (theo dõi SRP). Đối với OCP, hãy dùng một máy chơi đa phương tiện hỗ trợ bổ sung - các máy in mới, không sửa đổi mã số máy in. LP có thể được dạy với giao diện chữ cái "Square-Rcre" cổ điển: nếu thay đổi chiều rộng của hình chữ nhật tự động vi phạm in varnite, việc thay thế sẽ thất bại. IP được minh họa bởi nhiều chức năng: để sử dụng máy in điện tử đơn giản và phương pháp fax là giao diện blingular. Có thể giải thích với các thiết bị điện tử (các thiết bị điện tử phụ thuộc vào hộp số thiết bị: các thiết bị điện tử không có sẵn, vì chúng không có sẵn trên thanh công cụ có sẵn.
Chiến thuật 3: Trò chơi xác nhận nguyên tắc
Biến việc học tập thành một trò chơi cạnh tranh. Tạo một bộ bài (hay một câu đố số) để mô tả một kịch bản mã. Sinh viên chạy để xác định nguyên tắc SOLID nào đang bị vi phạm (hoặc theo). Điểm thưởng cho câu trả lời đúng và điểm thưởng cho việc đề nghị sửa chữa. Tính năng này hoạt động cũng như một phiên chạy nóng ở đầu bài hoặc xem lại trước kỳ thi. Công cụ như [FL: 0] k! [FL: 1] hoặc [FT: 2] [FL: T]QL: t] [T: Fulet] có thể thích ứng với định dạng này. Các yếu tố tham số, tăng cường và tăng cường các tiêu chuẩn hiệu bài tập tin.
Chiến thuật 4: Cho phép SOLID vào mục lục đầy đủ hoặc dự án khoá học đóng gói
Tập luyện đã tách ra là hữu ích, nhưng các nguyên tắc SOLID đạt được ý nghĩa thật khi áp dụng trong một hệ thống lớn hơn. Thiết lập một dự án dài kỳ nơi học sinh xây dựng một chương trình đa nguyên tắc (v. d., một hệ thống quản lý thư viện, một nền tảng thư viện, một trật tự nhà hàng). Một cách tuyệt đối yêu cầu cấu hình theo nguyên tắc SOLID, và đánh giá các quyết định thiết kế của họ tại các điểm mốc. Cung cấp một cơ sở mã chủ động mà cố ý vi phạm một hoặc nhiều nguyên tắc (v. d., một lớp dịch vụ khác nhau). Tại mỗi nhóm, yêu cầu xác định lại các dự án, đề nghị tái cấu hình lại, và thực hiện các thay đổi. Các lực lượng trong gương xem xét các hoạt động của các học sinh viên và xem xét các giao dịch vụ có tính chất hiệu quả nghiêm trọng, không cần tăng sự phức tạp và sự tăng giá trị.
Gương nghiêm khắc: Đáp lại lời khuyên nơi Phi - líp
Sau cuộc chạy nước rút đầu tiên, dự án có thể có mà trực tiếp thực hiện [FLT:] [FLT:] mà nhảy từ cơ sở cấu cấu hình học để làm cho cơ sở cụ thể làm cho việc thông báo trực quan. Tương tự, nếu nhóm sau này cần thêm email, họ có thể áp dụng IP bằng cách chia [FLT: 10] vào [FL: 11] và [T] [FL].
Những thử thách thông thường và cách vượt qua chúng
Ngay cả với những chiến lược mạnh mẽ, học sinh vẫn phải đối mặt với những trở ngại.
Thử thách: quá sức chịu đựng
Những nhà thiết kế không có tính chất thực dụng, tạo ra những giao diện không cần thiết và lớp trừu tượng. Dạy rằng SOLID là một công cụ, không phải là một tập quy tắc. Nhấn mạnh rằng mục tiêu là duy trì khả năng và giới thiệu trừu tượng có một chi phí. Hãy dùng "Rule of Three" (số 3) chỉ trừu tượng khi bạn có ba hay nhiều hành vi tương tự. Cung cấp ví dụ đơn giản nếu-else là tốt hơn một hệ thống phân cấp giao diện.
Thử thách: LP Consolt
Học sinh thường đồng ý với kiểu an toàn hoặc đa dạng hóa chung. Hãy xác định rằng LP là về tiểu dụng hành vi: một hạng phụ không nên làm yếu đi điều kiện trước điều kiện hoặc tăng cường mức độ sau của cha mẹ. Hãy dùng hạng hạng và (một con chim cánh cụt là chim cánh cụt nhưng không thể) để hiển thị sự vi phạm (nếu hạng cơ sở có [FL:15], hạng phụ [FL:15], loại [FL: 16] phá vỡ [FLT:] và [FT:14] [NT:14] (một con chim cánh cụt là chim cánh cụt, nhưng không thể bay] để hiển thị sự vi phạm (nếu hạng cơ sở có [FL:15], chương trình [FL:15], chương trình [FL], NW, chương trình con trượt sang giao diện riêng của nó.
Thách thức: Suy nghĩ trừu tượng
Một số học sinh phát triển mạnh nhờ cú pháp cụ thể nhưng lại phải vật lộn với thiết kế trừu tượng hóa. Chương trình này luyện tập lập trình với sơ đồ biểu đồ. Hãy nhờ sinh viên vẽ biểu đồ lớp UML hiển thị phụ thuộc trước và sau khi áp dụng DIP. Phản hồi trực quan giúp họ thấy sự đảo ngược của việc điều khiển. Công cụ như [FLT: 0] Vẽ.io [FLT: 1] hoặc Lucidchart hữu ích cho việc vẽ sơ đồ hợp tác trong lớp.
Những chiến thuật tinh luyện không chỉ bao gồm việc tưởng nhớ
Các bài kiểm tra đa lựa chọn có thể kiểm tra các định nghĩa nhưng không đo lường được ứng dụng. thay vào đó, đánh giá thiết kế đòi hỏi sự phân tích và tổng hợp các nguyên tắc SOLID.
Comment
Cho học sinh một sơ đồ hoặc danh sách các khóa phức tạp vừa phải, chứa nhiều SOLID vi phạm. Yêu cầu họ xác định các vi phạm cụ thể, giải thích tại sao chúng là vấn đề, và đề nghị các thiết kế có thể sửa đổi. Định dạng mở này thử nghiệm sâu sắc sự hiểu biết. Cấp bậc dựa trên tính chính xác của việc xác nhận dạng và khả năng xác định giải pháp đã đưa ra.
Name
Hãy bảo mỗi sinh viên nộp một hồ sơ về việc sửa chữa các bài tập họ hoàn thành trong học kỳ. họ phải cung cấp trước/sau mã và một lý do ngắn cho mỗi nguyên tắc áp dụng. Danh mục này trở thành một hiện vật hữu hình họ có thể thảo luận trong các cuộc phỏng vấn. khuyến khích đánh giá ngang hàng nơi học sinh phê bình thiết kế của nhau - điều này xây dựng các kỹ năng đánh giá quan trọng.
Những dự án gia tăng
Thay vì nộp đơn cuối cùng, cần một đội để đệ trình tài liệu thiết kế tại điểm chính: kiến trúc ban đầu (phải tuân theo SOLID), sau khi sửa đổi lần đầu và cuối. Cung cấp những điểm hoàn chỉnh để ứng dụng đúng của mỗi nguyên tắc. Lấy thí dụ, SRP được chứng minh nếu không có lớp nào có nhiều trách nhiệm rõ ràng; OCP được hiển thị nếu tính năng mới có thể được thêm vào các hạng đã có. Việc này thường xuyên đánh giá này giảm sự nhồi nhét và nhấn mạnh sự cải thiện nó.
Đưa các quan điểm kỹ thuật vào phòng học
Những bài giảng khách mời từ các kỹ sư phần mềm có kinh nghiệm có thể chia sẻ những câu chuyện thật về việc SOLID thất bại và thành công là vô giá. Nếu khách hàng không thể thực hiện được, hãy dùng những bài giảng hoặc nghiên cứu về trường hợp. Lấy thí dụ, [FLT: 0]Robert C. Martin nói về "SOLID nguyên tắc" trên YouTube cung cấp văn bản xác thực. Hơn nữa, nhấn mạnh làm thế nào các dự án mã nguồn mở lớn như Acon(cho phụ thuộc qua việc tiêm) hoặc phản hồi (cho thành phần) thành phần: các nguyên tắc này. Các sinh viên được thúc đẩy khi họ áp dụng các nguyên tắc này.
Kết luận: Xây dựng một nền tảng vững chắc cho các kỹ sư tương lai
Dạy các nguyên tắc SOLID không phải là một nhiệm vụ kiến trúc. nó đòi hỏi một phương pháp tiếp cận-truyệt trình mã màu sắc, tăng cường với các bài tập tái tạo, sâu sắc hơn với các phép ẩn dụ hình ảnh, và được vững chắc với việc học dựa trên dự án. bằng cách di chuyển từ các nguyên tắc đơn giản để thiết kế, các nhà giáo dục chuẩn bị học sinh để viết phần mềm để đứng vững các thử nghiệm thời gian. các chiến lược được nêu ra ở đây giúp chuyển đổi ngữ pháp trừu tượng thành thói quen hành động có thể. khi học sinh tốt nghiệp hiểu làm thế nào để thay đổi hệ thống thiết kế mà họ thực sự sẵn sàng cho các yêu cầu của các phần mềm.