REFACTOR CODE LÀ GÌ

Code refactoring là vận động chỉnh sửa khiến cho source code đọc dễ dàng hơn, được tổ chức khoa học tập hơn, và (có thể) có phong cách thiết kế / cấu trúc tốt hơn nhưng mà không làm thay đổi hành vi của hệ thống về mặt chức năng.Bạn sẽ xem: Refactor là gì

Việc này kiểu như như bọn họ sắp đặt lại khối hệ thống điện trong bên theo một bí quyết khoa học tập hơn tuy vậy vẫn đảm không thay đổi vị trí và chức năng của hầu hết công tắc, ổ gặm trên tường. Tôi hy vọng lấy lấy một ví dụ này để các bạn hiểu rằng, những gì nhóm cải tiến và phát triển làm với code refactoring hoàn toàn “nằm trong bức tường”, nơi mà khách hàng hàng trọn vẹn không quan sát hay cảm thấy được; tuy vậy lại hết sức quan trọng, đặc trưng trong dự án công trình thực hành Agile. “Tôi mong mỏi có một ổ gặm điện ở vị trí này”, sau 10 lần dứt yêu mong đó từ khách hàng, hệ thống dây điện chắc hẳn rằng sẽ chứa được nhiều bất cập và rất khó bảo trì. Việc sắp xếp lại hầu như dây năng lượng điện này một cách hợp lý nhưng vẫn bảo đảm an toàn được tác dụng hiện có giúp chúng ta sẵn sàng đến yêu cầu về một ổ kết nối điện thứ 11. Và thật may là code refactoring thì thường không “tốn kém” và tinh vi như câu hỏi đục những bức tường để sắp xếp lại hệ thống dây điện. Bởi vậy, bọn họ cũng rất có thể (và nên) thao tác làm việc này thường xuyên.

Bạn đang xem: Refactor code là gì

Thực hiện nay code refactoring như thế nào? Vấn đề này thậm chí là thừa nhiều cho tất cả một cuốn sách. Những cách thức đơn giản nhất chúng ta có thể tham khảo tại http://refactoring.com của huyền thoại Martin Fowler. Tại đây bạn có thể tham khảo mọi kỹ thuật đơn giản dễ dàng nhất cùng dấu hiệu phân biệt một đoạn code hoàn toàn có thể được refactor; từ bỏ chuyện đơn giản và dễ dàng nhất như đưa 2 đoạn code tương tự nhau thành một hàm đến sự links giữa các đối tượng người dùng nhằm bảo đảm an toàn tính hướng đối tượng người dùng của chương trình. Website này thực sự hữu dụng với những khối hệ thống thiết kế theo tứ tưởng hướng đối tượng người dùng (phù hòa hợp với phần nhiều những mã nguồn hiện tại giờ), tuy thế cũng rất tốt với những tứ tưởng xây dựng khác. Một chú ý hay là, nhiều lúc bạn thấy lý giải refactor một quãng code trường đoản cú A sang trọng B và nơi khác lại hướng dẫn refactor đoạn code tự B thanh lịch A. Điều này không mâu thuẫn, do “A xuất xắc B giỏi hơn?” thì chỉ chính các bạn mới gồm câu vấn đáp xác xứng đáng trong ngữ cảnh của source code hiện tại tại. Tuy vậy, vẫn sẽ có được những chuẩn chung nhằm một đoạn code được xem là “tốt” tuyệt “dở”; ví dụ, để tên biến chuyển là a là vấn đề không gật đầu đồng ý được trong phân phát triển phần mềm (nơi duy nhât tôi thấy giải pháp đặt tên đổi thay này phân phát huy công dụng là trong những cuộc thi lập trình với source code ngắn và thời gian ganh đua tính bằng mili giây). Cùng hãy nhớ rằng, code refactoring không làm biến hóa hành vi của chức năng hay hệ thống; vày đó, hiệu quả của việc kiểm thử phải không đổi.

Khi nào thực hiện code refactoring? Về lý thuyết, hãy tiến hành code refactoring bất cứ khi nào có thể. Trước khi commit, mỗi xây dựng viên nên đọc lại gần như đoạn code mình đã viết và xem có thể cải tiến được không. Sau 1 thời gian, nhóm cải cách và phát triển cần bên nhau nhìn lại xem có thể cải tiến ở những điểm nào với cùng thực hiện code refactoring. Mặc dù nhiên, vấn đề không đơn giản như vậy.

Điều gì rào cản code refactoring? Đây là một thắc mắc rất thú vị. Tôi đã gặp gỡ rất những nhóm thực hành Agile tuy nhiên không bao giờ thực hiện nay code refactoring, cùng với những tại sao chính như sau:

Trình độ kém. Khi team phát triển không có hiểu biết sâu sắc về OOP thì tất nhiên những đoạn code ban sơ viết ra sẽ rất “dở”, nhưng quan trọng là họ trọn vẹn không hiểu được nó “dở”. Việc này càng gian nguy nếu không tiến hành code refactoring bởi nhóm sẽ mãi bảo trì năng lực hiện tại có.Chấp nhận.

