В чем преимущество разбиения кода на несколько небольших функций в C ++? [закрыто]

Это всего лишь вопрос справки, япытаюсь понять, в чем преимущество наличия набора небольших функций в приложении C ++ 's код, имеющий одну длинную сложную функцию, содержащую все операторы, необходимые для решения проблемы?

 Aniket Inge06 нояб. 2012 г., 18:47
что более важно, расширяемость @KerrekSB
 Kerrek SB06 нояб. 2012 г., 18:47
Ремонтопригодность. Понятность. Повторное использование. Debuggability.
 eh906 нояб. 2012 г., 19:11
@jrok: О, этокрасивая. Я вижу вывески: "УБИТ за хороший код. "
 eh906 нояб. 2012 г., 19:01
Я также добавил бы простоту тестирования, которое, как показывает мой опыт, приводит к созданию всех других уже названных.
 Michael Burr06 нояб. 2012 г., 20:03
Написание хорошего кода - УБИЙСТВО.
 Thomas Matthews06 нояб. 2012 г., 19:08
Дон»не стоит забывать о регрессионном тестировании, и множество людей работают над одной и той же кодовой базой.
 jrok06 нояб. 2012 г., 19:08
УБИЙСТВО - ремонтопригодность. Понятность. Повторное использование. Debuggability. Расширяемость. Регрессионное тестирование. (кредит перечисляется выше)

Ответы на вопрос(5)

Одна большая сложная функция - это просто: сложная.

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

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

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

Более четкий код, который означает, чтолегче понять и поддерживать.

 Mody06 нояб. 2012 г., 18:54
Спасибо, очень простой и понятный ответ

Преимущества разделения программы на несколько функций:

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

уменьшает потребность в регрессионном тестировании и сужает эффекты изменения в меньшей области.

Например, пустьПредположим, у нас есть 15 функций для 3 тем в одном файле.

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

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

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

Решение Вопроса

редактировать Кредит на эту мнемонику идет комментаторам в ОП.

Разбиение больших функций на несколько более мелких может привести кУБИЙСТВО! Что в этом случае может быть хорошей вещью. :) М -

Ремонтопригодность, Меньшие, более простые функции легче поддерживать.

Понятность, Упрощенные функции легче понять.

Reuseability, Поощряет повторное использование кода, перемещая общие операции в отдельную функцию.

Debugability, Это'проще отлаживать простые функции, чем сложные. E -

растяжимость, Повторное использование кода и ремонтопригодность приводят к функциям, которые легче реорганизовать за 6 месяцев. R -

регрессия, Повторное использование и модульность приводят к более эффективному регрессионному тестированию.

Есть несколько потенциальных преимуществ разделения больших функций на более мелкие. По порядку они выпали из моего мозга

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

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

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

Если вы против функций с несколькими точками возврата, разбивка больших функций может помочь уменьшить их.

Это помогает идентифицировать и изолировать (потенциальные) проблемы с тонкими зависимостями данных, которые иначе трудно заметить.

Это'Тем не менее, важно отметить, что с этим вы принимаете как хорошее, так и плохое. Есть также несколько потенциальных недостатков для разбивки больших функций:

Если большая функция работала раньше, попытка ее модульности может создать дефекты.

В многопоточных приложениях вы можете ввести взаимоблокировки и условия гонки, если ваши политики синхронизации неуловимы или просто неверны.

Вы можете представить снижение производительности при вызове функций.

 Mody08 нояб. 2012 г., 18:17
спасибо Большое

Ваш ответ на вопрос