Чи справді «Чистий код» дійсно такий чистий і корисний? [зачинено]


11

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

За останні кілька місяців я помітив цю релігійну прихильність до Clean Codeпрактик, і книга була як біблія для розробників.

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

Я розумію, що цей чистий код - це довгострокова інвестиція, яка полегшить наступне обслуговування та вдосконалення коду, але ... чи справді варто цього суєти?

Чи хтось поділиться своїм досвідом роботи щодо чистого кодексу та будь-якої думки, чи я занадто консервативний, чи це лише тимчасова тенденція.


1
Багато хороших питань породжують певну ступінь думок на основі досвіду експертів, але відповіді на це питання, як правило, майже повністю базуються на думках, а не на фактах, посиланнях або конкретних знаннях.
гнат

4
Я не маю дуже високої думки щодо цієї книги (незважаючи на її автора). Взагалі, це платить не бути надто догматичним. Більшість рекомендацій щодо програмування - це тому, що вони показали, що вони працюють на практиці, але вони не є абсолютною правдою, тому не варто переживати надто сильно. Продовжуйте читати та йдіть із тим, що вважаєте правильнішим, але також не винаходити колесо. Швидше за все, хтось розумніший за нас, ми вже знайшли кращі рішення, ніж наші власні.
DPM

2
Метод з ім'ям 70 символів, ймовірно, робить більше ніж одне. Порушення SRP, я маю рацію ?!
Томбатрон

1
Ось ще одна думка, через 5 чи 10 років, коли ви розробник компанії, яка може менше піклуватися про чистий код, ви дійсно оціните цю догматичну вправу.
Томбатрон

3
Попрацювавши (коротко) в "без коментарів", я дуже вважаю за краще це керівництво, ніж правило. Бувають випадки, коли потрібні коментарі - як правило, в незрозумілій діловій логіці. Метод, який називається, CalculateFoonicityMetric()говорить вам саме про те, що він робить, і добре написаний код покаже вам, як ... але жоден з них не скаже вам, чому . Код може бути очевидним у чому (помножте це на те, поділіть на інше, покладіть його на квадрат, додайте цей біт ...), але незрозуміло, чому (коефіцієнт = a * b / c; для дрейфу ...). Я вдячний за короткий коментар, який пояснює, чому.
anaximander

Відповіді:


17

Я розумію, що цей чистий код - це довгострокова інвестиція, яка полегшить наступне обслуговування та вдосконалення коду, але ... чи справді варто цього суєти?

Абсолютно.

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

Звичайно, але врахуйте, що велика компанія, ймовірно, має чисті роки чи десятиліття поганого коду. На це піде багато часу і сил.

Головне усвідомити, що ви обоє праві. "чистий код" дуже важливий, а "Чистий код" - це загальновизнаний спосіб потрапити туди. Оскільки компанія тільки починала цей шлях, вони будуть сприйматися до книги більше, ніж група, яка має більше досвіду. Як тільки вони це зроблять ненадовго, вони почнуть вивчати, що працює, а що ні. Як тільки вони зрозуміють це краще, вони (сподіваємось) дотримуватимуться більш прагматичного та природного підходу, який підтримує чистий код, але не призводить до 70 найменувань функцій char.


4

Я спочатку писав коментар. Я спробую дати менше відповіді, ніж перспективи для розгляду. Однак я абсолютно схвалюю "Чистий код" таких практик, як зрозумілі імена та рефакторинг.

Мені завжди не подобалися правила без коментарів , оскільки є випадки, коли коментарі необхідні для запобігання майбутнього злому коду. Зазвичай їх слід обмежувати тим, що робиться і чому. Економно використовуйте їх, коли код робить щось несподіване або потрібно замінити алгоритм.

Подумайте про продуктивність під час читання або підтримки коду. Протягом життя коду це може бути важливіше, ніж продуктивність при написанні коду. Чи допоможуть ці практики підвищити продуктивність у виконанні цих завдань?

Із досвідом ці практики повинні стати вкоріненими, а меншою мірою - вбивцями. Вибір правильного імені може зайняти більше часу, оскільки ви роз'яснюєте, що потрібно робити з коду. (Це уточнення може пришвидшити кодування та налагодження.) Чи призводить це до коду, який виконує лише те, що потрібно, або має менше помилок? Який вплив це на продуктивність?

Час, відведений на вибір правильної назви методу, швидше за все, окупиться, щоб краще зрозуміти, яка мета методу. Порівняйте назви методів "iterateOverCustomers" з "locateActiveCustomers". Який з них передає наміри функції? Який із них буде легше переробляти за потреби?


3
Я хотів би зазначити, що правило "без коментарів", яке люди хочуть віднести до книги "Чистий код", насправді не є ніде в книзі. Навпаки, є ціла глава щодо коментарів, перша половина якої витрачається на опис багатьох типів «хороших коментарів», а потім розділ про «погані коментарі». Думки автора з цього приводу насправді набагато розумніші, ніж багато хто дає йому заслугу.
Ерік Кінг

Я взагалі коментував правила "без коментарів". Я працював мовами, де були пропозиції видалити коментарі з мовного визначення. Немає коментарів хороших чи поганих. На той час у нас був коментар у блоці коду, куди в деяких випадках бажано було потрапити. Був коментар з попередженням про те, що так було, і не додавати нові блоки коду в той момент.
BillThor

Так, це здається мені дуже екстремальним.
Ерік Кінг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.