The Google Annotations Gallery — новая open-source библиотека, которая предоставляет широкие возможности программистам для самовыражения. Вы не находите, что стандартные Java аннотации суховаты и безжизненны? Вам не хотелось поставить аннотацию LOL или Facepalm (?) Тогда, эта галерея для вас.
Исходный код: code.google.com/p/gag
Аннотация @AnimalsHarmedDuringTheMaking позволяет раскрыть факты о жестоком обращении с животными.
Для экологически сознательных разработчиков, эта аннотация указывает на выброс углекислого газа, к которому приводит выполнение кода. Измеряется в CO2Units.
Что если ваш код нелегален в некоторых штатах?
Бывает так, что вы не в лучшей форме. Может отвлечены чем-то. Тогда это для вас.
Эти аннотации полезны, чтобы показать, что вы не готовы к некоторым значения.
Хотите выключить метод? или целый класс? Зачем использовать // and /* */? Используйте Noop и всё! Больше метод не выполняется.
Хотите напомнить клиентам о вежливости? Добавьте @Roulette, и наблюдайте как метод выбрасывает исключения с заданной вероятностью
Комментарии в Javadocs — кто их читает? Аннотации намного моднее. Никто не сможет пройти мимо @OhSnap или WTF.
Добавьте во время code-review:
Нужна цитата? Используйте @ObligatoryQuote:
Жизнь коротка. Используйте Magic для сложного кода и двигайтесь дальше:
Хотите выразить недовольство Javа? Пожалуйста:
Исходный код: code.google.com/p/gag
Описание аннотаций
@AnimalsHarmedDuringTheMaking
Аннотация @AnimalsHarmedDuringTheMaking позволяет раскрыть факты о жестоком обращении с животными.
Copy Source | Copy HTML
- @AnimalsHarmedDuringTheMaking(
- number = 1,
- animal = "хомяк",
- disclosure = "не кормил Fermie 2 дня чтобы закончить вовремя")
- public class ConstantTimePrimalityTest {
@CarbonFootprint
Для экологически сознательных разработчиков, эта аннотация указывает на выброс углекислого газа, к которому приводит выполнение кода. Измеряется в CO2Units.
Copy Source | Copy HTML
- @CarbonFootprint(
- value = 6.28318531,
- units = GRAMS_PER_MEGAJOULE)
- public interface Holodeck {
@ProbablyIllegalIn
Что если ваш код нелегален в некоторых штатах?
Copy Source | Copy HTML
- @ProbablyIllegalIn(number = 17, region = STATES)
- public Money extractFractionalPennies(Account account);
@WrittenWhile
Бывает так, что вы не в лучшей форме. Может отвлечены чем-то. Тогда это для вас.
Copy Source | Copy HTML
- @WrittenWhile("surfing Chatroulette")
- public interface You {
- void spinRightRoundBabyRightRound(Me me);
- }
@ThisHadBetterBe and @ThisHadBetterNotBe
Эти аннотации полезны, чтобы показать, что вы не готовы к некоторым значения.
Copy Source | Copy HTML
- public void setBonusMultiplier(@ThisHadBetterNotBe(NEGATIVE) double multiplier) {
- this.multiplier = multiplier;
- }
-
- public void misappropriate(@ThisHadBetterBe(THE_STOLEN_DEATH_STAR_PLANS) DataTape tape) {
- r2.record(tape.play());
- ship.getEscapePod().insert(r2).jettison();
- }
Noop
Хотите выключить метод? или целый класс? Зачем использовать // and /* */? Используйте Noop и всё! Больше метод не выполняется.
Copy Source | Copy HTML
- public class FluxCapacitor {
-
- @Noop("посмотрим как долго пройдёт, прежде чем Emmett поймёт, что он больше не путешествует по времени")
- public void setDate(Date date) {
- this.date = date;
- }
-
- public void setSpeed(int speed) {
- this.speed = speed;
- }
-
@Roulette
Хотите напомнить клиентам о вежливости? Добавьте @Roulette, и наблюдайте как метод выбрасывает исключения с заданной вероятностью
Copy Source | Copy HTML
-
- @Roulette(
- probability = 0.005,
- exception = PayYourContractorException,
- message = "Courtesy reminder")
- public Service getRockSolidService() {
Литературные аннотации
Copy Source | Copy HTML
- @Alliteration
- Peck pickledPeppers = peterPiper.pick();
-
- @Haiku
- public void checkNodes() {
- if (tree.hasAnyLeafNodes()) {
- freshenLeavesOn(tree);
- }
- }
-
- @HapaxLegomenon
- public interface Honorificabilitudinitatibus {
- void achieve(Honour honour);
- }
-
- @Metaphor
- public interface Life extends Box<Chocolate> {
- }
-
- @Meter(TROCHAIC)
- public abstract double axisOffset();
-
- @Oxymoron
- public interface DisassemblerFactory {
- Disassembler createDisassembler();
- }
-
- @Palindrome
- Event e = gala.get(n, EVE);
-
- @Synecdoche
- Network fiber = NetworkFactory.createNetwork();
Заметки
Комментарии в Javadocs — кто их читает? Аннотации намного моднее. Никто не сможет пройти мимо @OhSnap или WTF.
Добавьте во время code-review:
Copy Source | Copy HTML
- @LOL @Facepalm
- @WTF("just use Collections.reverse()")
- @Booyah
- private static <T> void invertOrdering(List<T> list) {
- for (int i = 0; i < list.size() / 2; i++) {
- int j = list.size() - 1 - i;
- T item1 = list.get(i);
- T item2 = list.get(j);
- list.set(i, item2);
- list.set(j, item1);
- }
- }
Нужна цитата? Используйте @ObligatoryQuote:
Copy Source | Copy HTML
- @ObligatoryQuote(
- quote = "Remember, raptors run at 10 m/s and they do not know fear."
- source = Source.XKCD,
- citation = "http://xkcd.com/135/")
- public Route planRoute(FloorPlan floorPlan, Set<Velociraptor> raptors);
Жизнь коротка. Используйте Magic для сложного кода и двигайтесь дальше:
Copy Source | Copy HTML
- @Magic
- public static int negate(int n) {
- return new Byte((byte) 0xFF).hashCode()
- / (int) (short) '\uFFFF' * ~ 0
- * Character.digit ('0', 0) * n
- * (Integer.MAX_VALUE * 2 + 1)
- / (Byte.MIN_VALUE >> 7) * (~1 | 1);
- }
Хотите выразить недовольство Javа? Пожалуйста:
Copy Source | Copy HTML
- @ThisWouldBeOneLineIn(<br/> language = "haskell"<br/> toWit = "product [1..n]")
- public int factorial(int n) {
- int fac = 1;
- for (int i = 1; i <= n; i++) {
- fac *= i;
- }
- return fac;
- }