Сколько строк кода функция/процедура/метод должна иметь? [дубликат]

Да: s1 += strlen(s1) даст вам указатель на завершающий 0, поэтому strcpy(..., s2) будет работать как strcat() - добавление s2 к s1 (при условии, что в [115 достаточно места) ]. Обратите внимание, что strcpy() не «делает цикл через s1, чтобы найти ноль» - он просто записывает в указанном месте strcat, хотя и находит ноль.

Ключом к оптимизации является [ 118] мы на самом деле меняем s1 (лучше взять копию исходного значения), поэтому мы берем только длину последней добавленной строки, а не длину от начала первой строки (что и является [ 1110] решение подойдет).

47
задан Community 23 May 2017 в 02:10
поделиться

6 ответов

Это не о строках кода. Как Steve Mcconnell и говорит Bob Martin (две довольно хороших ссылки на кодировании лучших практик), метод должен сделать одну вещь и только одну вещь. Однако много строк кода, которые требуется, чтобы сделать ту одну вещь, - то, сколько строк это должно иметь. Если та "одна вещь" может быть повреждена в меньшие вещи, у каждого из тех должен быть метод.

Хорошие подсказки Ваш метод делает больше чем одну вещь:

  • больше чем один уровень изрезывания в методе (указывает на слишком много логических ответвлений для только выполнения одной вещи)
  • "Концы абзаца" - пробел между логическими группами кода указывает, что метод делает больше чем одну вещь

Только для именования некоторых. Bob Martin также говорит для хранения его приблизительно 10. Лично я обычно пытаюсь стрелять для 10. Если это начинает быть рядом с 20, это - умственный флаг для обращения более близкого внимания на тот метод. Но в конечном счете, LoC является плохой метрикой для в значительной степени чего-либо. Это - только полезный индикатор, который может потенциально указать на реальную проблему.

115
ответ дан Rex M 7 November 2019 в 12:58
поделиться

Реальный Ответ

нет никакого определенного числа.

Ответ Бетона А

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

Общая практика

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

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

крупнейший преступник, которого я вижу, 3-4 + булевы условия, взорванные посреди оператора "if". Оберните все это в одну булевскую переменную с хорошим именем, затем оберните любые части, которые делают ее, которые сложны в их собственном.

11
ответ дан NickC 7 November 2019 в 12:58
поделиться

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

Относящийся конкретно к максимальной длине, кавычке от Завершенного Кода, обычно считал одной из лучших книг на предмет кодирования методов:

Время от времени, сложный алгоритм приведет к более длинной стандартной программе, и при тех обстоятельствах, стандартной программе нужно позволить вырастить органически до 100-200 строк. (Строка является некомментарием, непустой строкой исходного кода.) Десятилетия доказательства говорят, что стандартные программы такой длины не более подвержены ошибкам, чем более короткие стандартные программы. Позвольте проблемам, таким как глубина вложения, количество переменных, и другие связанные со сложностью соображения диктуют длину стандартной программы вместо того, чтобы ввести ограничение длины по сути.

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

7
ответ дан Chad Birch 7 November 2019 в 12:58
поделиться

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

2
ответ дан flatline 7 November 2019 в 12:58
поделиться

Для добавления к точке Короля это должно также быть максимально коротко. Bob Martin говорит 10 или меньше

Объектный Наставник - Насколько большой функция должна быть?

2
ответ дан josliber 7 November 2019 в 12:58
поделиться

Как можно меньше.

1
ответ дан Alex Fort 7 November 2019 в 12:58
поделиться
Другие вопросы по тегам:

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