Здесь есть много ответов, которые касаются технических плюсов и минусов удержания LOC и того, является ли это значимой метрикой качества программного обеспечения. Вопрос не в этом. Речь идет о том, как бороться с руководством, которое настаивает на наивной догматической приверженности определенному практическому правилу кодирования.
К сожалению, для людей довольно распространено зацикливаться на вещах, которые являются хорошим советом, когда они используются в надлежащем контексте и применяются прагматично, вынимают их из этого контекста и применяют их догматически, не понимая проблем, которые существуют в первую очередь для смягчения этих советов. ,
Цель советов относительно сохранения LOC состоит в том, чтобы избегать создания методов, которые пытаются сделать слишком много за один раз, и препятствовать созданию «классов бога», которые слишком много знают об аспектах дизайна, которые не являются их прямая ответственность и от которого зависят все другие классы в системе. Другое преимущество более короткого кода состоит в том, что он более читабелен, хотя, как вы указали, вы можете переусердствовать до такой степени, что читаемость фактически начинает страдать.
У низких количеств LOC есть очевидные преимущества (маленькие методы вписываются в вашу голову легче, чем большие, меньше кода в коде означает меньше ошибок и т. Д.), Но он также подчиняется закону убывающей отдачи. Реорганизация метода из 150 строк в число методов из 20 строк - это гораздо большая победа, чем рефакторинг метода из 10 строк в метод из 7 строк.
Когда такой рефакторинг происходит за счет какого-то другого аспекта хорошего дизайна программного обеспечения (например, читабельности), тогда вы достигли точки, когда вы можете оправдать отказ от этого. Удаление переменных, которые дают контекст для того, что означает код, и замена их литералами, которые этого не делают, очень плохая вещь. Хороший код почти не содержит литералов. Тем не менее, эти переменные (и именованные константы) являются строками кода, которые не вносят непосредственного вклада в программу, и поэтому, если LOC поклоняются как некоему богу, такие уточняющие строки находятся в большой опасности того, чтобы их обрезали для быстрой победы и некоторые ошибочные похвалы от руководства.
Я полагаю, что вы достаточно умны, чтобы понять это, на самом деле это в значительной степени основной вопрос вашего первоначального вопроса. Проблема не в том, что вы понимаете, когда сокращение кода хорошо, а когда нет, проблема в догматизме в применении того, что обычно является разумной практикой без разбора.
Я бы порекомендовал потратить время на то, чтобы побеседовать с вашим руководством, объяснить свою позицию и понять, почему вы чувствуете, что то, что вас просят сделать, вредит коду, а не помогает. Старайтесь избегать конфронтации, но старайтесь оставаться рациональным и спокойным во время такой дискуссии. Важно, чтобы ваше руководство понимало, что программирование - это прагматичное занятие, а рекомендации по передовому опыту полезны только в том случае, если они применяются прагматично. Лучшая практика написана в книге, а не вырезана из камня, и когда она конфликтует (короткий код с читаемым кодом), программист должен сам принять решение о том, какой из лучших рекомендаций следовать. Надеюсь, они разумные люди, которые ценят такой вклад, как этот.
Вы также должны быть немного смелыми, потому что, если на вас оказывают давление, чтобы уменьшить LOC там, где вы считаете, что это не нужно или неуместно, то вполне естественно, что вы все равно внесете изменения ради спокойной жизни. Вы должны сопротивляться этому, и вы должны «владеть» этим решением. В ситуации, когда руководство разумно, вам не обязательно точно придерживаться их рекомендаций, но вы должны быть в состоянии оправдать любые обстоятельства, которые вам не подходят.
К сожалению, люди могут быть иррациональными, особенно когда речь идет о людях, чей порядок ниже, ставит под сомнение их решения и правила, которые они навязывают вам. Они могут выбрать не быть разумным. Вы должны быть готовы к этому тоже. Если вы можете продемонстрировать случаи, когда передовая практика LOC вступает в прямой конфликт с другой передовой практикой и почему это наносит ущерб продукту, и если вы можете сделать это в тех частях кодовой базы, для которых у них было мало или нет личного участия (так не похоже на личную атаку на их работу или работу, которой они руководили), тогда это может помочь поддержать ваш аргумент. Опять же, вы должны быть готовы оправдываться в спокойной, рациональной манере и уметь «владеть» аргументами, которые вы приводите.
Если ваше руководство - разумные люди, они должны понимать, что то, что вы говорите, имеет смысл, если вы можете предоставить доказательства, подтверждающие ваши претензии.
s/\n/ /g
), это не значит, что он будет даже удаленно читаемым