Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tái cấu trúc cho mọi người docx
MIỄN PHÍ
Số trang
46
Kích thước
314.0 KB
Định dạng
PDF
Lượt xem
1825

Tái cấu trúc cho mọi người docx

Nội dung xem thử

Mô tả chi tiết

Tái cấu trúc cho mọi người

Làm thế nào và tại sao lại sử dụng các tính năng tái cấu trúc được tự động hóa

của Eclipse

David Gallardo, Tư vấn phần mềm

Tóm tắt: Eclipse cung cấp tập các phép tái cấu trúc (refactoring) tự động mạnh

mẽ, so với những thứ khác, cho phép bạn đổi tên các phần tử Java™, di chuyển

các lớp và các gói, tạo các giao diện từ các lớp cụ thể, chuyển các lớp lồng nhau

vào các lớp mức cao nhất và lấy ra một phương thức mới từ các đoạn mã trong

một phương thức cũ. Việc trở nên quen thuộc với các công cụ tái cấu trúc của

Eclipse là một cách hay để cải thiện năng suất của bạn. Tổng quan về tính năng tái

cấu trúc của Eclipse này, kèm với các ví dụ, giải thích cách thức và lí do sử dụng

từng tính năng.

Lí do cần tái cấu trúc?

Tái cấu trúc (Refactoring) là thay đổi cấu trúc của một chương trình mà không làm

thay đổi chức năng của nó. Tái cấu trúc là một kỹ thuật mạnh, nhưng nó cần được

thực hiện cẩn thận. Mối nguy hiểm chính là các lỗi vô ý có thể được đưa vào, đặc

biệt là khi tái cấu trúc được thực hiện bằng tay. Mối nguy hiểm này dẫn đến một

sự chỉ trích thường xuyên về tái cấu trúc: tại sao lại sửa chữa mã nếu nó không bị

hỏng?

Có một vài lý do để bạn có thể muốn tái cấu trúc mã. Đầu tiên là bắt nguồn của

câu chuyện cổ tích: cơ sở mã rất cổ của sản phẩm đáng kính được kế thừa hoặc

nếu không thì xuất hiện bí ẩn. Nhóm phát triển ban đầu đã biến mất. Một phiên

bản mới, với các tính năng mới, phải được tạo ra, nhưng mã không còn hiểu được

nữa. Nhóm phát triển mới, làm việc cả đêm lẫn ngày, giải mã nó, vẽ bản đồ nó và

sau nhiều kế hoạch và thiết kế, phá hỏng mã hoàn toàn. Cuối cùng, cẩn thận, họ

đặt nó tất cả trở lại với nhau theo tầm nhìn mới. Đây là tái cấu trúc trên quy mô

khác thường và một ít vẫn còn hoạt động để nói về chuyện này.

Một kịch bản thực tế hơn là một yêu cầu mới được đưa vào cho dự án đòi hỏi thay

đổi thiết kế. Thật là vụn vặt cho dù yêu cầu này đã được đưa vào do sơ xuất trong

kế hoạch ban đầu hoặc do cách tiếp cận lặp lại (chẳng hạn như phát triển nhanh

nhẹn hoặc phát triển dựa vào thử nghiệm) đang được sử dụng để thận trọng đưa

vào các yêu cầu trong suốt quá trình phát triển. Đây là tái cấu trúc trên một quy

mô nhỏ hơn nhiều và nó thường yêu cầu thay đổi hệ thống phân cấp lớp, có lẽ do

đưa vào các giao diện hoặc lớp trừu tượng, chia tách các lớp, sắp xếp lại các lớp và

v.v.

Một lý do cuối cùng để tái cấu trúc, khi các công cụ tái cấu trúc tự động có sẵn,

chỉ đơn giản là một phím tắt để tạo mã ở vị trí đầu tiên -- một cái gì đó giống như

cách sử dụng một chương trình kiểm tra lỗi chính tả (spellchecker) để phân loại

một từ khi bạn không chắc cách đánh vần nó. Việc sử dụng tái cấu trúc nhàm chán

này -- chẳng hạn để tạo ra các phương thức getter và setter -- có thể là một bộ tiết

kiệm thời gian hiệu quả một khi bạn đã quen thuộc với các công cụ này.

Các công cụ tái cấu trúc của Eclipse không được dự kiến để sử dụng cho phép tái

cấu trúc tại một quy mô khác thường -- một vài công cụ có -- nhưng chúng là vô

giá để làm thay đổi mã trong quá trình diễn biến của một ngày làm việc của lập

