Контакт с объектами бога

Пожалуйста, попробуйте этот код:

func OverdueList(){


    let preferences = UserDefaults.standard
    let uid = "u_id"
    let acTkn = "acc_tkn"

    let u_ID = preferences.object(forKey: uid)
    let A_Token = preferences.object(forKey: acTkn)

    let params = ["user_id": u_ID!, "access_token": A_Token!]
    print(params)
    SVProgressHUD.show()
    Alamofire.request(inspectionsList, method: .post, parameters: params).responseJSON(completionHandler: {(response) in
        switch response.result{
        case.success(let value):
            self.overDueData.removeAll()
            let json  = JSON(value)
            print(json)
            let data = json["inspections_overdue_data"]
            print(data)
            if data == []{
                self.viewNodata.isHidden = false
            }else{
                data.array?.forEach({ (iunOverDue) in
                    let iOveList = OvedueModel(surveyor_id: iunOverDue["surveyor_id"].stringValue, country: iunOverDue["country"].stringValue, time: iunOverDue["time"].stringValue, address2: iunOverDue["address2"].stringValue, address3: iunOverDue["address3"].stringValue, notes: iunOverDue["notes"].stringValue, house_num: iunOverDue["house_num"].stringValue, name: iunOverDue["name"].stringValue, address1: iunOverDue["address1"].stringValue, latitude: iunOverDue["latitude"].stringValue, eircode: iunOverDue["eircode"].stringValue, date_inspected: iunOverDue["date_inspected"].stringValue, property_id: iunOverDue["property_id"].stringValue, county: iunOverDue["county"].stringValue, client_id: iunOverDue["client_id"].stringValue, longitude: iunOverDue["longitude"].stringValue)
                    self.searchResult = self.overDueData
                    self.overDueData.append(iOveList)
                })

                self.tblOvedue.reloadData()
            }
            SVProgressHUD.dismiss()
        case.failure(let error):
            print(error.localizedDescription)
        }

    })
}

Это может помочь вам поблагодарить вас.

11
задан 6 revs, 2 users 100% 20 March 2013 в 18:24
поделиться

7 ответов

Ай! Походит на место, которое я использую для работы.

Смотрите на Работу effectivly с унаследованным кодом. Это имеет некоторые драгоценные камни о том, как иметь дело со зверским кодом.

DotNetRocks недавно сделал шоу на работе с унаследованным кодом. Нет никакой волшебной таблетки, которая собирается заставить его работать.

Лучший совет, который я услышал, является запуском, инкрементно переносящим код в тесты.

9
ответ дан 3 December 2019 в 03:19
поделиться

Это напоминает мне о моем текущем задании и когда я сначала присоединился. Они не позволяли мне переписать что-либо, потому что у меня был тот же аргумент, "Эти классы являются настолько большими и плохо записанные! никто не мог возможно понять их уже не говоря о, добавляет новая функциональность к ним".

Таким образом, первая вещь, которую я сделал бы, состоит в том, чтобы удостовериться, что существует комплексное тестирование позади областей, которые Вы надеетесь изменять. И по крайней мере затем у Вас будет шанс изменения кода и не наличия (слишком многих) аргументы (надо надеяться). И тестами, я означаю тестировать компоненты функционально с интеграционными тестами или приемочными испытаниями и удостоверяться, что это - покрытых 100%. Если тесты хороши, то необходимо смочь уверенно изменить код путем разделения большого класса на меньшие, избавления от дублирования и т.д. и т.д.

4
ответ дан 3 December 2019 в 03:19
поделиться

Даже если Вы не можете осуществить рефакторинг файл, попытайтесь реорганизовать его. Переместите методы/функции так, чтобы они были, по крайней мере, организованы в файле логически. Затем вставьте много комментариев, объясняющих каждый раздел. Нет, Вы не переписали программу, но по крайней мере теперь можно считать ее правильно, и в следующий раз, когда необходимо работать над файлом, у Вас будет много комментариев, записанных Вами (который, надо надеяться, означает, что Вы сможете понять их), который поможет Вам иметь дело с программой.

4
ответ дан 3 December 2019 в 03:19
поделиться

Сворачивание кода может помочь. Если можно переместить материал в гигантском классе и организовать его несколько логическим способом, то можно поместить сгибы вокруг различных блоков.

Скройте все, и Вы вернулись к парадигме C, кроме со сгибами, а не отдельными файлами.

