2012-02-16 40 views
14

Tôi làm việc trong một dự án Java khá lớn (hơn 2500 lớp) sử dụng tiêu chuẩn mã cũ, trong đó tất cả các biến thành viên được đặt trước bằng "m_" (ví dụ: m_temperature). Có thực sự là không có lý do cho việc này nữa và tôi muốn để thoát khỏi chúng, nhưng:Đổi tên nhiều biến trong nhiều lớp Java cùng một lúc

  1. Để thực hiện thay đổi tôi phải làm tất cả các biến cùng một lúc.
  2. Nó không được tạo ra bất kỳ lỗi nào.

Cách tiếp cận ngây thơ đầu tiên của việc đổi tên tất cả "m_variable" thành "biến" sẽ không đủ để có thể tạo ra xung đột tên giữa biến đã tồn tại có tên "biến" và biến mới được đổi tên.

Vì vậy, để tổng hợp: Làm cách nào để đổi tên tất cả các biến số thành viên pesky này mà không gặp rắc rối và có bất kỳ vấn đề nào khác ngoài vấn đề được đề cập ở trên không?

Vâng, tôi nhận thức được refactoring/đổi tên tính năng trong IDE, xin lưu ý rằng tôi muốn làm những thay đổi tất cả các biến phù hợp với các tiêu chí cùng một lúc và không phải bằng cách kích chuột phải vào biến và đổi tên chúng từng cái một.

+0

Bạn có thể làm điều đó bằng cách sử dụng công cụ tái cấu trúc id của eclipse ide. – Josnidhin

+0

có thể bạn có nghĩa là bạn chỉ cần chỉ định tiêu chí ví dụ, tiền tố có "m_" và "công cụ" sẽ tìm kiếm toàn bộ dự án cho tất cả biến toàn cầu và thay thế nó? –

+0

Bryan: CÓ, đó là điều tôi muốn làm. Trong IntelliJ và Eclipse, người ta có thể tạo một tiêu chuẩn mã mà IDE theo sau khi tạo/tự động hoàn thành mã và có thể thêm hoặc loại bỏ các tiền tố như "m_" cho các biến lớp. Điều đáng buồn là khi thay đổi tiêu chuẩn mã cho những thứ này (trong trường hợp của tôi loại bỏ m_ làm tiền tố cho biến lớp), người ta không thể thực thi nó theo mã đã tồn tại (không theo cách mà tôi đã tìm thấy ít nhất). định dạng mã. – tommys

Trả lời

5

Theres một question trên SC đó là khoảng một refactoring lớn trong java quá. Câu trả lời hay nhất là sử dụng japvaparser và triển khai khách truy cập để thực hiện tái cấu trúc thực tế. Điều này không nên có nhiều công việc cho một đổi tên đơn giản.

+2

Điều này nghe về những gì tôi cần, một trình phân tích cú pháp có thể viết được sẽ thực hiện một khởi đầu tuyệt vời! – tommys

0

Để trả lời câu hỏi của bạn thứ hai (được có bất kỳ vấn đề hơn)

  1. tôi sẽ tránh các biến toàn cục. Ủng hộ encapsulation sao cho bạn có thể bản địa hóa chức năng.
  2. Tôi sẽ triển khai một số unit tests để bạn có thể xác minh các thay đổi trong tương lai. Tại thời điểm nó xuất hiện kiểm tra chỉ có sẵn của bạn là dự án của bạn biên dịch đúng cách.

Tôi nhận thấy cả hai vấn đề này đều có thể xảy ra trong một dự án hiện có. Nhưng nó có giá trị tìm kiếm để xác định điểm đau có thể và làm việc trên những người đầu tiên của tất cả.

+0

Bạn là ofcourse phải, bởi Im chơi cũ di sản mã -card ở đây :) – tommys

-3

Nếu bạn đang sử dụng eclispe IDE, bạn có thể làm điều đó một cách dễ dàng.

bước:

  1. chọn biến
  2. nhấp chuột phải vào nó
  3. nhấp chuột vào Refactor
  4. nhấp chuột vào đổi tên

ngay cả trong netbeans bạn có thể làm theo cùng bước . IDE tìm thấy tham chiếu và tập quán và thay thế tất cả.

+0

Như tôi đã nêu trong câu hỏi của tôi: có 2500 + lớp học với các biến trong họ và tôi muốn thay đổi tất cả cùng một lúc, đó thực sự không phải là những gì bạn đang đề xuất :) – tommys

-1

Công cụ tái cấu trúc sẽ giúp trong trường hợp này. Khi bạn đổi tên một biến, nó sẽ đổi tên nó ở tất cả các vị trí phụ thuộc, kể cả nếu nó được gọi trong tập tin lớp khác nhau. Trong khi làm điều này, nó sẽ cảnh báo bạn trong trường hợp nếu biến đổi tên của bạn phù hợp với tên đã tồn tại.

Tuy nhiên, chúng tôi phải thực hiện thủ công cho từng biến.

+0

Có, thật đáng buồn và thats chỉ là rất nhiều công việc mà Im đang cố gắng tránh ở đây. – tommys

-1

Tôi không biết liệu điều này có thể hoạt động hay không. Nhưng tôi tìm thấy liên kết này để tìm và thay thế tất cả các lần xuất hiện trong một dự án sử dụng IntelliJ.

http://www.jetbrains.com/idea/webhelp/finding-and-replacing-text-in-project.html

+0

Không có nó sẽ không giải quyết các vấn đề ngôn ngữ cụ thể như va chạm tên biến, nhưng cảm ơn anyway. – tommys

7

Làm thế nào về dưới đây từ: mass renaming of java variables

bởi Simulant

nhấp chuột vào tên biến.

1: nhấn [alt] + [shift] + [R]

2: nhập tên mới.

3: nhấn [enter] để xác nhận.

-> tất cả các phiên bản của biến này sẽ được đổi tên.

+1

thanx man, đây là những gì tôi đang tìm kiếm .. – rummykhan

+1

Sử dụng Eclipse đây là câu trả lời hay nhất mà tôi đang tìm kiếm – user7344209

Các vấn đề liên quan