2011-12-27 37 views
5

Tôi tò mò nếu có thể sử dụng chú thích trên lớp hoặc phương thức, trong hoặc trước khi chạy, thay thế nhận xét bằng cách ghi nhật ký chuỗi nhận xét. Ví dụ, nếu trên android:Thay thế nhận xét java bằng cách ghi nhật ký trong hoặc trước khi chạy

@LogComments 
class MyActivity extends Activity { 
    @Override public void onCreate(Bundle b) { 
     super.onCreate(b); 
     // set some local vars 
     int a = 1; 
     int b = 2; 
    } 
} 

sẽ dịch một cái gì đó giống như

class MyActivity extends Activity { 
    @Override public void onCreate(Bundle b) { 
     super.onCreate(b); 
     Log.d("TAG", "set some local vars"); 
     int a = 1; 
     int b = 2; 
    } 
} 
+3

Điều đó sẽ phải trước khi biên dịch, các chú thích không được giữ lại trong các tệp lớp. – Mat

+1

Tôi không nghĩ rằng có một công cụ như vậy và tôi không tin rằng nó sẽ là một ý tưởng tốt. Nhật ký có nghĩa là để theo dõi những gì prorgam làm ở giai đoạn gỡ lỗi (và thường những bản ghi nên được loại bỏ). Nhật ký cũng có thể được sử dụng cho một số ghi nhật ký mức cao như báo cáo lỗi hoặc giúp người phát triển sử dụng công cụ. Bình luận có nghĩa là để giải thích một phần khó khăn của mã. Họ không có cùng ý định. * – Snicolas

+1

Ồ, và trong android, bạn nên xóa mọi cuộc gọi để Ghi nhật ký trước khi phát hành sản phẩm. Thông thường thông qua obfuscation – Snicolas

Trả lời

1

Hết hộp. Không có gì tồn tại để cho phép điều này.

Bây giờ nếu bạn muốn tự mình xây dựng, bạn có thể tạo một số loại mở rộng trình biên dịch cho phép bạn phân tích tệp và dịch nhận xét thành biểu thức nhật ký tùy thuộc vào chú thích đang có mặt. Nhưng điều này sẽ phải xảy ra như là một bước của giai đoạn biên dịch vì các chú thích không nằm ngoài tệp lớp nên sẽ không có cách nào để nó xảy ra khi chạy.

Nhưng, bạn đang nói về một dự án bên khá lớn để tạo ra một cái gì đó như thế này. Ngoài ra còn có những hạn chế đối với cách tiếp cận này như việc viết ra các giá trị biến tại thời gian chạy sẽ không thể thực hiện được nếu không thêm một số ngôn ngữ biểu thức nào vào các nhận xét. Cuối cùng, bạn sẽ tạo ra một cái gì đó phức tạp vs một cái gì đó đã tồn tại, là mạnh mẽ, và sử dụng hàng triệu lần hơn bằng cách sử dụng API.

+0

điều này là thú vị, có bao giờ bạn làm điều này trước và nếu như vậy, bạn có bất kỳ đề nghị đọc về chủ đề nói chung? – dskinner

+0

Nó có vẻ phức tạp thực sự. Và không phải mọi nhận xét đều có thể chuyển đổi thành cuộc gọi nhật ký một cách đơn giản. – user802421

+0

bạn đang tìm kiếm một cái gì đó đặc biệt? Tôi đã làm một số tìm kiếm ngắn một chút trước đây và đi qua Polyglot cho java http://www.cs.cornell.edu/projects/polyglot/ nhưng sẽ phải nghiên cứu thêm một chút sau này. – dskinner

0

Không có điều này là không thể vì ý kiến ​​được loại bỏ khi chạy. Điều tốt nhất tôi có thể nghĩ đến là đọc javadoc tại thời gian chạy và ghi lại chúng. Nhưng điều đó không bao gồm các bình luận không phải javadoc.

0

Bạn đang cố gắng đạt được điều gì?

Nếu bạn muốn bật Ghi nhật ký trên cơ sở mỗi lớp, bạn có thể sử dụng một loại cờ nào đó (int cuối cùng tĩnh sẽ làm) sẽ tắt hoặc bật ghi nhật ký. Hãy xem chủ đề này: How do I enable/disable log levels in Android? để biết thêm một số mẹo về cách đăng nhập vào Android.

+0

Tôi đã có một phương pháp tĩnh để xử lý nhật ký gắn liền với cá thể ứng dụng Android của tôi và dựa trên kiến ​​xây dựng tính chất. Thành tích là biết cách thực hiện các mục như vậy trước hoặc trong thời gian chạy java. Vấn đề đặt ra câu hỏi có thể được nhìn thấy trong một bình luận về câu hỏi chính, nhưng một giải pháp cho một vấn đề đó là không liên quan đến câu hỏi. – dskinner

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