Начала орхетектуры.
Метки с++ архитектура
Код:
const статус: ещё не готово... ок, для затравки: когда я был маленький, я любил глобалы(глобальные переменные), ага, а кто их не любил, когда был маленький? А также я хотел написать MMORPG. Но щас не про игру. так вот когда у меня в первый раз рухнул мой проЭкт, то пришлось собрать всю свою волю в кулак, чтобы найти ошибку(логическую), так как сам проЭкт был не очень маленький(~100файлов) и сходу найти ошибку не получилось. Ошибку я нашел, но для этого пришлось приобщиться к общей массе кодерков, в тот момент, когда на меня снизошло понимание, что: "КОМПИЛЯТОР НЕ ГАРАНТИРУЕТ НЕИЗМЕННЫЙ ПОРЯДОК ИНИЦИАЛИЗАЦИИ". Способ борьбы с этой хренью я нашел быстро: ПРАВИЛО ОБЩЕГО ГЛОБАЛА: Все глобальные переменные для ОБОСОБЛЕННОЙ подсистемы должны быть объявлены в одном файле! Блин, чай побери, я никогда до этого и после этого не слышал ничего по теме этого правила! Ну, кроме, нытья, про то как глобалы вредят здоровью и поэтому их следует избегать. Что безусловно есть правда! Но я о другом. После того случая я вот и стал задумываться Если у вас нет такого уровня в проектах, то это значит, что вы пишите код в одно лицо, никогда и никому его не показываете(бесполезно же) плюс вы еще гений, вам просто незачем это делать: вы с легкостью смогли бы писать код и в машинных инструкциях. Что же касается меня, то я не гений и в моем программировании такой уровень должен присутствовать, но и для гениев тоже, если они пишут код не в одно лицо. .... |
Всего комментариев 32
Комментарии
-
Цитата:Если глобальных вообще не должно быть, то почему они есть в любом классе (внутри класса)? Скажу по секрету, что они там для удобства.
Умный же поймет что их должно быть как можно меньше. Исходя из мной описанного Выше правила.
Цитата:Если глобальных вообще не должно быть, то почему они есть в любом классе (внутри класса)? Скажу по секрету, что они там для удобства.
Т.е. прдон но Вы несете какую - то ню.Запись от Avazart размещена 10.04.2019 в 21:02
Обновил(-а) Avazart 10.04.2019 в 21:05 -
Запись от Avazart размещена 10.04.2019 в 21:08 -
Но методы напрямую работают с переменными. Получается что эти переменные, которые локальны для класса, являются глобальными для его методов по умолчанию. Получаем связность методов со своим классом.
Запись от CoderHuligan размещена 11.04.2019 в 09:19 -
Глобально, это когда не ограничено никакими рамками. Члены класса являются частью этого класса и вне его не существуют. Ничего, что есть в классе не является глобальным по отношению ни к чему.
Методы класса видят поля класса потому, что и те и другие являются членами этого класса. Т.е. вещи находятся на одном уровне видимости друг для друга.Запись от Usaga размещена 11.04.2019 в 09:30 -
Между прочим я не говорю что это неправильно, я просто намекаю что люди скрыли в классе работу с глобалами, как это было раньше, когда программировали в процедурном стиле. Чем больше класс, тем лучше инкапсуляция, и это не бред, а реальность.
Запись от CoderHuligan размещена 11.04.2019 в 12:15 -
Запись от Usaga размещена 11.04.2019 в 12:55 -
Просто для вас класс это "вещь в себе", а для меня это просто имитация модульности, когда часть функций и структур сваливают вместе и этот агрегат называют классом. Ну, ладно этот разговор не для блога.
Запись от CoderHuligan размещена 11.04.2019 в 13:17 -
Запись от Usaga размещена 11.04.2019 в 13:18 -
Потому что его используют в виде модуля системы. Это обычное процедурное программирование, но усложнённое препонами в виде классов. Преодолением этих препон занимаются определённые фичи ООП - дружественные классы, синглтоны и пр. Получается - хотели уменьшить сложность программирования, а на самом деле всё только усложнили. Классы используются просто как хранилища процедур разложенных по функциональному признаку.
Хочу оговориться, что я против модульности и против классов, - я за компоненты.Запись от CoderHuligan размещена 11.04.2019 в 15:26 -
Это не процедурное программирование. Классы позволяют явно выделить в системе сущности предметной области, выделить и изолировать состояние этих сущностей, выделить связи между этими сущностями. Это существенно (чудовищно, я бы сказал) упрощает разработку. Ведь вы оперируете понятиями проектируемой системы самым явным образом. Видите, где что находится и как с чем взаимосвязано. В процедурном подходе такое если и достижимо, то фиг знает какой ценой.
Другое дело, что если вам не доводилось работать над большим проектом, то необходимость в таких вещах будет, конечно же, ниразу не очевидной.
Цитата:я за компоненты.Запись от Usaga размещена 12.04.2019 в 05:46 -
Процедурное это как раз самое простое, эффективное, понятное, легко поддерживаемое(если правильно используется))
Нет. Компонент это процедура, которая является общеразделяемой между другими компонентами, сущностью. Программа строится из таких кирпичиков постоянно наращивая слои абстракции, пока не останется всего один компонент под именем "Run!". Это потому, что компоненты строятся из других компонентов. Обьектники используют плоский подход: есть один уровень абстракции - классы. В компонентной программе эти абстракции постоянно растут, а поэтому, чем ближе к завершению программы, тем легче программировать. В ООП чем ближе к концу программы, тем сложнее программировать. Вот и вся разница.Запись от CoderHuligan размещена 12.04.2019 в 12:22 -
Запись от Usaga размещена 12.04.2019 в 16:17