Да: s1 += strlen(s1)
даст вам указатель на завершающий 0, поэтому strcpy(..., s2)
будет работать как strcat()
- добавление s2
к s1
(при условии, что в [115 достаточно места) ]. Обратите внимание, что strcpy()
не «делает цикл через s1, чтобы найти ноль» - он просто записывает в указанном месте strcat
, хотя и находит ноль.
Ключом к оптимизации является [ 118] мы на самом деле меняем s1
(лучше взять копию исходного значения), поэтому мы берем только длину последней добавленной строки, а не длину от начала первой строки (что и является [ 1110] решение подойдет).
Это не о строках кода. Как Steve Mcconnell и говорит Bob Martin (две довольно хороших ссылки на кодировании лучших практик), метод должен сделать одну вещь и только одну вещь. Однако много строк кода, которые требуется, чтобы сделать ту одну вещь, - то, сколько строк это должно иметь. Если та "одна вещь" может быть повреждена в меньшие вещи, у каждого из тех должен быть метод.
Хорошие подсказки Ваш метод делает больше чем одну вещь:
Только для именования некоторых. Bob Martin также говорит для хранения его приблизительно 10. Лично я обычно пытаюсь стрелять для 10. Если это начинает быть рядом с 20, это - умственный флаг для обращения более близкого внимания на тот метод. Но в конечном счете, LoC является плохой метрикой для в значительной степени чего-либо. Это - только полезный индикатор, который может потенциально указать на реальную проблему.
нет никакого определенного числа.
, Если необходимо выровнять по ширине с некоторым числом адвокатам или чему-то, выясните максимальное количество строк, которые соответствуют на типичном редакторе разработки окну в магазине и использованию это.
Вы не должны даже действительно смотреть на него тот путь, но не должно быть ничего очень сложное продолжение ни в какой функции.
Каждая единица работы должна быть делегирована к ее собственной единице тестируемый описательно именованный метод. Делают это и все Ваши методы заканчиваются крошечные и читаемые, никогда не считая строки......
крупнейший преступник, которого я вижу, 3-4 + булевы условия, взорванные посреди оператора "if". Оберните все это в одну булевскую переменную с хорошим именем, затем оберните любые части, которые делают ее, которые сложны в их собственном.
В первую очередь, обратите внимание, что ограничение длины является совершенно отдельным от обычной метрики, которая является "функцией, делает только одну вещь и успевает он?" Если ответ на тот вопрос не да, функция является, вероятно, не хорошей так или иначе, независимо от длины.
Относящийся конкретно к максимальной длине, кавычке от Завершенного Кода, обычно считал одной из лучших книг на предмет кодирования методов:
Время от времени, сложный алгоритм приведет к более длинной стандартной программе, и при тех обстоятельствах, стандартной программе нужно позволить вырастить органически до 100-200 строк. (Строка является некомментарием, непустой строкой исходного кода.) Десятилетия доказательства говорят, что стандартные программы такой длины не более подвержены ошибкам, чем более короткие стандартные программы. Позвольте проблемам, таким как глубина вложения, количество переменных, и другие связанные со сложностью соображения диктуют длину стандартной программы вместо того, чтобы ввести ограничение длины по сути.
, Если Вы хотите записать стандартные программы дольше, чем приблизительно 200 строк, быть осторожными. Ни одно из исследований, которые сообщили об уменьшенной стоимости, уменьшенных коэффициентах ошибок, или и с большими стандартными программами, которые отличают среди размеров, больше, чем 200 строк и с you’re, обязанным сталкиваться с верхним пределом понятности, поскольку Вы передаете 200 строк кода.
Это были много лет, с тех пор как я считал это, но я думаю, что это было в Изучение Perl, что они рекомендуют делать процедуру не более, чем, можно соответствовать всему этому на экране сразу. Я думал, что это было хорошим критерием. Я видел более длительные функции, которые были все еще читаемы из-за повторяющегося кода (например, доступ к базе данных и присваивающий значения свойств), но это - исключение, а не норма.
Для добавления к точке Короля это должно также быть максимально коротко. Bob Martin говорит 10 или меньше
Объектный Наставник - Насколько большой функция должна быть?