Soru Bir paketi Java'da kullanımdan kaldırmanın en net yolu nedir?


Yeni bir kod tabanı üzerinde çalışıyorum ve sistemi yeni bir çerçeveye taşıyorum.

Diğer geliştiriciler için bu paketin içindeki her şeyin yeni bir gelişme için kullanılmaması gerektiğini açıkça belirtmek için, birtakım paketler kullanmak istiyorum.

Tüm bir paketin kullanımdan kaldırıldığını belirtmenin en iyi yolu nedir?


25
2018-02-22 05:40


Menşei


Paketin içindeki her şeyi kullanım dışı bırakma ile paketin kendisini kullanımdan kaldırması arasında bir fark olduğuna dikkat edin. Paketin kendisinin yok edilmesi, paketin içindeki her şeyin kullanımdan kaldırıldığının bir göstergesidir. ve bu pakete hiçbir şey eklenmemeli - beluchin


Cevaplar:


Kendin söyledin: Herşeyi yok saymak istiyorsun. içeride paketin kendisi değil, bir paket. Paket bir ad alanından başka bir şey değildir ve bir ad alanının kullanımdan kaldırılması farklı bir anlama sahip olacaktır - artık bu ad alanını kullanmayın. Sevmek Bu ad alanına yeni öğeler eklemeyin.

Sizin durumunuzda, artık kullanılmaması gereken her bir sınıfın her bir kamu yöntemini (ve alanını) kullanımdan kaldırmanızı öneririm. Bu, modern IDE'lerde görünür hale gelir ve geliştiriciler eski sınıfları ve yöntemleri kullanmak istediklerinde uyarılırlar. Ve kodunuzu gözden geçirebilir ve bu sınıfların ve yöntemlerin bağımlılıklarını ortadan kaldırmak için adım adım yeniden gözden geçirebilirsiniz.


11
2018-02-22 05:55



Benim durumumda Hmm, eklenmesi gereken pek çok ek açıklama var. Bir paket seviyesinde yapabilmenin bir yolu olduğunu ve IDE'nin her yöntem ve sahada yapmış olsaydınız aynı şekilde davranacağını umuyordum. - Daniel Alexiuc
Paketinizdeki @Gecekli olarak sadece her sınıfı işaretleyebilirsiniz. TÜM yöntemlere ve alanlara açıklama eklemenize gerek yoktur. - dart
Çözümümü standart cevapta ekledim. - dart


Bunu yeni yapmak zorundaydım ve package-info.java paketi amorti etmek için dosya.

http://www.intertech.com/Blog/whats-package-info-java-for/

Ekle package-info.java sadece paket bildirimi ile paketinize dosya:

/**
 * @deprecated As of release 2.0, replaced by {@link com.acme.new.package}
 */
@Deprecated
package com.acme.old.package;

Eclipse'de, kullanıcının bu paketten bir sınıf ithal ettiği tüm yerlerin kullanımdan kaldırılmasıyla altı çizileceği vurgulanacaktır.


33
2018-04-11 17:46



Java 7'den itibaren, bu doğru cevap olduğuna inanıyorum, çünkü şimdi @Deprecated paket ek açıklamaları kullanmak mümkün: bugs.java.com/bugdatabase/view_bug.do?bug_id=6492694 - Rafael Chaves
inanıyorum @deprecated değiştiriciye izin verilmiyor package-info seviyesinde javaDoc. - Milli
@Milli, Java 7'deki (sabit) hata hakkındaki ilk yorumu görür. - muymoo
@muymoo, java 8 kullanıyorum ve kullanmama izin vermiyor @deprecated değiştirici JavaDoc. Bu yüzden daha önceki yorumum. - Milli
IntelliJ 2017.2'den itibaren bu paket içindeki sınıfları veya paketin kendisini kullanımdan kaldırılmış olarak işaretlemiyor. - christopheml


kullanım AspectJ'yi. Paket kullanıldığında derleyici uyarısı veren bir Unsur oluşturun:

public aspect DeprecationAspect{

    declare warning :
        call(* foo.bar..*(..)) : "Package foo.bar is deprecated";

}

(Eğer kullanırsanız AspectJ'yi kolayca yapınıza ekleyebilirsiniz. karınca veya maven)


6
2018-02-22 08:27



@Joachim Birçok şey overkill: IDE'ler, sürüm kontrolü, sürekli entegrasyon, yapı sistemleri vb. Ve hala: Onlar olmadan gelişmeyeceğim. AspectJ, AspectJ olmaksızın kolayca elde edilemeyen bu özel özelliğe sahiptir. Neden kullanmıyorsun? Kesinlikle zarar vermez ve politikaların uygulanmasına yardımcı olur. Ve bunu reddeden kişiye: Neden? Geçerli bir öneri. Bana gösterebilir misin herhangi Aynı kodu birkaç satırda yapabilen diğer teknoloji? - Sean Patrick Floyd
@Sean: İndirgeyen kişinin bunun bir kötü öneri. - Lawrence Dol
@ Yazılım Maymun: Bu açık. Ama ben ilgilenirim niye ya bunun gibi görevler için tasarlanan standart bir teknolojiyi kullanmanın kötü bir öneri olduğunu düşünüyorlar. - Sean Patrick Floyd
@ Yazılım Maymun katılmıyorum. Bu, yüksek vasıflı uzmanların ücretsiz danışmanlık sağladıkları bir sitedir. Ücretsiz tavsiyeye teşekkür etmek kabul edilemez, ancak cevap vermek için zaman ayıran diğer kişileri reddetmek, yalnızca cevap korkunçsa kabul edilebilir. Ve o zaman bile, postere, neye katıldığınızı belirterek cevabını iyileştirme şansı vermelisiniz. Sen buna sızlanan mı diyorsun? Katılmıyorum. Ne yaptığınızı söylüyorum, ve sanırım katılmıyorsunuz. Bunu bırakalım. Bana göre, yorum-aşağı downvoters bu gibi çalışma cevapları bu siteyi yok. - Sean Patrick Floyd
Ve overkill hakkında? Benim önerim aşağı kaynar Bir maven pom yerine <20 çizgi ekliyor 3 satırlı bir metin dosyası yazıyor. Bunu kabul edilen cevapla karşılaştırın, eldeki her bir alanın ve yöntemin paket içinde elden çıkarılmasını manuel olarak yapın. şimdi işte overkill! - Sean Patrick Floyd


Oluşturabilirsiniz Paket açıklama ve herhangi bir paketi @Deprecated :)


2
2018-02-22 05:48



Bu işe yaramıyor. Bunun hile yapacağını umuyordum - Shervin Asgari


Daha sonra gelenler için ...
IDEA ile çözümüm "Yolda Değiştir"

Bulmak için metin: (Kamu | korumalı) + (\ ler)(Özet)(\ S)(statik)(\ S)(Nihai)(\ S) * (sınıf | arayüzü | enum | Enum)
İle değiştirin: @ Onaylanmış \ n \ $ 1 \ $ 3 \ $ 5 \ $ 7 \ $ 9
Seçenekler: (select) Normal ifadeler
Dizin: {Dir'ı seçin}


2
2017-07-23 13:54