Tại sao nó ở đó ngay từ đầu?
Bạn đã kiểm tra mã không ổn định vào dòng chính? Tại sao?
Mã không ổn định không nên được kiểm tra vào thân / chính / chính hoặc bất kỳ tên thân chính là gì. Đây được coi là sự phát triển rủi ro cao và thay vào đó nên được cách ly trong nhánh riêng của nó mà bạn đã làm việc thay vì kiểm tra chính.
Tôi đặc biệt khuyến khích bạn (và nhóm trưởng của bạn) đọc Chiến lược phân nhánh SCM nâng cao . Cụ thể, chú ý đến vai trò phát triển và những gì nó nói về những gì được coi là phát triển rủi ro cao:
Nói chung, xem xét sử dụng các chi nhánh riêng biệt cho từng dự án rủi ro cao. Các dự án rủi ro cao được đặc trưng bởi quy mô lớn, số lượng người lớn, chủ đề xa lạ, chủ đề kỹ thuật cao, dòng thời gian rất chặt chẽ, ngày giao hàng không chắc chắn, yêu cầu không đầy đủ hoặc không ổn định và các nhóm dự án phân phối theo địa lý. Tương tự, hãy xem xét chỉ định một nhánh duy nhất để phát triển rủi ro thấp trong mỗi bản phát hành. Một số nguồn bao gồm [WING98] khuyên bạn nên sử dụng đường dây chính cho mục đích này. Hãy xem xét các yếu tố được thảo luận ở trên cho tuyến chính trước khi cam kết thực hiện hành động này. Phát triển rủi ro thấp có thể có chính sách khác với tuyến chính ngay cả khi bạn có nhiều thành viên trong một gia đình sản phẩm điều phối thông qua tuyến chính.
Để mọi người kiểm tra mã không ổn định (hoặc không sử dụng) vào dòng chính có nghĩa là bạn sẽ nhầm lẫn giữa các nỗ lực phát triển trong tương lai về việc cố gắng duy trì mã này. Mỗi nhánh và bản sao của đại diện từ giờ cho đến hết thời gian sẽ chứa thứ này cho đến khi ai đó nói "codE chết" của nó và xóa nó.
Có một số người nói rằng "tốt, nếu nó ở trong một nhánh thì nó bị lãng quên" và trong khi đó có thể là sự thật, việc quên mã chết (và không ổn định) trong dòng chính tệ hơn nhiều lần vì nó gây nhầm lẫn cho tất cả sự phát triển trong tương lai cho đến khi nó bị xóa - và sau đó nó thậm chí còn bị lãng quên nhiều hơn Một nhánh được đặt tên độc đáo của "/ fooProject / cành / WeisBigIdea" (hoặc tương đương) có thể nhìn thấy và dễ dàng hoạt động hơn trong tương lai - đặc biệt nếu đó là loại công việc.
@Deprecated
Điều đầu tiên là @Deprecated
chú thích. Điều này vượt ra ngoài javadoc và đưa ra các cảnh báo về trình biên dịch. javac
cung cấp một -deprecation
cờ được mô tả là:
Hiển thị một mô tả về mỗi lần sử dụng hoặc ghi đè của một thành viên hoặc lớp không dùng nữa. Không có -deprecation
, javac
hiển thị một bản tóm tắt các tệp nguồn sử dụng hoặc ghi đè các thành viên hoặc lớp không dùng nữa. -deprecation là tốc ký cho -Xlint:deprecation
.
Như đã lưu ý, điều này vượt lên trên và vượt ra ngoài các cảnh báo của trình biên dịch tiêu chuẩn.
Trong nhiều IDE, các phương thức và giá trị không dùng nữa được hiển thị với một gạch ngang:
foo.bar();
Và sẽ tạo ra sản lượng như:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
Tùy thuộc vào cấu trúc bản dựng của bạn, bạn có thể có các cảnh báo phá vỡ bản dựng. Điều này sẽ chỉ phá vỡ bản dựng nếu một trong các lớp của bạn được sử dụng (không phải nếu nó chỉ được biên dịch đơn giản).
@CustomAnnotation
Có nhiều cách tiếp cận này. Ví dụ: chú thích javac @Warning nhẹ cung cấp bộ xử lý chú thích sẽ đưa ra cảnh báo vào thời gian biên dịch khi sử dụng một chú thích với chú thích đó ( hướng dẫn của netbeans về bộ xử lý chú thích tùy chỉnh để bạn có thể biết được những gì đang diễn ra đằng sau cảnh).
Oracle thậm chí còn mô tả một ví dụ về việc sử dụng các chú thích tùy chỉnh cho một @Unfinished
chú thích trong việc tận dụng tối đa siêu dữ liệu của Java, Phần 2: Chú thích tùy chỉnh .
Với AnnotationProcessor , bạn có thể chạy mã tùy ý tại thời gian biên dịch. Nó thực sự tùy thuộc vào bạn để quyết định những gì bạn muốn nó làm. Cảnh báo, phá vỡ các bản dựng khi một cái gì đó được sử dụng. Có rất nhiều hướng dẫn trên mạng về cách viết loại mã này. Cho dù bạn muốn tạo ra một lỗi khi nó được biên dịch (điều này sẽ gây khó chịu và dẫn đến việc nó bị xóa) hoặc nếu nó được sử dụng (khá phức tạp hơn một chút để viết).
Lưu ý rằng tất cả điều này ngụ ý việc thay đổi các bản dựng để thực sự sử dụng bộ xử lý chú thích.