1. Java / Говнокод #16893

    +117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    @Nullable
    public static BigDecimal getWidth(final ITagSpecification spec, final TagSize size) {
    	switch (size) {
    	case S:
    		return spec.getSmallWidth();
    	case M:
    		return spec.getMediumWidth();
    	case L:
    		return spec.getLargeWidth();
    	default:
    		throw new AssertionError();
    	}
    }
    
    @Nullable
    public static BigDecimal getHeight(final ITagSpecification spec, final TagSize size) {
    	switch (size) {
    	case S:
    		return spec.getSmallHeight();
    	case M:
    		return spec.getMediumHeight();
    	case L:
    		return spec.getLargeHeight();
    	default:
    		throw new AssertionError();
    	}
    }
    
    public static BigDecimal getDiameter(final ITagSpecification spec, final TagSize size) {
    	switch (size) {
    	case S:
    		return spec.getSmallDiameter();
    	case M:
    		return spec.getMediumDiameter();
    	case L:
    		return spec.getLargeDiameter();
    	default:
    		throw new AssertionError();
    	}
    }
    
    @Nullable
    public static BigDecimal getWeight(final ITagSpecification spec, final TagSize size) {
    	switch (size) {
    	case S:
    		return spec.getSmallWeight();
    	case M:
    		return spec.getMediumWeight();
    	case L:
    		return spec.getLargeWeight();
    	default:
    		throw new AssertionError();
    	}
    }

    Бойлерплейт - он такой. А можно ли с JPA это как-то изящнее сделать? Дело в том, что {small|medium|large}{Width|Height|Diamet er|Weight} - это двенадцать столбцов таблицы в БД. Пока единственное, что приходит на ум - это сделать три одинаковых @Embedded'а на каждый размер.

    Запостил: someone, 19 Октября 2014

    Комментарии (6) RSS

    • А spec не может быть просто двухмерным массивом?
      Ответить
    • TagSize енумом пахнет.
      >ITagSpecification
      Если тут по три метода захардкожено, то сушите весла, только рефлексия.
      Должно либо три инстанса быть ITagSpecification, либо в каждом методе параметр TagSize.
      Ответить
    • показать все, что скрытоhttp://muzofon.com/search/троллинг
      Знаете, кто такой этот конардо?
      http://www.wikireality.ru/wiki/%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9_%D0%92%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B2
      Ответить
    • > как-то изящнее сделать
      > двенадцать столбцов таблицы в БД
      Добавить колонку size (со значениями 'L', 'M' или 'S') и разбить запись на 3 отдельных?
      Ответить
    • или три сущности с переопределением имени столбцов
      Ответить

    Добавить комментарий