Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Да. В каждый метод, где нужно перебрать символы, нужно учитывать ето поле. Если добавится еще поле, без рефакторинга структуры пришлось бы во все методы добавить еще одну проверку. И т.д. Это побочный эффект от сваливания хэш-записей и свойств строго определенной структуры в одну кучу.
> Так что мешало rank в отдельное поле вынести?
Недостаток опыта, желание запилить кое-как работающую хрень как можно быстрее. Собсна ето самописная структурка для генерации "слов" из латинских букв. В проекте есть и другие перлы (в т.ч. знаменитая "магическая кнопка/божественный объект").
Это побочный эффект объединения двух сущностей в одном объекте, и на мой взгляд он не имеет отношения к дискуссии.
В мапе точно так же можно было бы разместить ненужное поле, и всюду его игнорировать.
Реальную проблему этого кода ты описал сам:
>Недостаток опыта, желание запилить кое-как работающую хрень как можно быстрее
Или ты о "_total"? Так что мешало rank в отдельное поле вынести?
Да. В каждый метод, где нужно перебрать символы, нужно учитывать ето поле. Если добавится еще поле, без рефакторинга структуры пришлось бы во все методы добавить еще одну проверку. И т.д. Это побочный эффект от сваливания хэш-записей и свойств строго определенной структуры в одну кучу.
> Так что мешало rank в отдельное поле вынести?
Недостаток опыта, желание запилить кое-как работающую хрень как можно быстрее. Собсна ето самописная структурка для генерации "слов" из латинских букв. В проекте есть и другие перлы (в т.ч. знаменитая "магическая кнопка/божественный объект").
В мапе точно так же можно было бы разместить ненужное поле, и всюду его игнорировать.
Реальную проблему этого кода ты описал сам:
>Недостаток опыта, желание запилить кое-как работающую хрень как можно быстрее
Имеет. Какой бы ни был язык, хэш и объект - логически разные структуры данных.
К какому типу данных относится структура, описывающая все переменные, доступные в шаблоне веб приложения?
Ну вот есть страница, и есть её контекст (userName, items, итд) который нужно в ней отобразить
Относительно логики самого приложения - объект, ибо имеет разнородные данные
https://docs.djangoproject.com/en/3.2/topics/templates/#django.template.backends.base.Template. render
>If context is provided, it must be a dict. If it isn’t provided, the engine will render the template with an empty context.
И во фласке
https://flask.palletsprojects.com/en/1.1.x/templating/#context-processors
А вот в Ruby on Rails это объект
https://guides.rubyonrails.org/layouts_and_rendering.html
(см на строку "@books = Book.all")
Двум разным программистам будет "очевидно" разное.
Потому что никакой семантической разницы между хешем и объектом нет в скриптовых языках