trình viên trung bình, cho dù điều đó liên quan đến các kỹ thuật phát triển nhanh

nhẹn hay không. Cuối cùng, bất kỳ hoạt động phức tạp nào có thể được tự động

hóa đều là nhàm chán, cần tránh. Việc biết các công cụ tái cấu trúc Eclipse có sẵn

những gì và cách sử dụng đã dự kiến của chúng, sẽ cải thiện rất nhiều năng suất

của bạn.

Có hai cách quan trọng để bạn có thể làm giảm nguy cơ làm hỏng mã. Một cách là

phải có một bộ đầy đủ các bài thử nghiệm bộ phận cho mã đó: mã phải vượt qua

các bài thử nghiệm cả trước và sau khi tái cấu trúc. Cách thứ hai là sử dụng một

công cụ tự động hoá, chẳng hạn như các tính năng tái cấu trúc của Eclipse, để thực

hiện phép tái cấu trúc này.

Cách kết hợp thử nghiệm kỹ lưỡng và tái cấu trúc tự động đặc biệt mạnh mẽ và đã

chuyển nghệ thuật bí ẩn này thành một công cụ thường ngày, có ích. Khả năng

thay đổi cấu trúc mã của bạn mà không cần thay đổi chức năng của nó, theo cách

nhanh chóng và an toàn, thêm chức năng hoặc cải thiện việc bảo trì của nó có thể

ảnh hưởng đáng kể đến cách bạn thiết kế và phát triển mã, cho dù bạn kết hợp nó

vào một phương thức nhanh nhẹn chính thức hay không.

Các kiểu tái cấu trúc trong Eclipse

Các công cụ tái cấu trúc của Eclipse có thể được nhóm lại thành ba thể loại rõ ràng

(và đây là thứ tự mà chúng xuất hiện trong trình đơn Refactoring):

1. Thay đổi tên và tổ chức vật lý của mã, bao gồm đổi tên các trường, các

biến, các lớp và các giao diện và di chuyển các gói và các lớp.

2. Thay đổi tổ chức logic của mã ở mức lớp, gồm việc chuyển các lớp ẩn danh

thành các lớp lồng nhau, chuyển các lớp lồng nhau thành các lớp mức cao

nhất, tạo ra các giao diện từ các lớp cụ thể và di chuyển các phương thức

hoặc các trường từ một lớp đến lớp con hoặc siêu lớp.

3. Thay đổi mã trong một lớp, gồm chuyển các biến chuyển địa phương thành

các trường lớp, chuyển mã chọn trong phương thức thành một phương thức

tách biệt và tạo ra các phương thức getter và setter cho các trường.

Một số phép tái cấu trúc gần như không khớp với ba thể loại này, đặc biệt là Thay

đổi chữ kí phương thức (Change Method Signature), có trong thể loại thứ ba ở

đây. Ngoài những trường hợp ngoại lệ này, các phần theo sau sẽ thảo luận về các

công cụ tái cấu trúc của Eclipse theo thứ tự này.

Tổ chức lại và đổi tên lại vật lý

Bạn rõ ràng có thể đổi tên hoặc di chuyển các tệp xung quanh trong hệ thống tệp

mà không cần một công cụ đặc biệt, nhưng làm như vậy với các tệp mã nguồn

Java có thể đòi hỏi bạn phải chỉnh sửa nhiều tệp để cập nhật các câu lệnh import

(nhập khẩu) hoặc package (gói). Tương tự như vậy, bạn có thể dễ dàng đổi tên các

lớp, các phương thức và các biến bằng cách sử dụng một trình soạn thảo văn bản

để tìm kiếm và thay thế chức năng, nhưng bạn cần phải làm điều này cẩn thận, vì

các lớp khác nhau có thể có các phương thức hoặc các biến cùng tên; có thể rất

nhàm chán để duyệt qua tất cả các tệp trong một dự án để đảm bảo chắc chắn rằng

mọi cá thể được xác định và được thay đổi chính xác.

Di chuyển và Đổi tên (Rename and Move) của Eclipse có thể thực hiện các thay

đổi này một cách thông minh, trong suốt toàn bộ dự án, mà không có sự can thiệp

của người dùng, vì Eclipse hiểu mã theo ngữ nghĩa và có thể xác định các tham

chiếu đến một phương thức, biến cụ thể, hoặc các tên lớp. Việc thực hiện nhiệm

vụ này dễ dàng giúp đảm bảo rằng phương thức, biến và các tên lớp thể hiện rõ

ràng ý định của chúng.

Tải ngay đi em, còn do dự, trời tối mất!