Статья Учимся писать чистый код на Python

Какое-то время покодив, я понял, что большинство программ, встречающихся в сети написаны очень грязно. Да и сам я не так сильно заморачивался с этим делом.
Давайте разберёмся, что значит грязно?

Для начала такой пример из обычной жизни - вы написали ручкой на бумаге какой-то текст и другой человек его взял почитать. Ага, но не тут-то было! Почерк настолько корявый, что на своём родном языке ничего не понятно.

text.jpg


Выходит один и тот же текст может как легко читаться, так и вызывать затруднения в восприятии. И конечно легко и приятно будет читать написанное в чётком исполнении.
Вот и в языке Python есть свод правил хорошего тона, стилей написания, и называется он
Разберём на примере кода из этого топика.

Анализатор кода показал огромное количество предупреждений.

pey.png


А теперь разберёмся, где можно посмотреть эти ошибки, и примеры неправильных записей кода.
Я пользовался разными программами для написания кода - Notepad++, SublimeText, Atom, Pycharm, IDLE, онлайн интерпретаторами. И в конечном счёте я остановился на таком замечательном инструменте как Pycharm. Я не сразу оценил его по достоинству, но теперь большинство всех своих программ делаю именно в нём.

В Pycharm также есть запуск кода пошагово, что помогает отследить как программа работает. Ещё имеется встроенный дебаггер, что делает отладку кода более простой и куча всего ещё. Но сегодня речь пойдёт о его другом достоинстве, а именно автоматической проверкой на лету чистоты кода.

Смотрим, что же пайчарму не понравилось?

osh.png


Благо всё подробно описывается и исправить не составит труда. На этом кусочке кода видны следующие косяки:

1) Функция agi_at начинается сразу за предыдущей функцией и не имеет разрыва, что смешивает обе функции в общую кашу. PEP8 подсказывает, что перед функцией нужно оставлять 2 пустых линии.
2) Ещё в agi_at () перед скобками разрыв, а ведь скобки относятся к функции, поэтому отделять их неразумно.
3) Условные комментарии (идут после знака решётки), имеют 1 пробел, а нужно 2. Опять же, чтобы не так всё сливалось.
4) В 53-й строке нет пробелов после запятых.
5) В 54 строке Damage_contr написана с большой буквы, нужно с маленькой

Исправляем данные недочёты и получается чистый, легко читаемый код

os2.png


Есть множество других ошибок, многие предупреждения повторяются. После успешного исправления всех предупреждений, мы увидим такое окошко :)

os3.png


Когда постоянно пишешь в пейчарм, и исправляешь все косяки сразу, то потом автоматически начинаешь писать чисто, приучаясь к единому стилю.
Желаю всем кодерам, успешного написания своих программ, и конечно же в грамотно выполненном стиле.

До новых встреч в следующих статьях! :cool:
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
кхм, ну.... мягко говоря, тему ты не раскрыл, и даже не приоткрыл

В теме есть ссылка на PEP8, не переписывать же весь свод стилей оттуда. В рабочем порядке, в процессе написания, быстро начинаешь понимать что к чему.
То есть всё просто - пишешь программу с любым анализатором PEP8, по-моему тут всё ясно.

Единственное, что дельное можно добавить, что если у вас есть чужой длинный корявый код, то "причесать" его в соответствии с PIP8 вручную будет утомительно. Для автоматического форматирования существует модуль.
Ставим его командой pip install --upgrade autopep8
И любую программу форматируем набрав в терминале autopep8 --in-place --aggressive --aggressive <filename>
Пользовался для старых программ этой штуковиной, работает неплохо.
 
  • Нравится
Реакции: товарищ Сухов

mrOkey

Well-known member
14.11.2017
967
975
BIT
0
ссылка на PEP8, не переписывать же весь свод стилей оттуда.
Тогда так и назови тему - форматирование кода.

Если ты считаешь, что чистый код - это количество отступов, то у меня для тебя плохие новости.

но я видел твои другие темы, очевидно ты не знаком с этим понятием, а так же с таким понятием как рефакторинг, архитектура, ооап, ооп, solid, gof. Так что просто пиши свои скриптики, а не пиши то о чём не имеешь представления.

для справки
Роберт Мартин "Чистый код".
Для начала тебе хватит.
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
ты не знаком с этим понятием, а так же с таким понятием как рефакторинг, архитектура, ооап, ооп, solid, gof
Полностью согласен, только это уже куда более серьёзный уровень, а здесь речь шла о стандарте PEP8. И любой более высокий уровень, начинается с более простых вещей.
Если вы опытный программист, было бы хорошо, чтобы написали какую-нибудь статью, а лучше не одну. Вот это было бы полезно.
 

mrOkey

Well-known member
14.11.2017
967
975
BIT
0
Полностью согласен, только это уже куда более серьёзный уровень, а здесь речь шла о стандарте PEP8. И любой более высокий уровень, начинается с более простых вещей.
Если вы опытный программист, было бы хорошо, чтобы написали какую-нибудь статью, а лучше не одну. Вот это было бы полезно.
Я писал тут
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Я видел ваши статьи, но они не имеет никаких примеров кодов. Сейчас специально пересмотрел ваши посты.
Вот кстати выдержка из вашей статьи:

***
Шаг 10. Поделись с другим.

Хотя в сфере иб это не принято, но возможно вы положите начало новому поколению. Делитесь с ближним. Есть хорошее высказывание на латыне: «Docendo discimus», что означает «Обучая, учимся»
***

Я так и делаю - стараюсь чем-то поделиться, тем более не сложно заметить. что по сравнению с другими языками программирования, материалов по Python на этом форуме очень мало.
 

Tayler

Green Team
08.07.2017
40
46
BIT
2
Полностью согласен, только это уже куда более серьёзный уровень, а здесь речь шла о стандарте PEP8. И любой более высокий уровень, начинается с более простых вещей.
Если вы опытный программист, было бы хорошо, чтобы написали какую-нибудь статью, а лучше не одну. Вот это было бы полезно.

Все что ты описал, можно сделать нажатием кнопок ctrl-shift-r в ST3.
Так что поддерживаю mr0key, пользы от статьи не увидел.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!