1. C# / Говнокод #11388

    +129

    1. 1
    return GetByteArray((Object)obj);

    На всякий случай.

    Запостил: Em1ss1oN, 10 Июля 2012

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

    • Если там два метода, и у одного сигнатуре object, а у второго такая же как и у obj обьекта, то такой каст нужен чтобы вызвать принудительно первый метод, вместо второго
      Ответить
      • Тогда переходящее знамя говнокода от этого места переходит к тому, где эти два метода написаны.
        Ответить
      • Мой косяк, надо было класс целиком выкладывать, перегрузок метода GetByteArray() нет. Но даже если так, подобное преобразование приведет только к лишнему boxing/unboxing в случае верной семантики перегруженных методов. В обратном случае эти методы уже были бы здесь.
        Ответить
        • О каком boxing речь, если про ValueType ни слова не было?
          Ответить
          • Логично предположить, что передаваться как входной параметр может что угодно, включая Value-типы.
            Ответить
    • У меня есть такое для Дельфи, шаблоны лень мутить (неудобно), поэтому пакую в стринги.
      Ответить
      • тут не шаблоны, а перегрузка функций
        Ответить
      • А в делфи есть шаблоны?

        UPD: О_о http://www.codenet.ru/progr/delphi/stat/templates.php
        Ответить
        • http://govnokod.ru/7095
          Ответить
          • И эта помойка в виде LESS и T видна ниже по коду...
            Такие "шаблоны" и на С можно запилить.
            Ответить
            • Нет, если эту помойку использовать лишь локально в пределах одной функции.
              Нет, сишка не может локальные функции.
              Ответить
              • Инстанциировать шаблон только в пределах функции... ну чтож, вариант. Но очень ограниченный. В таком случае такие шаблоны можно применить только для алгоритмов, но не для тех же контейнерных классов.
                Ответить
                • Для классов тоже можно. Но желательно уже запихивать каждую реализацию в свой текстовый файл.
                  Ответить
                  • Ну неудобно все равно. Каждую инстанциацию шаблона приходится делать явно, да еще и в отдельном файле.
                    Ответить
                    • Ну что делать...
                      А как можно инстанциировать шаблонные типы неявно?
                      Ответить
                      • Ну например воспользоваться им в другом шаблоне...
                        Ответить
                        • А, тогда никак, да
                          Ответить
                          • Delphi can not into сериализацию? А Ада аналогично?
                            Ответить
                            • Хз, всегда сериализовывал вручную. Наверняка средства есть.
                              Ответить
                              • >всегда сериализовывал вручную
                                Такой язык нам - не нужен.
                                Ответить
                              • А что там в дельфе и аде с метапрограммированием?
                                Ответить
                                • Про шаблоны в Дельфи-7 тут написано всё. В более новых версиях получше.

                                  Про шаблоны в Аде... Ну так труп страуса стырил эту идею в кресты именно оттуда.
                                  Ответить
                                  • метапрограммирование != шаблоны

                                    метапрграммирование - выполнение программ во время компиляции

                                    шаблоны крестов это могут, а дельфи и ада - нет

                                    поэтому нет будущего у этих двух псевдоязыков в новом светлом мире программирования будущего
                                    Ответить
                                    • > метапрграммирование -
                                      > выполнение программ во время
                                      > компиляции
                                      > шаблоны крестов это могут

                                      Могут, но только в рамках троллинга.
                                      Ответить
                                      • >Могут, но только в рамках троллинга.

                                        Я не про метатроллолирование говорил.
                                        Ответить
                                    • >метапрграммирование - выполнение программ во время компиляции

                                      Пиши ещё!
                                      Ответить
                                      • >метапрграммирование
                                        >прграммирование
                                        А чего ты еще ждал от адепта Вонни?
                                        Ответить
                                      • >Пиши ещё!
                                        метапрагмаммирование - выполнение программ во время препроцессинга
                                        Ответить
    • ОП, а почему метод называется "GetByteArray"?
      Чего он вообще должен делать?
      Ответить
      • логично предположить, что возвращает он byte[]. Типа какой-нибудь сериализации.
        Ответить
        • Именно так.
          Ответить
        • Я к тому, что и метод должен говорить, что он что-то делает (а хотя бы и сериализует), а не что он возвращает какой-то системный тип. Уж лучше GetFullName, чем GetUtf8String.
          И что пусть тогда будут два метода SpecialSerialize(SpecialType value) и DefaultSerialize(object value). Раз обобщенный метод не может иногда выполнить те же действия, что и частный, то это не перегрузка метода, а два разных.
          Ответить
          • Заплюсовал бы насмерть. Отлично сказано.
            Ответить

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