Куча говна / Говнокод #28533 Ссылка на оригинал

0

  1. 1
Самый дешевый авиабилет Владивосток Ростов-на-Дону найден 2765 недель назад. Его стоимость в одну сторону с багажом , вылетает 01 января 1970

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

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

  • В NaN раз программисты обосрались, лол. Заджойнились внешним объединением, и получили NULL что ли?
    Ответить
  • Есть сокращенный синтаксис строковых литералов:
    @PHP
    Ставь лайк, если не знал.
    Ответить
    • >собачка
      >стороковых литералов
      ты про ObjC?
      Ответить
        • я дума, можно просто литерал без ковычек писать, но это варнинг, а варнинг ты задушил собачкой

          В древности в скриптоговне строки без кавычек писали
          так еще с шела повелось
          Ответить
          • Довайте вспомнем какие в каких языках есть собачки

            Ruby: проперти
            Perl: сигил массива
            ObjC: литералы для NSArray и NSString (видимо, чтобы не путать с сишкой)
            DOS/Command/cmd: заткнуть эхо строки
            T-SQL: параметр хранимки
            XQuery/XSLT: указание проперти в запросе

            Еще варианты?
            Ответить
            • CSS понятное дело: директивы типа @include, и всякие препроцессоры типа sass и scss с его "@mixin "
              Ответить
                  • ХУЕКСИНЫ!

                    Перед НГ встретил в магазине коллегу с прошлой работы, который зафорсил хуексины. Думаешь нужно было втащить?
                    Ответить
                    • Ну если речь шла о пхп, то стопудово.
                      Ответить
                      • в руби миксины это очень хорошо, потому что там открытие классы, и можно налету насрать в любой класс

                        require 'date'
                        require 'json'
                        module Serializer
                          def serialize
                            JSON.dump self
                          end
                        end
                        
                        class User
                          def initialize
                            super
                            @name = 'foo'
                            @created = DateTime.now
                          end
                        
                          def to_s
                            "I am #{@name}, created at #{@created}"
                          end
                        end
                        
                        user = User.new
                        
                        # А теперь я хочу расширить класс
                        class User
                          include Serializer
                        end
                        
                        puts user.serialize


                        или так
                        module Truth
                          def tell_me_the_truth
                            "В #{self} руби круче пыхоговна"
                          end
                        end
                        class Integer
                          include Truth
                        end
                        
                        puts 12.tell_me_the_truth
                        Ответить
                          • Чего плохого то?

                            Кстати, а зачем в пыхосмегме хуексины?
                            Ответить
                            • Понятия не ебу. Как и в любом другом ЯП.
                              Ответить
                                • Пример чего? Как хуексины нахуй мне не всрались?
                                  Ответить
                                  • Я привел прмиер того, как миксины с пользо для дела можно использовать в Яибу

                                    Поскольку ты их ненавидишь, я предполагаю, что в пхп с ними традиционно обосрались (трудно сказать, с чем в пхп не обосрались) и сделали какое-то ненужное говно
                                    Ответить
                                    • Это был жс. Там было такое
                                      1) Набор каких-то утилитарных классов, которые использовались для тестов. Это как функция foo() из funkcii.php, только FunkciiHuesksin.foo()
                                      2) Представь у тебя на сайте есть кнопки. Кнопка - это класс Button. Все кнопки на сайте обычно в одном стиле. А значит есть один экземпляр класса Button. Так вот этот экземпляр назывался «хуексином». А ссылка на такую кнопку (в меню, например) называлась «проксином». Там был HuesksinsController и даже HuesksinsController2 )))

                                      Как тебе терминология?
                                      Ответить
                                      • ))лол. Откуда он воодще это слово подрезал?

                                        а что такое проксин?

                                        Proxin is used to treat bacterial infections in many different parts of the body. Proxin oral liquid and tablets are also used to treat anthrax infection afte
                                        Ответить
                                    • В PHP с версии 5.5 появились трейты — набор реализаций методов, который можно примешивать к любому новому классу.
                                      Ответить
                                      • а чем они отличаются от обычных классов с множественным наследованием?

                                        В растишке доречи трейты это множество методов класса (протоколы або интерфейсы как их еще называют)

                                        Причем их можно выражать и статически через обобщенное программирование(тогда будет как концепты в C++ видимо) а можно динамически (и будут обычные интерфесы с виртуальными методами)

                                        Возможность выражать статически -- охуенна, потому что до C++20 такое делалось в крестах тока шаблонами, и потом можно было ловить лулзовые ошибки, ну а подключать виртуализацию заради нихуя никто не хотел
                                        Ответить
                                          • я так и не понял, чем они лучше множественного наследования

                                            В яибу миксины я могу примешивать к существующим классам

                                            А если я заранее знаю, что я наследую Liquid и реализую ContainsMole (ну я кротовоха же) то почему сразу не занаследоваться от двух?
                                            Ответить
                                          • Экстеншен методы не виртуальны, и потому зависят от статического типа переменной, а протокольные методы виртуальны и диспатчаца в рантайме.
                                            Такой же курштюн можно и в Котлине изобразить

                                            https://pl.kotl.in/8-Z1Ze18T?theme=darcula

                                            interface SampleProtocol {
                                                fun foo()
                                            }
                                            
                                            fun SampleProtocol.foo() {
                                                println("protocol foo")
                                            }
                                            
                                            fun SampleProtocol.bar() {
                                                println("protocol bar")
                                            }
                                            
                                            class SampleClass : SampleProtocol {
                                                override fun foo() {
                                                    println("class foo")
                                                }
                                            
                                                fun bar() {
                                                    println("class bar")
                                                }
                                            }
                                            
                                            fun main() {
                                                val sample: SampleProtocol = SampleClass()
                                                sample.foo() // prints "class foo"
                                                sample.bar() // prints "protocol bar"
                                            }


                                            Поскольку в C++ и C# метод не обязан быть виртуальным, можно сделать багор и без экстеншенов типа
                                            class Parent
                                                {
                                                    public void Bar()
                                                    {
                                                        Console.WriteLine("I am Parent.Bar");
                                                    }
                                            
                                                    public virtual void Spam()
                                                    {
                                                        Console.WriteLine("I am Parent.Spam");
                                                    }
                                                }
                                            
                                                class Child : Parent
                                                {
                                                    public new void Bar()
                                                    {
                                                        Console.WriteLine("I am Child.Bar");
                                                    }
                                            
                                                    public override void Spam()
                                                    {
                                                        Console.WriteLine("I am Child.Spam");
                                                    }
                                                }
                                            
                                                class Program
                                                {
                                                    static void Main(string[] args)
                                                    {
                                                        Parent child = new Child();
                                                        child.Spam(); //Child.Spam
                                                        child.Bar(); //Parent.Bar
                                                    }
                                                }



                                            Но я в целом согласен с посылом статьи: делать методы с реализацией, которую ты потом переопределяешь это сильно усложнять код

                                            Слава яхве, в коко хотя бы методы по умолчанию закрыты
                                            Ответить
                        • Вообще сама идея того, что все методы над данными нужно сразу вместе с данными описать попахивает катяхами; ООП говно.
                          Ответить
                          • да, это язык Яибу

                            Лучший скриптовый язык тысячилетия
                            Ответить
            • «Python» — декораторы;
              «Java», «Kotlin», «Scala», «Dart» — аннотации;
              «Swift» — атрибуты.
              Ответить
              • точно, груви тоже аннотации (причем там они трансформируют AST нехило создавая датаклассы и пр)
                Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8