Форум программистов, компьютерный форум, киберфорум
Наши страницы
XLAT
Войти
Регистрация
Восстановить пароль
Рейтинг: 1.00. Голосов: 1.

Начала орхетектуры.

Запись от XLAT размещена 04.04.2019 в 11:58
Обновил(-а) XLAT 04.04.2019 в 15:15

Код:
const статус: ещё не готово...
[Про глобалы.]

ок, для затравки:
когда я был маленький,
я любил глобалы(глобальные переменные), ага, а кто их не любил, когда был маленький?
А также я хотел написать MMORPG. Но щас не про игру.

так вот когда у меня в первый раз рухнул мой проЭкт, то пришлось собрать всю свою волю в кулак,
чтобы найти ошибку(логическую), так как сам проЭкт был не очень маленький(~100файлов) и сходу найти ошибку не получилось.

Ошибку я нашел, но для этого
пришлось приобщиться к общей массе кодерков, в тот момент, когда на меня снизошло понимание, что:
"КОМПИЛЯТОР НЕ ГАРАНТИРУЕТ НЕИЗМЕННЫЙ ПОРЯДОК ИНИЦИАЛИЗАЦИИ".

Способ борьбы с этой хренью я нашел быстро:
ПРАВИЛО ОБЩЕГО ГЛОБАЛА:
Все глобальные переменные для ОБОСОБЛЕННОЙ подсистемы должны быть объявлены в одном файле!

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

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

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

Что же касается меня, то я не гений и в моем программировании такой уровень должен присутствовать,
но и для гениев тоже, если они пишут код не в одно лицо.

