Pull to refresh

Google Annotations Gallery

Reading time4 min
Views1.7K
The Google Annotations Gallery — новая open-source библиотека, которая предоставляет широкие возможности программистам для самовыражения. Вы не находите, что стандартные Java аннотации суховаты и безжизненны? Вам не хотелось поставить аннотацию LOL или Facepalm (?) Тогда, эта галерея для вас.

Исходный код: code.google.com/p/gag

Описание аннотаций


@AnimalsHarmedDuringTheMaking

Аннотация @AnimalsHarmedDuringTheMaking позволяет раскрыть факты о жестоком обращении с животными.
Copy Source | Copy HTML
  1. @AnimalsHarmedDuringTheMaking(
  2.     number = 1,
  3.     animal = "хомяк",
  4.     disclosure = "не кормил Fermie 2 дня чтобы закончить вовремя")
  5. public class ConstantTimePrimalityTest {


@CarbonFootprint

Для экологически сознательных разработчиков, эта аннотация указывает на выброс углекислого газа, к которому приводит выполнение кода. Измеряется в CO2Units.
Copy Source | Copy HTML
  1. @CarbonFootprint(
  2.     value = 6.28318531,
  3.     units = GRAMS_PER_MEGAJOULE)
  4. public interface Holodeck {

@ProbablyIllegalIn

Что если ваш код нелегален в некоторых штатах?
Copy Source | Copy HTML
  1. @ProbablyIllegalIn(number = 17, region = STATES)
  2. public Money extractFractionalPennies(Account account);


@WrittenWhile

Бывает так, что вы не в лучшей форме. Может отвлечены чем-то. Тогда это для вас.
Copy Source | Copy HTML
  1. @WrittenWhile("surfing Chatroulette")
  2. public interface You {
  3.   void spinRightRoundBabyRightRound(Me me);
  4. }

@ThisHadBetterBe and @ThisHadBetterNotBe

Эти аннотации полезны, чтобы показать, что вы не готовы к некоторым значения.
Copy Source | Copy HTML
  1. public void setBonusMultiplier(@ThisHadBetterNotBe(NEGATIVE) double multiplier) {
  2.   this.multiplier = multiplier;
  3. }
  4.  
  5. public void misappropriate(@ThisHadBetterBe(THE_STOLEN_DEATH_STAR_PLANS) DataTape tape) {
  6.   r2.record(tape.play());
  7.   ship.getEscapePod().insert(r2).jettison();
  8. }

Noop

Хотите выключить метод? или целый класс? Зачем использовать // and /* */? Используйте Noop и всё! Больше метод не выполняется.
Copy Source | Copy HTML
  1. public class FluxCapacitor {
  2.  
  3.   @Noop("посмотрим как долго пройдёт, прежде чем Emmett поймёт, что он больше не путешествует по времени")
  4.   public void setDate(Date date) {
  5.     this.date = date;
  6.   }
  7.  
  8.   public void setSpeed(int speed) {
  9.     this.speed = speed;
  10.   }
  11.  

@Roulette

Хотите напомнить клиентам о вежливости? Добавьте @Roulette, и наблюдайте как метод выбрасывает исключения с заданной вероятностью
Copy Source | Copy HTML
  1.  
  2. @Roulette(
  3.     probability =  0.005,
  4.     exception = PayYourContractorException,
  5.     message = "Courtesy reminder")
  6. public Service getRockSolidService() {


Литературные аннотации


Copy Source | Copy HTML
  1. @Alliteration
  2. Peck pickledPeppers = peterPiper.pick();
  3.  
  4. @Haiku
  5. public void checkNodes() {
  6.   if (tree.hasAnyLeafNodes()) {
  7.     freshenLeavesOn(tree);
  8.   }
  9. }
  10.  
  11. @HapaxLegomenon
  12. public interface Honorificabilitudinitatibus {
  13.   void achieve(Honour honour);
  14. }
  15.  
  16. @Metaphor
  17. public interface Life extends Box<Chocolate> {
  18. }
  19.  
  20. @Meter(TROCHAIC)
  21. public abstract double axisOffset();
  22.  
  23. @Oxymoron
  24. public interface DisassemblerFactory {
  25.   Disassembler createDisassembler();
  26. }
  27.  
  28. @Palindrome
  29. Event e = gala.get(n, EVE);
  30.  
  31. @Synecdoche
  32. Network fiber = NetworkFactory.createNetwork();

Заметки


Комментарии в Javadocs — кто их читает? Аннотации намного моднее. Никто не сможет пройти мимо @OhSnap или WTF.
Добавьте во время code-review:
Copy Source | Copy HTML
  1. @LOL @Facepalm
  2. @WTF("just use Collections.reverse()")
  3. @Booyah
  4. private static <T> void invertOrdering(List<T> list) {
  5.   for (int i = 0; i < list.size() / 2; i++) {
  6.     int j = list.size() - 1 - i;
  7.     T item1 = list.get(i);
  8.     T item2 = list.get(j);
  9.     list.set(i, item2);
  10.     list.set(j, item1);
  11.   }
  12. }

Нужна цитата? Используйте @ObligatoryQuote:
Copy Source | Copy HTML
  1. @ObligatoryQuote(
  2.     quote = "Remember, raptors run at 10 m/s and they do not know fear."
  3.     source = Source.XKCD,
  4.     citation = "http://xkcd.com/135/")
  5. public Route planRoute(FloorPlan floorPlan, Set<Velociraptor> raptors);

Жизнь коротка. Используйте Magic для сложного кода и двигайтесь дальше:
Copy Source | Copy HTML
  1. @Magic
  2. public static int negate(int n) {
  3.   return new Byte((byte) 0xFF).hashCode()
  4.       / (int) (short) '\uFFFF' * ~ 0
  5.       * Character.digit ('0', 0) * n
  6.       * (Integer.MAX_VALUE * 2 + 1)
  7.       / (Byte.MIN_VALUE >> 7) * (~1 | 1);
  8. }

Хотите выразить недовольство Javа? Пожалуйста:
Copy Source | Copy HTML
  1. @ThisWouldBeOneLineIn(<br/>    language = "haskell"<br/>    toWit = "product [1..n]")
  2. public int factorial(int n) {
  3.   int fac = 1;
  4.   for (int i = 1; i <= n; i++) {
  5.     fac *= i;
  6.   }
  7.   return fac;
  8. }
Tags:
Hubs:
+64
Comments6

Articles

Change theme settings