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

    +137

    1. 1
    2. 2
    private static OfficerResponse ToPerson<TField, TTitle>(IEnumerable<TField> fields, IEnumerable<TTitle> titles, Func<TField, string> getName, Func<TField, string> getValue, Func<TTitle, string> getTitle, bool active, TextType1 bio, YMDType birth, ContactInformationType contactInformation, string tickers, DegreeType1[] educationHistory, CertificateType[] certifications, PositionInformationType positionInformation, AffilationType[] corporateAffiliations, string officerId, OfficerDirectorType info,string repNo)
    {...}

    нашел вот...

    Запостил: fade, 08 Августа 2013

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

    • Автор ниасилил struct?
      Ответить
      • Автор даже разбить код на строки не осилил

        Мать моя, это все сигнатура....
        Ответить
        • сигнатура, сигнатура :)
          Ответить
          • И что этот монстрометод делает?
            Ответить
            • маппит филды одной энтити на филды другой. с небольшими вычислениями и зачем-то походами в бэкенд. две сотни строк спагетти
              Ответить
              • спагетти в студию! я требую продолжения банкета)
                Ответить
        • Может автоматический рефакторинг? Решарпер образца 2009го года при неудачном извлечении функции такие же чудеса генерил.
          Ответить
          • нет, это не решарпер. дёргается эта хрень вот так:
            result.AddRange(from info in backendResponse.Officers.OfficersInformation
                            where request.IncludeInactiveOfficers || info.Status != OfficerDirectorTypeStatus.Inactive
                            select ToPerson(info.PersonInformation.Name.Info, info.PositionInformation.Titles,
                                item => item.Type, item => item.Value, title => title.LongTitle, info.Active
                                , info.BiographicalInformation.Text, info.PersonInformation.Name.Birth
                                , info.ContactInformation, request.Tickers, info.PersonInformation.EducationHistory
                                , info.PersonInformation.Certifications, info.PositionInformation
                                , info.CorporateAffiliations, info.ID, info, backendResponse.Officers.RepNo));
            Ответить
            • Хм. Так ничего не мешало выдрать в функцию выражение из select'а
              Ответить
            • http://static.diary.ru/userdir/2/1/1/0/2110825/74738320.jpg
              Ответить
            • linq во всей красе
              Ответить
              • тут не линк, тут архитектор во всей красе
                Ответить
                • А как надо правильно?
                  Ответить
                  • зависит от тонкостей задачи. Самое очевидное - передавать не такое бешенное количество аргументов, а заполненную структуру.

                    Предаются в основном поля Info. Проще было передать info и сокрыть всю эту мерзость.
                    Ответить
                  • Слишком большое кол-во аргументов. Если книгу Стива МакКонела читали, то там куча объяснений о том, почему так лучше не делать и почему такое решение называется низкокачественным.
                    Ответить
      • Причем тут struct?
        Ответить
    • Стива МакКонела на него нет!
      Ответить

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