....
Размещено в Об орхитектуре...
Просмотров 573 Комментарии 32
Всего комментариев 32
Комментарии
  1. Старый комментарий
    Аватар для Avazart
    Цитата:
    Если глобальных вообще не должно быть, то почему они есть в любом классе (внутри класса)? Скажу по секрету, что они там для удобства.
    Прдон но эта формулировка для тупых.
    Умный же поймет что их должно быть как можно меньше. Исходя из мной описанного Выше правила.

    Цитата:
    Если глобальных вообще не должно быть, то почему они есть в любом классе (внутри класса)? Скажу по секрету, что они там для удобства.
    Они не будут глобальными, а будут локальными т.е. ограниченными пространством класса и временем жизни объекта.

    Т.е. прдон но Вы несете какую - то ню.
    Запись от Avazart размещена 10.04.2019 в 21:02 Avazart на форуме
    Обновил(-а) Avazart 10.04.2019 в 21:05
  2. Старый комментарий
    Аватар для Avazart
    Цитата:
    я не настолько принципиален, поэтому всегда предпочту писать:
    И о том же говорю, Вы еще тот извращенец )))
    Запись от Avazart размещена 10.04.2019 в 21:08 Avazart на форуме
  3. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Они не будут глобальными, а будут локальными т.е. ограниченными пространством класса и временем жизни объекта.
    Но методы напрямую работают с переменными. Получается что эти переменные, которые локальны для класса, являются глобальными для его методов по умолчанию. Получаем связность методов со своим классом.
    Запись от CoderHuligan размещена 11.04.2019 в 09:19 CoderHuligan вне форума
  4. Старый комментарий
    Аватар для Usaga
    Глобально, это когда не ограничено никакими рамками. Члены класса являются частью этого класса и вне его не существуют. Ничего, что есть в классе не является глобальным по отношению ни к чему.

    Методы класса видят поля класса потому, что и те и другие являются членами этого класса. Т.е. вещи находятся на одном уровне видимости друг для друга.
    Запись от Usaga размещена 11.04.2019 в 09:30 Usaga вне форума
  5. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Методы класса видят поля класса потому, что и те и другие являются членами этого класса. Т.е. вещи находятся на одном уровне видимости друг для друга.
    Между прочим я не говорю что это неправильно, я просто намекаю что люди скрыли в классе работу с глобалами, как это было раньше, когда программировали в процедурном стиле. Чем больше класс, тем лучше инкапсуляция, и это не бред, а реальность.
    Запись от CoderHuligan размещена 11.04.2019 в 12:15 CoderHuligan вне форума
  6. Старый комментарий
    Аватар для Usaga
    То, что в классе не "глобалы". Это - состояние класса, точнее каждого экземпляра этого класса. И оно закрыто от внешнего мира (если не используются модификаторы public). Так, что никакой "глобальностью" тут и не пахнет.
    Запись от Usaga размещена 11.04.2019 в 12:55 Usaga вне форума
  7. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    То, что в классе не "глобалы". Это - состояние класса, точнее каждого экземпляра этого класса. И оно закрыто от внешнего мира (если не используются модификаторы public). Так, что никакой "глобальностью" тут и не пахнет.
    Просто для вас класс это "вещь в себе", а для меня это просто имитация модульности, когда часть функций и структур сваливают вместе и этот агрегат называют классом. Ну, ладно этот разговор не для блога.
    Запись от CoderHuligan размещена 11.04.2019 в 13:17 CoderHuligan вне форума
  8. Старый комментарий
    Аватар для Usaga
    Да ладно, тут всё равно тихо и никого нет. Можно и побеседовать. Тем более, что по теме.

    Почему вы считаете класс имитацией модульности?
    Запись от Usaga размещена 11.04.2019 в 13:18 Usaga вне форума
  9. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Почему вы считаете класс имитацией модульности?
    Потому что его используют в виде модуля системы. Это обычное процедурное программирование, но усложнённое препонами в виде классов. Преодолением этих препон занимаются определённые фичи ООП - дружественные классы, синглтоны и пр. Получается - хотели уменьшить сложность программирования, а на самом деле всё только усложнили. Классы используются просто как хранилища процедур разложенных по функциональному признаку.
    Хочу оговориться, что я против модульности и против классов, - я за компоненты.
    Запись от CoderHuligan размещена 11.04.2019 в 15:26 CoderHuligan вне форума
  10. Старый комментарий
    Аватар для Usaga
    Это не процедурное программирование. Классы позволяют явно выделить в системе сущности предметной области, выделить и изолировать состояние этих сущностей, выделить связи между этими сущностями. Это существенно (чудовищно, я бы сказал) упрощает разработку. Ведь вы оперируете понятиями проектируемой системы самым явным образом. Видите, где что находится и как с чем взаимосвязано. В процедурном подходе такое если и достижимо, то фиг знает какой ценой.

    Другое дело, что если вам не доводилось работать над большим проектом, то необходимость в таких вещах будет, конечно же, ниразу не очевидной.

    Цитата:
    я за компоненты.
    А это не про тоже самое?
    Запись от Usaga размещена 12.04.2019 в 05:46 Usaga вне форума
  11. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    В процедурном подходе такое если и достижимо, то фиг знает какой ценой.
    Процедурное это как раз самое простое, эффективное, понятное, легко поддерживаемое(если правильно используется))

    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    А это не про тоже самое?
    Нет. Компонент это процедура, которая является общеразделяемой между другими компонентами, сущностью. Программа строится из таких кирпичиков постоянно наращивая слои абстракции, пока не останется всего один компонент под именем "Run!". Это потому, что компоненты строятся из других компонентов. Обьектники используют плоский подход: есть один уровень абстракции - классы. В компонентной программе эти абстракции постоянно растут, а поэтому, чем ближе к завершению программы, тем легче программировать. В ООП чем ближе к концу программы, тем сложнее программировать. Вот и вся разница.
    Запись от CoderHuligan размещена 12.04.2019 в 12:22 CoderHuligan вне форума
  12. Старый комментарий
    Аватар для Usaga
    Процедурное самое простое, когда задача простая, а проект - маленький. С ростом проекта потребность в больших абстракциях растёт чуть ли не экспоненциально.

    Я не увидел в вашем описании "компоненты" никаких принципиальных отличий от объектов.
    Запись от Usaga размещена 12.04.2019 в 16:17 Usaga вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.