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

    0

    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
    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, 23 Апреля 2020

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

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

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

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

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

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

              https://openjdk.java.net/jeps/169

              Кстати, вот ещё забавное говнецо обнаружил:

              https://openjdk.java.net/jeps/359
              Ответить
              • вот еще держи

                https://openjdk.java.net/jeps/301

                стирать тип \ не стирать тип \ стирать но не полностью
                Ответить
                • пурменс паттернм матчинг
                  у коко есть такое: запечатанные классы называ
                  Ответить
                • Так и сейчас можно не стирать тип сделав анонимный класс.
                  Там больше о енумах речь.

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

      Или женерики полноценные пусть сделают (малореальный вариант), или zero-cost структуры для упаковки произвольных примитивов.
      Ответить
    • Зачем dynamicarray, когда есть list?
      Ответить
    • кууик
      https://developer.gnome.org/libbonobo/
      Ответить
    • Именно поэтому я за 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».
        Ответить

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