Tôi đang chạy một dojo mã tái cấu trúc cho một số đồng nghiệp đã hỏi cách tái cấu trúc và các mẫu đi cùng nhau, và tôi cần một cơ sở mã mẫu. Bất cứ ai biết một điểm khởi đầu tốt mà không phải là khủng khiếp họ không thể làm cho người đứng đầu hoặc đuôi của mã, nhưng có thể viết lại theo cách của họ để một cái gì đó hữu ích?Ví dụ tốt khi dạy tái cấu trúc?
Trả lời
Tôi thực sự đề xuất tái cấu trúc một số mã của bạn và đồng nghiệp của bạn.
Luôn có những nơi mà một codebase hiện có có thể được tái cấu trúc, và sự quen thuộc với mã hiện tại sẽ giúp làm cho nó cảm thấy giống như một thứ hữu ích và ít giống như một bài tập. Tìm nội dung nào đó trong mã của công ty bạn để sử dụng làm ví dụ, nếu có thể.
Chương đầu tiên trong Martin Fowler "Tái cấu trúc" là điểm khởi đầu tốt để tái cấu trúc. Tôi hiểu hầu hết các khái niệm khi một trong những giáo viên của tôi ở trường sử dụng ví dụ này.
Cảm ơn. Tôi đã tìm thấy mã mẫu tại http://david.koontz.name/home/Projects/Entries/2008/4/13_Photo_of_the_Day.html qua http://refactoring.com vì đề xuất của bạn. Tôi sẽ kiểm tra. – Ball
Mức độ hiểu biết chung của đồng nghiệp của bạn là gì?
Nội dung cơ bản như sao chép mã phải dễ dàng quấn quanh đầu. Hai phần của (gần) mã giống hệt nhau có thể được tái cấu trúc thành một phương thức có thể tái sử dụng, lớp học, bất cứ điều gì. Sử dụng một ví dụ (trong quá khứ) từ codebase của bạn sẽ tốt.
Tôi khuyên bạn nên phát triển một dự án ví dụ đơn giản cho một yêu cầu cụ thể.
Sau đó, bạn thêm một yêu cầu khác và thực hiện thay đổi đối với các lớp hiện có. Bạn tiếp tục làm điều này và chỉ cho họ cách bạn cảm thấy khó khăn khi thực hiện từng thay đổi khi mã không được thiết kế đúng cách. Điều này sẽ làm cho họ nhận ra dễ dàng bởi vì, đây là những gì ppl sẽ được làm trong ngày của họ để làm việc ngày. Làm cho họ nhận ra rằng, nếu các mẫu và nguyên tắc không được theo sau từ đầu, làm thế nào họ sẽ kết thúc trong mớ hỗn độn ở cuối.
Khi họ nhận ra điều đó, bạn bắt đầu từ đầu hoặc cấu trúc lại mã sai sẵn có. Bây giờ, thêm yêu cầu và làm cho chúng dễ dàng thay đổi mã được tái cấu trúc để bạn chỉ cần kiểm tra một vài lớp. Một thay đổi sẽ không ảnh hưởng đến người khác và như vậy.
Bạn có thể sử dụng lớp máy tính, bàn phím và máy in làm ví dụ. Thêm các yêu cầu như, bạn sẽ muốn máy tính đọc từ chuột, sau đó một yêu cầu khác có thể giống như máy tính của bạn muốn lưu nó vào đĩa cứng hơn là in. Cuối cùng mã được tái cấu trúc của bạn nên như thế nào, lớp máy tính của bạn phải phụ thuộc vào lớp thiết bị đầu vào trừu tượng và lớp thiết bị đầu ra. Và lớp bàn phím của bạn nên kế thừa từ lớp Inputdevice.
- Tái cấu trúc là yêu cầu không hoạt động khi mã thực hiện chức năng chính xác nhưng khó gỡ lỗi, đòi hỏi nhiều nỗ lực hơn để duy trì và một số tắc nghẽn hiệu suất. Tái cấu trúc là thay đổi để dễ bảo trì, dễ đọc và nâng cao hiệu quả.
Vì vậy, chúng tôi cần tập trung vào các tiêu chí để làm cho mã dễ đọc hơn, dễ bảo trì hơn.
- Rõ ràng là có phương pháp/chức năng rất lớn có thể khó hiểu.
- Lớp phụ thuộc vào hàng trăm lớp khác làm cho điều tồi tệ nhất trong khi gỡ lỗi.
- Mã phải có thể đọc được giống như đọc một số quy trình làm việc.
Bạn cũng có thể sử dụng các công cụ như sonar mà có thể giúp bạn xác định các tiêu chí quan trọng như "Cyclomatic phức tạp"
http://www.sonarsource.org/managing-cyclomatic-complexity-to-increase-maintainability/
Bạn yêu cầu họ viết mã họ tự và kiểm tra như thế nào công cụ làm refactoring . Ngoài ra, bạn có thể viết mã trong nhật thực và có tùy chọn có sẵn để tái cấu trúc cho bạn ...
Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin xem xét tái cấu trúc.
Dưới đây là một số mã, cả hai bản gốc và phiên bản refactored, vì vậy bạn có thể chuẩn bị kata của bạn hoặc đơn giản là so sánh kết quả khi refactoring được thực hiện:
Sách của tôi có cả hai ví dụ ngắn hơn và dài hơn , thực sự là một cuốn sách dài ví dụ. Mã miễn phí để tải xuống.
VB Code Examples
C# Code ExamplesMột nice example từ Refactoring Workbook
Hãy xem RefactorMyCode
Có rất nhiều ví dụ trên internet của các trò chơi đơn giản như Tic-Tac-Toe hoặc Snake có rất nhiều mùi nhưng đủ đơn giản để bắt đầu với việc tái cấu trúc.
Đó là một chút ngày (2003), nhưng IBM có một số ví dụ refactoring (rằng công việc [ed?] Trong Eclipse) tại http://www.ibm.com/developerworks/library/os-ecref/
- 1. Ví dụ làm việc về hình ảnh nổi trong văn bản được tái cấu trúc
- 2. Tái cấu trúc AutoFixture
- 3. Tái cấu trúc - Làm cách nào để ngăn tab tái cấu trúc hiển thị?
- 4. Tái cấu trúc lớp dữ liệu
- 5. Tái cấu trúc trong Ruby
- 6. ví dụ về kiến trúc DCI?
- 7. Eclipse: Tái cấu trúc hữu ích nhất
- 8. java.util.zip - Tái cấu trúc thư mục
- 9. Tái cấu trúc tốt nhất cho vòng lặp Trong khi (Đúng)
- 10. Tái cấu trúc cây If else else
- 11. Khi dạy C, tốt hơn là dạy các mảng trước hoặc sau con trỏ?
- 12. Tái cấu trúc thư mục C++
- 13. Tái cấu trúc trường trong eclipse
- 14. Công cụ tái cấu trúc PHP
- 15. TDD - Tái cấu trúc thành hộp đen?
- 16. Tại sao chúng ta tái cấu trúc?
- 17. jinja2 + Đánh dấu tái cấu trúc
- 18. Tái cấu trúc câu lệnh forested lồng nhau
- 19. Tái cấu trúc mã hóa C++ và Objective-C
- 20. HTTP cấu trúc phương pháp PUT dụ
- 21. C - Bắt đầu một dự án lớn. Cấu trúc và tên tệp/thư mục. Ví dụ tốt được yêu cầu
- 22. Công cụ để tái cấu trúc "với" khối
- 23. Chi nhánh tái cấu trúc và phát triển đồng thời
- 24. C++ Trợ giúp về tái cấu trúc lớp quái vật
- 25. Zend Action Controller - chiến lược tái cấu trúc
- 26. django: cách đánh giá dự án tái cấu trúc
- 27. Ví dụ là một thực hành tốt?
- 28. Ví dụ tốt về sử dụng libpurple?
- 29. Tái cấu trúc các vòng nhãn có nhãn
- 30. Tái cấu trúc WinForm ClickNCode thành MVP Passive View
Sau câu trả lời Thorarin của: Mã trùng lắp là mục tiêu thường rõ ràng nhất cho refactoring nên Tôi muốn đề nghị tìm kiếm nó ngay từ đầu. –