Jawa / Говнокод #26597 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
public class FloatDynamicArray implements DynamicArray {

	private int arrayLength;
	private int countOfValues;
	
	private float[] dataArray;
	
	
	public FloatDynamicArray(int arrayLength) {
		this.arrayLength = arrayLength;
		
		dataArray = new float[arrayLength];
	}
	
	
	public long getLongValue(int index) {
		throw new IllegalAccessError("Cannot get long value from FloatDynamicArray !");
	}

	public float getFloatValue(int index) {
		return dataArray[index];
	}
...
...
...

зачем делать отдельный метод getLongValue, который возбуждает исключение IllegalAccessError, когда мы заведомо знаем что это FloatDynamicArray, содержащий float[] значения ?

Запостил: akm88 akm88, (Updated )

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

  • потому что надо было делать два разных интерфейса, а сделали зачем-то один. В итоге часть его методов не имеет смысла для части реализаций

    Прицнип мухи подстановки Барбары Лисков как раз про это
    Ответить
    • И вообще сколько уже можно писать либы для массивов из примитивов... Какого хуя их до сих пор в стандартную либу то не внесли.
      Ответить
        • в коко так и сказали, кстати. Там ты никода не знаеш врапер у тебя, или примитив
          Ответить
          • В общем-то оно и правильно. Какая в жопу разница, значение это или ссылка на иммутабельный объект. Лишь бы в массивах да структурах плотно лежали, без всяких ссылок.
            Ответить
            • Это правда. Погромисту не надо знать тонкости.

              arrayOf<Int>()
              listOf<Int>()

              какая в жопу разница?
              Правда, потом можно соснуть вызвав toList() у эррея, но сосут обычно в другом месте
              Ответить
      • Ввиду отсутствия нормальных обобщенных программистов, йажа вынуждена сосат6

        В нормальных языках (C#, C++) можно сделать лист от примитива, а в джаве нельзя, вот и вынуждены плодить такие обертки вокруг массивов
        Ответить
        • Дык почему все эти IntArrayList не добавить в стандартную либу? А то уже написано 100500 реализаций этого говна и ещё пишут.
          Ответить
          • не знаю.. может, в guava или apache commons есть готовые решения?
            Ответить
            • Есть конечно. Причём скорее всего у каждого свои, лол. У апачей я точно видел.
              Ответить
              • пурменс паттернм матчинг
                у коко есть такое: запечатанные классы называ
                Ответить
              • Так и сейчас можно не стирать тип сделав анонимный класс.
                Там больше о енумах речь.

                new Koko<Type>(){}; //тип доступен в рантайме
                Ответить
    • Так и есть...
      Только, наверное, Принцип разделения интерфейса, а не Барбары ?
      Ответить
      • LSP всё равно нарушается. Дети плохо себя ведут, и их приходится ставить в угол.
        Ответить
  • Это дерьмо в принципе не надо.
    Ни в стандартной либе, ни где либо ещё.

    Или женерики полноценные пусть сделают (малореальный вариант), или zero-cost структуры для упаковки произвольных примитивов.
    Ответить
  • Зачем dynamicarray, когда есть list?
    Ответить
  • Именно поэтому я за node.js , вы блять ещё хттп клиент каждый раз с нуля пишите... Жабомрази
    Ответить
    • да нет, в жабе уже есть хттп клиент, и есть сторонние решения тоже, которые легко поставить через гредл.
      Ответить
  • Обосру прыщи. Интересует мнение Борманда и Госта.
    Я хочу поменять write policy для своего диска: кеш, райт сру, вот это всё.
    Винда: https://support.microsoft.com/en-us/help/324805/how-to-manually-turn-disk-write-caching-on-or-off
    BSD: https://man.openbsd.org/atactl.8#writecachedisable
    Как сделать в прыщах?
    Может, https://linux.die.net/man/8/hdparm ? Там нету.
    Давайте узнаем, что за драйвер: ls -lh /sys/class/block/sda/driver
    Ок, мой драйвер называется sd
    В БЗД по man [драйвер] можно получить все опции, но в прыщах man sd нету.
    Может, modinfo sd? нет, там тоже нету.
    Может, в документации?
    /usr/src/linux/Documentation/scsi/sd-parameters.txt
    Алилуя, мне нужен "cache_type", но где его взять?
    Ищем cache_type в /sys/class/block/sda, нашли:
    /sys/class/block/sda/device/scsi_disk/[хуе-мое]/cache_type

    Что такое scsi_disk? Что значат остальные параметры там?
    grep scsi_disk /usr/src/linux/Documentation/scsi/*.txt
    Нашелся hpsa, но у меня не hp!

    Как же узнать?
    Ищем scsi_disk в /usr/src/linux/drivers/scsi/sd.c
    Нашли структуру с :
    name = "scsi_disk" и атрибутом ATTRIBUTE_GROUPS.
    Что такое ATTRIBUTE_GROUPS?
    Ищем в доке: https://www.kernel.org/doc/html/v4.18/search.html?q=ATTRIBUTE_GROUPS
    Нашлось куча всего, но всё не то.
    Кажется что нужно вникать в API драйверов, чтобы что-то понять.

    Прыщи как были недокументированным говном, так и остались. ПИЗДЕЦ
    Ответить
    • Какой багор )))

      Это всё, конечно, хорошо, но вот когда я давеча пытался на венде пытался отключить своп, венда меня тихонечко послала нахуй. Ну то есть я захожу в настройки файла подкачки (как всегда, по очень интуитивному пути: Этот Компьютер -> Свойства -> Дополнительные параметры системы -> Параметры (Быстродействие) -> Дополнительно -> Изменить (Виртуальная память)), убираю весь своп, нажимаю «OK» — и не происходит ровным счётом нихуя.
      Пришлось пердолиться с «gwmi win32_pagefilesetting».
      Ответить
    • Кстати, а «hdparm -W 0 /dev/sda» — это не то, что тебе нужно? Которое «Get/set the IDE/SATA drive's write-caching feature».
      Ответить

Добавить комментарий для guest Отменить ответ

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8