2016-12-22 2 views
-1

Я изо всех сил пытаюсь разработать проект моей большой программы. Общая схема выглядит примерно так:Рекомендации по модульности Python

def mainFunc(parm_1, parm_2, ..., parm_n): 
    # do step 1 
    # do step 2 
    # ... 
    # do step m 

Мой вопрос: должен ли я сделать каждый шаг своей собственной функцией? Я бы никогда не хотел вызывать какой-либо шаг как функцию вне mainFunc. Таким образом, было бы лучше сделать каждый шаг фрагментом? Какая практическая разница между вызовом функции и выполнением фрагмента, который делает то же самое? (Предполагая, конечно, что любые ненужные переменные удаляются в конце фрагмента.)

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

+1

Практически нет разницы между вызовом внешней функции и вставкой кода на место - так что забудьте об этом. Причина группировки кода в функции/методы заключается в том, чтобы сделать код повторно используемым (если вам нужно повторить шаг несколько раз, он должен быть определенно извлечен для работы) и разделить огромный блок кода на многие более мелкие блоки - вам нужно решить, 'mainFunc' будет достаточно большим –

+1

Это довольно широкий вопрос. В большинстве случаев это зависит от ваших потребностей ... Python - это язык OOP, поэтому есть классы. Много раз у меня есть класс 'class MyApp()' с методами, а затем метод 'run', который вызывает методы класс. И затем я использую его как 'MyApp(). Run()' .. Но это всего лишь одна из многих, многих концепций. – quapka

+1

Вы также должны подумать о том, что другие люди (а также вы через 3 месяца после того, в коде), скорее всего, придется читать и поддерживать ваш код. Таким образом, гораздо проще сообщать, что каждая из частей делает с docstrings и функциями, которые вносят вклад в предсказуемый формат, делают легко идентифицируемую вещь и дают результат в заданном формате. Если у вас есть одна гигантская функция, которая «делает все», то это потеряно. – roganjosh

ответ

1

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

Смежные вопросы