Си диез / Говнокод #28850 Ссылка на оригинал

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
public readonly struct Int64 : IComparable<long>, IConvertible, 
IEquatable<long>, IParsable<long>, ISpanParsable<long>, 
System.Numerics.IAdditionOperators<long,long,long>, 
System.Numerics.IAdditiveIdentity<long,long>, 
System.Numerics.IBinaryInteger<long>, System.Numerics.IBinaryNumber<long>, 
System.Numerics.IBitwiseOperators<long,long,long>, 
System.Numerics.IComparisonOperators<long,long,bool>, 
System.Numerics.IDecrementOperators<long>, 
System.Numerics.IDivisionOperators<long,long,long>, 
System.Numerics.IEqualityOperators<long,long,bool>, 
System.Numerics.IIncrementOperators<long>, 
System.Numerics.IMinMaxValue<long>, 
System.Numerics.IModulusOperators<long,long,long>, 
System.Numerics.IMultiplicativeIdentity<long,long>, 
System.Numerics.IMultiplyOperators<long,long,long>, 
System.Numerics.INumber<long>, System.Numerics.INumberBase<long>, 
System.Numerics.IShiftOperators<long,int,long>, 
System.Numerics.ISignedNumber<long>, 
System.Numerics.ISubtractionOperators<long,long,long>, 
System.Numerics.IUnaryNegationOperators<long,long>, 
System.Numerics.IUnaryPlusOperators<long,long>

