Чому вона там в першу чергу?
Ви перевірили нестабільний код в основній лінії? Чому?
Нестабільний код не слід перевіряти в trunk / main / master або як би не було головне ім'я магістралі. Це вважається розвитком високого ризику, і натомість його слід було б виділити у власній галузі, над якою ви працювали, а не перевіряли її на основну.
Я настійно закликаю вас (та керівництво вашої команди) ознайомитись із розширеними стратегіями розгалуження SCM . Зокрема, зверніть увагу на роль розвитку та те, що вона говорить про те, що вважається розвитком високого ризику:
Загалом, подумайте про використання окремих відділень для кожного проекту з високим ризиком. Проекти з високим рівнем ризику характеризуються великим розміром, великою кількістю людей, незнайомою темою, високо технічною тематикою, дуже чіткими строками, невизначеними термінами доставки, неповними або мінливими вимогами та географічно розподіленими командами проектів. Аналогічно розглянемо призначення однієї гілки для розвитку низького ризику в кожному випуску. Кілька джерел, включаючи [WING98], рекомендують використовувати основну лінію для цієї мети. Розгляньте фактори, обговорені вище для основної лінії, перш ніж приступити до цього курсу дій. Розвиток із низьким рівнем ризику може мати різну політику від основної лінії, навіть якщо у вас є кілька членів сімейства продуктів, що координуються через основну лінію.
Дозволити людям перевіряти нестабільний (або невикористаний) код на основний, це означає, що ви будете плутати майбутні зусилля з розробки щодо спроби зберегти цей код. Кожна гілка та клон представника відтепер до кінця часу міститиме це, доки хтось не скаже "свій мертвий код" та не видалить його.
Є такі, що кажуть "добре, якщо його у гілці він забуде", і хоча це може бути правдою, забувши мертвий (і нестабільний) код у магістралі в багато разів гірше, оскільки він плутає всю подальшу розробку, поки не буде видалений - і то вона ще більше забута. Добре названа гілка "/ fooProject / branch / WeisBigIdea" (або еквівалент) є видимою і легшою для роботи в майбутньому - особливо якщо це працює.
@Deprecated
Перше - @Deprecatedанотація. Це виходить за рамки javadoc і виказує попередження компілятора. javacнадає -deprecationпрапор, який описується як:
Покажіть опис кожного використання або перестановки застарілого члена або класу. Без -deprecation, javacпоказує резюме вихідних файлів, які використовують або переосмислюють застарілі члени або класи. -визначення є скороченим для -Xlint:deprecation.
Як зазначалося, це перевищує стандартні попередження компілятора.
У багатьох IDE застарілі методи та значення показані чітко:
foo.bar();
І дало б випуск:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
Залежно від вашої структури збірки, у вас можуть з’явитися попередження про розрив збірки. Це зірве збірку лише в тому випадку, якщо один із ваших класів був використаний (не, якщо він просто зібраний у).
@CustomAnnotation
До цього існує багато підходів. Наприклад, полегшена анотація javac @Warning, яка забезпечує процесор анотацій, який знімає попередження під час компіляції, коли використовується щось із цією приміткою ( підручник з мережевих файлів на користувацьких процесорах анотацій, щоб ви могли отримати уявлення про те, що відбувається позаду сцени).
Oracle навіть описує приклад використання користувальницьких анотацій для @Unfinishedанотації при використанні метаданих Java, частина 2: Спеціальні анотації .
За допомогою AnnotationProcessor ви можете запускати довільний код під час компіляції. Ви самі вирішуєте, що ви хочете робити. Попереджайте, розривайте збірку, коли щось використовується. В Інтернеті є численні підручники, як написати такий код. Незалежно від того, чи хочете ви створити помилку під час її компіляції (це буде дратувати і призведе до її видалення) або якщо вона використовується (досить складніше написати).
Зауважте, що все це означає зміну складок для фактичного використання процесора анотацій.