Xem thêm: L/C At Sight Là Gì - Một Số Lưu Ý Liên Quan Đến L/C

Sau một thời hạn dài, nhóm cải tiến và phát triển nhận ra có không ít đoạn code “dở” tuy vậy nhóm vẫn gật đầu đồng ý bởi con số code “dở” là vô số và bao gồm tư tưởng đồng ý “sống phổ biến với lũ”, hoặc nghĩ về tới bài toán viết lại cục bộ hệ thống.Không có thời gian. Đây là vì sao khá xác đáng; vày như tôi nói nghỉ ngơi trên, khách hàng hàng trọn vẹn không nhấn được lợi ích trực tiếp trường đoản cú code refactoring, nên khó thuyết phục họ trả tiền đến nhóm trở nên tân tiến thực hiện tại code refactoring. Mặc dù vậy, vấn đề lắp ổ điện thứ 11 mất 10 giờ, cụ vì 2 tiếng đồng hồ cho ổ điện thứ 1, thì cũng chính là tiền của người tiêu dùng mà thôi (và điều này có thể nảy sinh nghi vấn từ khách hàng rằng năng lực hoặc cách biểu hiện làm việc của group đã kém đi).

Tuy vậy, những nguyên nhân này đang đẩy cả nhóm trở nên tân tiến vào một vòng luẩn quẩn ko hồi kết: trình độ kémsức ép thời gian đưa ra hầu như đoạn code “dở”, không thực hiện code refactoring khiến cho trình độ không được cải thiện, sau một thời hạn đành chấp nhận, khiến cho sức ép thời gian càng lớn, không thể thực hiện code refactoring, và chuyên môn không được cải thiện… với dự án, trường đoản cú đam mê bỗng nhiên thành nhiệm vụ với team phát triển, khiến động lực làm việc không còn đúng.


*

Vậy chiến thuật là gì? Từ góc nhìn một lập trình sẵn viên, tôi cho rằng việc không tiến hành code refactoring là trọng trách của xây dựng viên; vị họ cảm thấy không được đam mê và trách nhiệm quan trọng với “đứa con tinh thần” của mình; không không giống một nhà văn viết ra đông đảo tác phẩm thấp tiền. Tuy vậy, fan “lãnh đạo” trong dự án Agile cũng phải gồm trách nhiệm tạo nên những “khoảng lặng” về những tác dụng cần bổ sung cập nhật để nhóm phát triển thực hiện code refactoring. Việc này diễn ra càng số đông đặn, trình độ chuyên môn và năng suất của thiết kế viên càng cao bởi code refactoring chính là một cách nâng cấp tay nghề cùng hiểu biết thâm thúy dựa trên số đông best practice cách tân họ giỏi hơn. 1 ngày giành cho code refactoring hôm nay có thể giảm sút 10 ngày cải tiến và phát triển buồn tẻ sau này.

Giải pháp mang đến source code đang quá “cũ”? Khi họ “động đâu cũng thấy vấn đề” trong source code, chấp nhận hoặc làm lại từ bỏ đầu thường xuyên là giải pháp; tuy vậy, cả 2 phương án này thường rất tốn kém. Code refactoring rất có thể là một giải pháp:

Sử dụng điều khoản phân tích source code (tôi đang đề cập nghỉ ngơi những nội dung bài viết sau) nhằm tìm ra đầy đủ đoạn code “dở”Nhóm cải tiến và phát triển cùng quét cấp tốc qua mã nguồn để review và search thêm rất nhiều vấn đềƯớc lượng tổng thời hạn cần đến code refactoringĐịnh nghĩa cùng lên kế hoạch câu hỏi kiểm thử. Bài toán này rất quan trọng vì code refactoring phải bảo vệ không đổi khác hành vi của công dụng và hệ thống. Bây giờ automation demo được ưu tiên bởi khối lượng kiểm demo nhiều. Không nên (thậm chí là nghiêm cấm) triển khai code refactoring nếu không tồn tại kế hoạch kiểm test tốt.Lên kế hoạch và tiến hành dần, từng phần. Thật tuyệt vời và hoàn hảo nhất nếu họ có tổng thể thời gian để thực hiện; nếu không, hãy tiến hành từng phần tuy nhiên song với vượt trình cách tân và phát triển tiếp. Cùng hãy kiên nhẫn, bọn họ không thể thấy kết quả chỉ sau 1 vài ngày.

Thât ra, code refactoring là quá trình rất đơn giản, tới mức người ta thuận lợi bỏ qua code refactoring để nghĩ tới architect refactoring hay structure refactoring. Dẫu vậy theo tôi, khi triển khai code refactoring tốt, hồ hết design pattern sẽ dần được xuất hiện và từ đó phong cách thiết kế mới cũng trở nên được hình thành. Khôn cùng ít khi bọn họ cần tới architect refactoring; với tôi cũng không tham vọng giới thiệu những vấn đề này sớm.