2 Сайт в один клік 3 Годувальник доками 4 Гід-напрямний ~9 хв

Гарний код на Python: зрозумілі імена, типи, помилки

Код, який читаєш як рецепт борщу, а не як закляття з курної книги

Що таке гарний код на Python для вайбкодера: зрозумілі імена, підказки типів, чесна обробка помилок і пітонічний стиль. І чому гарний код агент лагодить легко, а потворний ламає.

Скіли ECC у цьому уроці: python-patterns

Що означає «гарний код» простими словами

Візьмімо два рецепти борщу. Перший: «налий води, поріж і кинь буряк, потім капусту, посоли, вари 40 хвилин». Другий: «візьми X, зроби з ним Y, додай Z, чекай T». Обидва, в теорії, робочі. Але за першим борщ зварить навіть школяр. А за другим - тільки той, хто його написав. Та й то за тиждень сам забуде, що за звір цей Z.

Код на Python - такий самий рецепт, тільки для компʼютера. І є нюанс, про який новачки й не здогадуються: код читають частіше, ніж пишуть. Ти сам за місяць. Твій напарник. І - увага - твій ШІ-агент, коли ти кинеш йому «полагодь баг». Гарний код вони схоплюють з першого погляду. Потворний розшифровують по літерах, як закляття з курної книги.

Два рецепти борщу поруч: ліворуч зрозумілий із кроками, праворуч із незрозумілих літер X Y Z
Той самий борщ. Один рецепт зрозумілий усім, другий - тільки авторові.

Навіщо гарний код вайбкодеру, який сам не пише

Логічне питання. Ти вайбкодер. Python по літерах за тебе набирає агент. То яке тобі діло до «гарного коду»? А ось яке: планку якості задаєш саме ти. Що попросиш - те й отримаєш. І ось що змінюється, коли планка висока:

  • гарний код агент доповнює з першого заходу, а в потворному плутається і ламає те, що поруч працювало;
  • зрозумілі імена і типи = менше багів, бо і тобі, і агенту видно, що куди тече;
  • повернешся до проєкту за місяць - і сам розберешся у своєму коді, а не благатимеш агента пояснити, що ти тут накоїв;
  • одна фраза в промпті - «пиши пітонічно» - підтягує весь проєкт майже безкоштовно.

Різниця між «агент зібрав мені скрипт, і він працює» та «агент зібрав мені скрипт, який я можу розвивати» - це майже завжди різниця в красі коду. Поїхали розбирати, з чого вона складається.

З чого складається гарний Python: чотири кити

У світі Python є негласний закон - «Readability counts», читабельність понад усе. Розберімо по шарах: від простого до цікавого.

Зрозумілі імена змінних і функцій замість хитрих трюків

Правило номер один: код має бути очевидним. Порівняй дві функції - роблять вони одне й те саме, повертають лише активних користувачів.

Добре: get_active_users(users). Ти ж навіть не знаючи Python уже зрозумів, що вона робить? «Поверни тих користувачів, у кого is_active». Імʼя само все розповіло.

Погано: g(u). А тут що? Що за g? Що за u? Що всередині - x.a? Загадка на загадці, згори ще одна загадка. Працює точнісінько так само, але прочитати - без шансів.

Підказки типів у Python: наліпки на коробках

У Python можна підписати, який «вантаж» заїжджає у функцію і що з неї виїжджає. Зветься це підказки типів .

Дивись: запис def process_items(items: list[str]) -> dict[str, int] читається як «функція бере список рядків і віддає словник, де ключі - рядки, а значення - числа». Без цих позначок коробки їдуть без наліпок. І гадай потім сам, що там усередині.

Що з того вайбкодеру? Агент за типами одразу бачить, як влаштовані дані, і не плутається. Бонусом: спеціальні інструменти-перевіряльники ловлять помилки ще до того, як ти натиснеш «запуск».

Коробки на складі: одні зі зрозумілими наліпками list str, інші без наліпок
Підказки типів - це наліпки на коробках. Без них доводиться розкривати кожну.

Обробка помилок: лови конкретні, а не «все підряд»

Щось завжди може зламатися, і Python дає це впіймати. Але між «як ловити» лежить прірва.

Погано - впіймати «все підряд» і мовчки проковтнути. Програма впала, а ти навіть не в курсі. Це як заклеїти скотчем лампочку «check engine»: блимати перестала, сперечатися не буду, а двигун тим часом тихо вмирає. Найпідступніший баг - той, який ти сховав від самого себе.

Добре - впіймати конкретну помилку і чесно сказати, що сталося: «файл налаштувань не знайдено за таким-то шляхом». І все. Ти бачиш причину, агент бачить причину, лагодите по суті, а не ворожите на кавовій гущі.

Пітонічний стиль замість «як в інших мовах»