https://learn.microsoft.com/en-us/dotnet/api/system.int64?view=net-7.0

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

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

  • В языках с «тайпклассами» такой проблемы нет и быть не может. Она возникает только в злоебучих «ООП»-говнах, визжащих на каждой остановке о DRY, KISS, YAGNI и SOLID.
    Ответить
  • Сказал гость из языка с ТривиалиКопблами, лол
    Ответить
    • Вот как раз ТривиалиКопблами — это пример сносной реализации: хуже, чем тайпклассы, но на порядок лучше, чем наследование миллиарда ебучих интерфейсов. В отличие от уебизма в посте, все ТривиалиКопблы — это независимые от типа сущности: мне не нужно вносить в тип знания о том, насколько он тривиалекопибален. Аналогично — со всякими std::less<T>: умения сравнивать два T можно вынести в отдельный объект, а не запихивать их хуй знает зачем в сам тип (но IComparer, справедливости ради, и в дотнетах, и в джаве есть).
      Ответить
      • Ну ок, а структурная типизация типа тайпскрипта бы тебя устроила?

        Там не нужно явно реализовывать хуиту: просто в компайл-тайме проверяется, что у тебя есть нужные ручки
        Ответить
        • Нет, это всё ещё хуйня. Что мне делать, чтобы научить сериализовать объект в «JSON»? А потом ещё в «XML», «protobuf» и «ORM». Приделывать в каждый GovnoDTO по ручке для «JSON», по ручке для «XML», по ручке для Аллаха, да смилуется Он над нами?

          В человеческих языках для этого существуют «тайпклассы»; в остальных для этого городят велосипеды типа «class GovnoConverter : JsonConverter<Govno> { public override Json Serialize(Govno govno, JsonContext context) }».

          А в «PHP» делают так:
          class ArrayValue implements JsonSerializable {
              private $array;
              public function __construct(array $array) {
                  $this->array = $array;
              }
          
              public function jsonSerialize() {
                  return $this->array;
              }
          }
          Ответить
          • Нет, это гомосятина, конечно.

            Такую хуйню нужно описывать снаружи.

            Теперь я тебя понял: в плюсах так действительно можно делать. Причем в отличии от, например, рустни, я могу это делать где угодно.
            Ответить
            • Справедливости ради, в большинстве языков так можно делать. Другое дело, что без нормальной поддержки языком это дико неудобно и вербозно, а в случае питушарских ЙАЖ с СИСЯРПАМИ так вообще возникает крупный оверхед на аллокацию мелких говноконвертеров, мумулирующих тайпклассы.

              Вот у рустни трейты сделаны почти как надо, но orphan rule (сделанный для удобства заедушных анскиллябр) всё портит.
              Ответить
              • В скриптогавне можно сделать забесплатно. Точнее задорого, но в нём всё дорого, так что забесплоатно.

                В Руби вполне могут делать так, и течь
                # 
                # clubhouse_client.rb
                def send(clubhouse_compatible)
                  puts clubhouse_compatible.as_clubhouse
                end
                
                # support_clubhouse_for_numbers
                class Integer
                  def as_clubhouse
                    self + 1
                  end
                end
                
                # main.rb
                send 42


                >orphan rule
                Отвратительный багор, да.

                С другой стороны, не бывает багров типа "я подключил крейт и всё стало ИНАЧЕ работать"
                А в плюсах вполне может быть "я подключил хедер, и всё стало работать"
                Ответить
                • import std.stdio;
                  
                  void SendToClubHouse(T)(T value) {
                      static if (is(T : int)) {
                          writeln(value + 1);
                      }
                  }


                  это не эквивалент, зато нет мусорных методов в контракте типа
                  Ответить
                  • import std.stdio;
                    
                    int AsClubHouse(int value) {
                        return value + 2;
                    }
                    
                    void SendToClubHouse(T)(T value) {
                        static if (is(T : int)) {
                            writeln(value.AsClubHouse);
                        }
                    }


                    перепесал на чистаю любов
                    Ответить
                        • Будет небольшим преувеличением сказать, что я знаю "D"
                          Ответить
                      • чтобы скриптушню превратить в метушню

                        import std.stdio;
                        
                        T AsClubHouse(T)(T value) {
                            static if (__traits(compiles, value + 2)) {
                                return value + 2;
                            } else {
                                return value; // не знаю, как идиоматично
                            }
                        }
                        
                        void SendToClubHouse(T)(T value) {
                            static if (__traits(compiles, mixin("value.AsClubHouse"))) {
                                writeln(value.AsClubHouse);
                            }
                        }


                        увы, для UFCS нет подходящего трейта, приходится миксином
                        Ответить
                        • ВНЕЗАПНО работает для любого типа с определённым оператором сложения
                          Ответить
          • Всё, гост, я понял твою мысль


            Когда завтра я решу сделать поддержку Клабхауза, я просто добавлю в класс Int64 реализацию интерфейса `IClubHouseCompatible`, да?
            Ну и в остальные 234 класса -- тоже
            Ответить
              • А вообще в самом сердце ООП (ну, симулообразного ООП) заложена мысль о том, что описывая структуру данных, ты сразу же описываешь все методы работы с ней.

                Это далеко не всегда правда.

                Ну вот тут это обсёр
                Ответить
  • Добрый день!

    Как Вы я думаю уже в курсе, материалы в социальных сетях индексируются в поиске гораздо лучше чем простые сайты!
    С учетом этого я придумал новое актуальное предложение, которое я собираюсь Вам представить. Предложение направлено на повышение позиций Вашего сайта и вывода в поиске Гугла и Яндекса опубликованных в социальных сетях тематических страниц под ключевые запросы Вашего сайта GOVNOKOD

    В рамках услуги, я регистрирую 150 wiki страниц, 150 тег-страниц в блогах и 700 ссылок, повышающих общий вес опубликованных страниц!
    Другими словами, Вы получите вес 1 тысячи ссылок и дополнительные страницы в поисковых системах за разовую сумму в 3500 руб. Вся работа выполняется под ключ, я собираю ключевые запросы, текстовую информацию, картинки для оформления и перед постингом показываю Вам подготовленные материалы, по необходимости корректируя! Расчет происходит после размещения и отчета!

    Отпишите мне и я вышлю примеры размещенных сайтов и примеры непосредственно услуги!
    Ответить
  • можно пример декларации Int64 из языков с тайпклассами?
    Ответить

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

Помни, guest, за тобой могут следить!

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


    8