Mengapa itu ada di tempat pertama?
Anda telah memeriksa kode yang tidak stabil ke dalam jalur utama? Mengapa?
Kode yang tidak stabil tidak boleh diperiksa ke dalam trunk / main / master atau apa pun nama trunk utama. Ini dianggap sebagai pengembangan berisiko tinggi dan seharusnya disisihkan di cabang sendiri tempat Anda bekerja alih-alih diperiksa ke utama.
Saya sangat mendorong Anda (dan pimpinan tim Anda) untuk membaca Strategi Cabang SCM Lanjutan . Secara khusus, perhatikan peran pengembangan dan apa yang dikatakannya tentang apa yang dianggap sebagai pengembangan berisiko tinggi:
Secara umum, pertimbangkan untuk menggunakan cabang terpisah untuk setiap proyek berisiko tinggi. Proyek-proyek berisiko tinggi dicirikan oleh ukuran besar, jumlah besar orang, materi pelajaran yang tidak dikenal, materi pelajaran yang sangat teknis, garis waktu yang sangat ketat, tanggal pengiriman yang tidak pasti, persyaratan yang tidak lengkap atau tidak stabil, dan tim proyek yang didistribusikan secara geografis. Demikian pula, pertimbangkan untuk menunjuk cabang tunggal untuk pengembangan risiko rendah di setiap rilis. Beberapa sumber termasuk [WING98] merekomendasikan penggunaan garis utama untuk tujuan ini. Pertimbangkan faktor-faktor yang dibahas di atas untuk jalur utama sebelum melakukan tindakan ini. Pengembangan risiko rendah mungkin memiliki kebijakan berbeda dari garis utama bahkan jika Anda memiliki banyak anggota keluarga produk yang berkoordinasi melalui jalur utama.
Membiarkan orang memeriksa kode yang tidak stabil (atau tidak digunakan) ke dalam jalur utama berarti Anda akan membingungkan upaya pengembangan di masa depan tentang upaya mempertahankan kode ini. Setiap cabang dan klon dari perwakilan dari sekarang sampai akhir waktu akan mengandung ini sampai seseorang mengatakan "codenya mati" dan menghapusnya.
Ada beberapa yang mengatakan "baik, jika di cabang itu akan dilupakan" dan sementara itu mungkin benar, setelah lupa kode mati (dan tidak stabil) di garis utama sering kali lebih buruk karena membingungkan semua pengembangan masa depan sampai dihapus - dan maka itu bahkan lebih dilupakan. Cabang "/ fooProject / branch / WeisBigIdea" (atau yang setara) yang terlihat bagus terlihat dan lebih mudah untuk dikerjakan di masa mendatang - terutama jika jenisnya berfungsi.
@Deprecated
Hal pertama adalah @Deprecated
anotasi. Ini melampaui javadoc dan memuntahkan peringatan kompiler. javac
memberikan -deprecation
bendera yang digambarkan sebagai:
Perlihatkan deskripsi setiap penggunaan atau timpa anggota atau kelas yang sudah usang. Tanpa -deprecation
, javac
menunjukkan ringkasan file sumber yang menggunakan atau menimpa anggota atau kelas yang sudah tidak digunakan. -deprecation adalah singkatan untuk -Xlint:deprecation
.
Sebagaimana dicatat, ini melampaui peringatan kompiler standar.
Dalam banyak IDE, metode dan nilai yang usang ditampilkan dengan coretan:
foo.bar();
Dan akan menghasilkan output seperti:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
Bergantung pada struktur bangunan Anda, Anda mungkin memiliki peringatan untuk membatalkan pembangunan. Ini hanya akan merusak build jika salah satu kelas Anda digunakan (tidak hanya jika dikompilasi).
@CustomAnnotation
Ada banyak pendekatan untuk ini. Misalnya, javac @Warning annotation Lightweight yang menyediakan prosesor anotasi yang mengeluarkan peringatan pada waktu kompilasi ketika sesuatu dengan anotasi itu digunakan ( tutorial netbeans tentang prosesor anotasi khusus sehingga Anda bisa mendapatkan gambaran tentang apa yang terjadi di balik adegan).
Oracle bahkan menggambarkan contoh penggunaan anotasi khusus untuk @Unfinished
anotasi dalam Memanfaatkan Metadata Java, Bagian 2: Anotasi Kustom .
Dengan AnnotationProcessor , Anda dapat menjalankan kode arbitrer pada waktu kompilasi. Ini benar-benar terserah Anda untuk memutuskan apa yang ingin Anda lakukan. Peringatkan, hancurkan bangunan ketika sesuatu digunakan. Ada banyak tutorial di luar sana di web tentang cara menulis kode semacam ini. Apakah Anda ingin membuat kesalahan ketika dikompilasi (ini akan mengganggu dan menyebabkannya dihapus) atau jika digunakan (cukup sedikit lebih kompleks untuk ditulis).
Perhatikan bahwa semua ini berarti mengubah build untuk benar-benar menggunakan prosesor anotasi.