У Python свій почерк - короткі читабельні конструкції, які заощаджують рядки й роблять код яснішим. Зубрити їх напамʼять не треба. Достатньо знати, що вони є, і просити агента ними користуватися:

  • f-рядки для тексту: значення вставляються прямо всередину рядка - гарно і без склеювання плюсами.
  • спискові включення (list comprehensions) для простих перетворень: «візьми імена всіх активних користувачів» - один рядок замість циклу на пʼять.
  • with для роботи з файлами: відкрив - і воно гарантовано закриється, навіть якщо щось завалиться по дорозі. Памʼятати про закриття руками не треба.
  • pathlib для шляхів до файлів - замість ручного склеювання рядків через слеші.
Пітонічний почерк
  • Зрозумілі імена: `get_active_users`, `total_price`, `is_active` - читаються як текст.
  • Типи проставлені: одразу ясно, що входить і що виходить.
  • Конкретні помилки ловляться і промовляються вголос.
  • Короткі пітонічні прийоми: f-рядки, `with`, спискові включення.
Не-пітонічний почерк
  • Загадкові імена в одну літеру: `g`, `u`, `x`, `tmp2`.
  • Жодних типів - здогадуйся сам, що всередині коробки.
  • «Голий except», який ховає будь-яку помилку з очей геть.
  • Простирадла ручних циклів там, де вистачило б одного рядка.

Приклад із життя: робочий, але потворний код

Ти просиш агента: «напиши скрипт, який читає список посилань із файлу і завантажує кожне». Він бадьоро видає робочий код. Запускаєш - половина посилань завантажилася, половина ні, а чому - могильна тиша: скрипт мовчки проковтнув помилки. Імена змінних - a, b, tmp. Минає тиждень, ти хочеш додати «а ще зберігай розмір файлу» - і агент, спотикаючись об цей код, трощить те, що щойно працювало.

У чому підступ? Код був робочий, але потворний. Без імен, без типів, з «голим except», який замів усі проблеми під килим.

А тепер дивись, як попросити з самого старту, щоб отримати гарний і придатний до розвитку результат:

Промпт - скопіюй і спробуй

Напиши на Python скрипт, який читає список посилань із файлу і завантажує кожне. Пиши код гарно і пітонічно:

  1. Давай функціям і змінним зрозумілі імена - за назвою має бути ясно, що робить функція. Жодних імен в одну літеру.
  2. Простав підказки типів у всіх функцій: що входить і що виходить.
  3. Помилки лови конкретно (наприклад, файл не знайдено або мережа впала) і друкуй зрозуміле повідомлення, що саме пішло не так. Жодного «голого except», який мовчки все проковтує.
  4. Використовуй пітонічні прийоми: f-рядки для тексту, with для роботи з файлами, pathlib для шляхів.
  5. Дотримуйся стандарту оформлення PEP 8.

Наприкінці коротко поясни простими словами, що робить кожна функція.

Мем: агент ловить усі помилки голим except і каже все добре, а позаду все горить
Класика жанру: «помилок немає» - бо ми їх просто сховали.

Часті помилки новачка у вайбкодингу

  • Радіти, що «працює», і не дивитися як. Робочий, але потворний код - це міна сповільненої дії. Розвивати його потім - чиста мука.
  • Не просити типи та імена. За замовчуванням агент легко видасть тобі g(u). Попросиш гарно - отримаєш гарно. Усе у твоїх руках.
  • Ховати помилки. «Голий except» робить баги невидимими. Завжди проси ловити конкретно і повідомляти про проблему.
  • Гнатися за «розумністю». У Python цінується не хитрий трюк в один рядок, а зрозумілість. Ясність бʼє показуху.
  • Не давати стандарт. Допиши в промпт «за PEP 8» - це загальноприйнятий стандарт оформлення Python, і агент одразу підтягне акуратність.
  • Вирощувати функції-монстри. Функція робить десять справ одразу? Її важко читати і тобі, і агенту. Проси різати на маленькі, зі зрозумілими іменами.

TL;DR - если коротко

  • Гарний Python = зрозумілий Python. Читаєш вголос - звучить майже як звичайна фраза.
  • Зрозумілі імена рулять. `get_active_users` кладе `g(u)` на лопатки.
  • Підказки типів (`list[str]`) - це наліпки на коробках. І тобі видно, що всередині, і агенту.
  • Лови конкретні помилки, а не «все підряд». Інакше баги ховаються, а агент лагодить наосліп.
  • Один рядок у промпті - «пиши пітонічно, з типами, за PEP 8» - і якість підскакує майже задарма.
  • Гарний код агент доповнює з першого заходу. Потворний - плутається і ламає сусіднє.

Пошук по вікі

Натисніть Esc для закриття

Введіть запит для миттєвого пошуку по всіх сторінках курсів та уроків.