Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Правила именования функций

Правила именования функций

Илья Лебедев (Devman) @ Python Junior Meetup №1

"Правильно называть сущности очень важно. Плохие названия превратят хороший код в плохой и нечитаемый. В докладе я расскажу о практиках, которые помогут начинающим разработчикам. Их легко применять на практике и они делают код заметно качественнее".

Moscow Python Meetup
PRO

February 09, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Как называть функции
    Илья Лебедев

    View Slide

  2. handleContent()
    visetiPolsovatel()
    f()

    View Slide

  3. Дисклеймер

    View Slide

  4. Зачем это всё
    • сделать код читаемее;
    • поселить контекст в код;
    • помогает найти проблемы декомпозиции;
    • нельзя просто "взять и прочитать код";
    • нельзя сказать "ну у меня работает и всё".

    View Slide

  5. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  6. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  7. • saveArticleToDatabase()
    • repo._pull_from_github()
    • user_banned()
    • has_account_binded()

    View Slide

  8. • saveArticleToDatabase()
    • repo._pull_from_github()
    • user_banned()
    • has_account_binded()

    View Slide

  9. • save_article_to_database()
    • repo._pull_from_github()
    • user_banned()
    • has_account_binded()

    View Slide

  10. • save_article_to_database()
    • repo._pull_from_github()
    • user_banned()
    • has_account_binded()

    View Slide

  11. • save_article_to_database()
    • repo.pull_from_github()
    • user_banned()
    • has_account_binded()

    View Slide

  12. • save_article_to_database()
    • repo.pull_from_github()
    • user_banned()
    • has_account_binded()

    View Slide

  13. • save_article_to_database()
    • repo.pull_from_github()
    • is_user_banned()
    • has_account_binded()

    View Slide

  14. • save_article_to_database()
    • repo.pull_from_github()
    • is_user_banned()
    • has_account_binded()

    View Slide

  15. • save_article_to_database()
    • repo.pull_from_github()
    • is_user_banned()
    • has_account_binded()

    View Slide

  16. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  17. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  18. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  19. • f()
    • sv()
    • send()

    View Slide

  20. • f()
    • sv()
    • send()

    View Slide

  21. • render_intro_slide()
    • sv()
    • send()

    View Slide

  22. • render_intro_slide()
    • sv()
    • send()

    View Slide

  23. • render_intro_slide()
    • save_user_to_database()
    • send()

    View Slide

  24. • render_intro_slide()
    • save_user_to_database()
    • send()

    View Slide

  25. • render_intro_slide()
    • save_user_to_database()
    • send_restore_password_email()

    View Slide

  26. • render_intro_slide()
    • save_user_to_database()
    • send_restore_password_email()

    View Slide

  27. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  28. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  29. build_roof()
    01.
    02.
    03.
    04.
    05.
    06.

    View Slide

  30. def build_tower(game):
    build_first_floor_walls()
    build_doors()
    build_roof()
    build_hatch()
    )
    01.
    02.
    03.
    04.
    05.
    06.

    View Slide

  31. def build_tower(game): # чтобы построить башню надо:
    build_first_floor_walls() # построить стены
    build_doors() # добавить двери
    build_roof() # построить крышу
    build_hatch() # прорезать люк
    )
    01.
    02.
    03.
    04.
    05.
    06.

    View Slide

  32. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  33. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные;
    • без антипаттернов;
    • без сокращений.

    View Slide

  34. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные (но не слишком);
    • без антипаттернов;
    • без сокращений.

    View Slide

  35. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные (но не слишком);
    • без антипаттернов;
    • без сокращений.

    View Slide

  36. • user()
    • get_movie_info()
    • handle()

    View Slide

  37. • user()
    • get_movie_info()
    • handle()

    View Slide

  38. • ban_user()
    • get_movie_info()
    • handle()

    View Slide

  39. • ban_user()
    • get_movie_info()
    • handle()

    View Slide

  40. • ban_user()
    • fetch_movie_info()
    • handle()

    View Slide

  41. • ban_user()
    • fetch_movie_info()
    • handle()

    View Slide

  42. • ban_user()
    • fetch_movie_info()
    • generate_report()

    View Slide

  43. • ban_user()
    • fetch_movie_info()
    • generate_report()

    View Slide

  44. Антипаттерны при названии функций
    • названия без глаголов;
    • начинать всё с get_ ;
    • только общие глаголы.

    View Slide

  45. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные (но не слишком);
    • без антипаттернов;
    • без сокращений.

    View Slide

  46. Какими должны быть названия функций
    • по стандартам;
    • по-английски;
    • объясняющие, что функция делает;
    • объясняющие, зачем функция это делает;
    • длинные (но не слишком);
    • без антипаттернов;
    • без сокращений.

    View Slide