В русском языке не "линии", а "строки". Не надо повторять за неучами безграмотные англицизмы. Столько, сколько требуется для решения данной конкретной задачи. Если требуется предельно высокая производительность кода, о красивом разбиении на короткие методы надо забыть. Во всех прочих случаях предпочитаю, чтобы текст метода (исключая комментарии перед методом) целиком помещался на экране: в моей IDE это 36 строк. Но, к сожалению, в реальности так получается далеко не всегда.
В зависимости от назначения метода. Есть методы, в которых рациональнее размещать много кода. Например это 120 последовательно идущих проверок поступивших данных. В таком случае лучше каждый вызов сгруппировать в регион, чтобы их можно было сворачивать, но все они находились в рамках одного метода. Есть методы, в которых и одной строки не должно быть - всё тело в виде лямбда выражения
МНОГО. Довольно-таки. Сложный код не тот, который длинный, а тот, который состоит из множества отдельных элементов - функций, классов, причем каждый из которых находит применение только в одном месте. Будучи человеком разносторонним и имеющим необходимость быстро въезжать в новую тему, я подобный оверинжиниринг не люблю. И даже более. Просто уже тошнит, когда ко мне попадает очередной проект, код, над которым ранее работала целая команда, и у нее было достаточно времени и бабла, чтобы делать все пышно, городить целые виртуальные песчаные замки из функций, классов, зависимостей, компонентов... Но прибыли проекту все это не принесло, он закрылся, и теперь я и мой не очень богатый заказчик берем его и пытаемся с помощью какой-то матери сделать что-то на его основе.)))) Люди засунули свои руки в ж-пы и больше не могут в реальную инженерию и упражняются в виртуальной.