Действительно ли практики «чистого кода» настолько чисты и полезны? [закрыто]

11

В настоящее время я прохожу стажировку в крупной корпорации, и они претерпевают много изменений в структуре поставки программного обеспечения (переход на Agile).

В последние пару месяцев я заметил эту религиозную привязанность к Clean Codeпрактикам и то, что книга для разработчиков напоминает библию.

Теперь одна из самых важных особенностей чистого кода - это не требующий пояснений код, который основан на понятном именовании и строгом ре-факторинге. За этим следует no commentingправило.

Я понимаю, что этот чистый код - это долгосрочное вложение, которое облегчит последующее сопровождение и совершенствование кода, но ... действительно ли это стоит всей этой суеты?

Кто-нибудь поделится своим опытом в отношении Чистого кода и любым мнением, слишком ли я консервативен или это просто временная тенденция?

Артурс Ванканс
источник
1
Многие хорошие вопросы генерируют определенную степень мнения, основанного на опыте экспертов, но ответы на этот вопрос, как правило, будут почти полностью основаны на мнениях, а не на фактах, ссылках или конкретных знаниях.
комнат
4
Я не очень высокого мнения об этой книге (несмотря на ее автора). В общем, стоит не быть слишком догматичным. Большинство рекомендаций по программированию объясняются тем, что они работают на практике, но они не являются абсолютной правдой, поэтому не стоит слишком беспокоиться. Продолжайте читать и придерживайтесь того, что вы считаете более правильным, но не изобретайте велосипед тоже. Скорее всего, кто-то умнее нас уже придумал лучшие решения, чем наши.
DPM
2
Метод с именем из 70 символов, вероятно, делает больше, чем одну вещь. Нарушение SRP я прав ?!
Томбатрон
1
Вот еще одна мысль, через 5 или 10 лет, когда вы будете разработчиком в компании, которая меньше заботится о чистом коде, вы по-настоящему оцените это догматическое упражнение.
Томбатрон
3
Проработав (кратко) «без комментариев», я очень предпочитаю, чтобы это было сильное руководство, чем правило. Есть моменты, когда нужны комментарии - обычно в неясной бизнес-логике. Метод с названием CalculateFoonicityMetric()говорит вам точно, что он делает, и хорошо написанный код покажет вам, как ... но ни один из них не скажет вам почему . Код может быть очевиден в том, что (умножьте это на это, разделите на другое, возведите в квадрат, добавьте этот бит ...), но неясно, почему (фактор = a * b / c; квадрат для учета отрицательного foo, отрегулируйте для дрифта ...). Я ценю быстрый комментарий, который объясняет почему.
Анаксимандр

Ответы:

17

Я понимаю, что этот чистый код - это долгосрочное вложение, которое облегчит последующее сопровождение и совершенствование кода, но ... действительно ли это стоит всей этой суеты?

Абсолютно.

Рефакторинг очень важен, но тратить 75% своего времени на перемещение методов и тратить кучу времени на выбор правильного названия не кажется таким продуктивным.

Конечно, но учтите, что у крупной компании, вероятно, есть годы или десятилетия плохого кода для очистки. Это займет много времени и усилий, чтобы сделать это.

Главное понять, что вы оба правы. «Чистый код» очень важен, и Чистый код - это универсальный способ добиться этого. Так как компания только начала идти по пути, она будет признательна книге больше, чем группа, которая имеет больше опыта. Как только они это сделают, они начнут изучать, что работает, а что нет. Как только они поймут это лучше, они (надеюсь) последуют более прагматичному и естественному подходу, который поддерживает чистый код, но не приводит к 70 именам функций char.

Telastyn
источник
4

Я изначально писал комментарий. Я постараюсь дать меньше ответа, чем рассмотреть перспективы. Тем не менее, я абсолютно одобряю методы «чистого кода», такие как понятное именование и рефакторинг.

Мне всегда не нравились правила отсутствия комментариев , так как есть случаи, когда комментарии необходимы для предотвращения поломки кода в будущем. Они обычно должны быть ограничены тем, что делается и почему. Используйте их экономно, когда код делает что-то неожиданное, или требуется заменить алгоритм.

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

С опытом, эти методы должны стать укоренившимися, а не убийцей производительности. Выбор правильного имени может занять больше времени, потому что вы разъясняете, что должен делать код. (Это уточнение может ускорить кодирование и отладку.) В результате получается код, который выполняет только то, что требуется, или содержит меньше ошибок? Как это влияет на производительность?

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

BillThor
источник
3
Я хотел бы отметить, что правило «без комментариев», которое люди любят приписывать книге «Чистый код», на самом деле отсутствует в книге. Напротив, есть целая глава о комментариях, первая половина которой посвящена описанию многих типов «хороших комментариев», за которыми следует раздел «плохие комментарии». Мнение автора по этому вопросу на самом деле гораздо более разумно, чем многие считают его.
Эрик Кинг,
Я комментировал правила «без комментариев» в целом. Я работал на языках, где были предложения по удалению комментариев из определения языка. Нет комментариев, хороших или плохих. В то время у нас был комментарий в блоке кода, где в некоторых случаях было желательно провалиться. Был комментарий, предупреждающий, что это так и не добавлять новые блоки кода на этом этапе.
BillThor
Да, это кажется мне экстремальным.
Эрик Кинг,