3
ответ дан 3 December 2019 в 03:19
поделиться

Я столкнулся с этой ситуацией также.

Лично я распечатываю (да, это может быть много страниц), код сначала. Затем я тяну поле вокруг разделов кода, которые не являются частью никакого "основного цикла" или являются просто функциями помощника и удостоверяются, что я понимаю эти вещи сначала. Причина, они, вероятно, много раз упоминаются в основной части класса, и хорошо знать то, что они делают

Во-вторых, я определяю основной алгоритм (алгоритмы) и разлагаю их на их части с помощью системы нумерации, которая чередуется между числами и буквами (это ужасно, но работает хорошо на меня). Например, Вы могли смотреть на часть алгоритма, которым 4 "уровня" глубоко и нумерация будут 1.b.3.e или некоторый другой бог ужасная вещь. Обратите внимание что, когда я говорю, что уровни, не обращаюсь непосредственно к блокам управления или объему обязательно, но где я определил шаги и подшаги алгоритма.

Затем это - вопрос просто чтения и перечитывания алгоритма. Когда Вы начинаете, это походит на большое количество времени, но я нахожу, что выполнение этого разрабатывает врожденную способность постигать много логики внезапно. Кроме того, если Вы обнаруживаете, что ошибка, приписанная этому коду, визуально сломав его на бумаге заранее, помогает Вам "переместиться" по коду позже, так как у Вас уже есть своего рода карта его в Вашей голове.

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

3
ответ дан 3 December 2019 в 03:19
поделиться

Первая вещь, которую я сделал бы, записать некоторые модульные тесты для упаковки текущего поведения, предполагая, что уже нет ни одного. Затем я запустил бы в области, где я должен внести изменение и попытаться очистить тот метод - т.е. осуществить рефакторинг рабочий код прежде, чем представить изменения. Используйте общие методы рефакторинга, чтобы извлечь и снова использовать методы из существующих длинных методов для создания их более понятными. Когда Вы извлекаете метод, ищете другие места в коде, где подобный код существует, поле, что область, и снова использует метод, который Вы только что извлекли.

Ищите группы методов, которые "остаются целым", который может вспыхнуться в их собственные классы. Запишите некоторые тесты для того, как те классы должны работать, создать классы с помощью существующего кода как шаблона если потребуется, затем заменить новыми классами в существующий код, удаляя методы, которые они заменяют. Снова, с помощью тестов, чтобы удостовериться, что Вы ничего не повреждаете.

Сделайте достаточно улучшения существующего кода так, чтобы Вы чувствовали, что можно реализовать новую опцию/, фиксируют в очевидном способе. Затем запишите, что тесты для новой возможности / фиксируют и реализуют, чтобы пройти тесты. Не чувствуйте, что необходимо зафиксировать все в первый раз. Стремитесь к постепенному улучшению, но всегда оставляйте код лучше, чем Вы нашли его.

2
ответ дан 3 December 2019 в 03:19
поделиться

Я чувствую Вашу боль. Я занялся чем-то вроде этого однажды для проекта хобби, включающего обрабатывающий данные цифрового телевидения на моем компьютере. Человек на аппаратном форуме записал удивительный инструмент для записи шоу, видя все, что шло, и т.д. Плюс, он сделал невероятно жизненную работу работы вокруг ошибок в реальных широковещательных сигналах, которые нарушили стандарт. Он сделал удивительную работу с планированием потоков, чтобы быть уверенным это независимо от того, что, Вы не потеряете те пакеты в реальном времени: на старом Pentium он мог записать четыре потока одновременно, также играя Гибель и никогда не потерять пакет. Короче говоря, этот код включил тонну большого знания. Я надеялся взять некоторые части и включить их в мой собственный проект.

Я получил исходный код. Один файл, 22 000 строк C, никакой абстракции. Я провел часы, читая его; была вся эта большая работа, но она все имелась проблемы. Я не смог снова использовать одну строку или даже единственную идею.

Я не уверен, какова мораль истории, но если бы я был вынужден использовать этот материал на работе, то я попросил бы разрешения к частям микросхемы от него по одному, модульным тестам сборки на каждую часть, и в конечном счете выращиваю новую, разумную вещь из частей. Этот подход несколько отличается, чем попытка осуществить рефакторинг и поддержать большой кирпич на месте, но я оставил бы унаследованный код нетронутым и испытанным для перевода в рабочее состояние новой системы параллельно.

3
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: