Pull to refresh

Comments 14

user1 = ['Вася', 23, 'Чебоксары'];

Вот это прям печаль, новички же часто усваивают вот такими примерами из обучения.
Писать в переменную суперкласса — дурной тон.

А почему? Использование переменных на уровне класса это иногда вполне нормальный способ дать понять, что это это глобальная переменная/константа как то связанная (по задумке программиста) с этим классом. Всяко лучше чем просто глобальная переменная.


И иногда удобней чем Singleton класс и прочие способы (которых много в C++, например).
Хотя python… ни области видимости, ни… (классы убогие).
python явно не лучший пример для демонстрации OOП.


Или имеется в виду засада с "User.user_count -= 1" в многопоточном приложении?
что так писать — это делать закладку на "она себя странно ведет" при переходе на multithread модель программы?


Хотя я согласен. общий уровень статьи "Сравнение: классы против функций" ужасен.

Константа да, но в каких случаях нужна переменная в классе, особенно тем, что только начал программировать?
Константа да, но в каких случаях нужна переменная в классе

Вам действительно не приходилось пользоваться глобальными переменными?
Вообще и никогда?


Переменная в классе python, это некий аналог static member в C++, Java.
Если учесть отсутствие нормальной инкапсуляции (по доступу) в python, то это фактически "подсказка разработчику того, что эта глобальная переменная по задумке связана с этим классом"


(И да. Не надо мне рассказывать про "инкапсуляцию" в python путем добавления "_" "__" к имени переменной. Это типичная "заплата" по принципу "на и отвяжись".)


особенно тем, что только начал программировать?

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


Существование глобальных переменных (и переменных класса), в частности, к этим базовым знаниям и относится.


Впрочем увы. Я все больше и больше вижу:


  • Магия "Spring Boot" и прочая магия.
  • Зачастую, ужасно корявые рецепты с stackoverflow, копируемые как есть.
  • Дурацкий споры насчет императивного и декларативного программирования. Как будто базовые принципы с 70-х годов поменялись и компьютеры стали императивными на уровне железа (как аналоговые компьютеры).
  • И т.п. и т.д.

Стоп. меня понесло…

Как работают «потроха» — это, на мой взгляд, основа с чего нужно начинать.
Иначе программирование превращается в «магию» и набор шаманских рецептов.


Не соглашусь. Если начать обучение с потрохов,
то новичок с очень высокой вероятностью ничего не поймет,
посчитает что это очень сложно и забьет на программирование.

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

Ну оочень спорное и без апелляционное заявление. По разному бывает. От конкретного разработчик азависит.

Иван, привет!

Я — тот самый автор статьи из Кода. Спасибо за подробный разбор и за полезную критику. Мы удалили ту статью и объяснили, почему мы это сделали: thecode.media/oop_battle

Сейчас мы работаем над новой версией этой статьи, и, если вы не против, возьмём часть примеров из вашего разбора. Как только появится новый материал — сразу скину ссылку на него в комментариях.
Спасибо. Конечно, берите код без вопросов.
Добрый день. Ощущение что Вы совершенно не представляете возможности функций в JavaScrit. Для ознакомления и подхода к этому очень тяжелому для мозгов снаряду github.com/MostlyAdequate/mostly-adequate-guide-ru

Из моего опыта. Если человек новичок то однозначно классы. Если опытный, то эмоционально придет к программированию функциями.
Почему про ООП вообще рассказывали на примере языков с очень слабым и неполноценным ООП? Нужна статья на примере Java или C#.

К сожалению, большинство "групп для программистов" не ставят целью научить программировать грамотно и красиво, а делают упор на привлечение внимания. А причина, думаю, и так понятна

«В третьих, любой программист скажет, что счетчик в классе — плохой пример. С этим подходом код зависит от глобального состояния, и совершенно неясно, как им управлять. » — а как вы предлагаете реализовать подсчет элементов, например, односвязного списка?
Причем тут односвязный список? Оригинальная статья на начинающих. Пользователей, которые вам нужны, складываете в обычнй список или словарь по айди и получаете длину через len().
ну так а внутри len что? Не запрос ли того самого счетчика? Начинающим неплохо бы знать такие базовые вещи, тем более самостоятельно писать списки учат на многих курсах.
Sign up to leave a comment.

Articles