![]() |
Когда кода много
Интересно как работают опытные программисты с большим колличеством кода, насколько быстро вы можете найти нужную функцию или изменить нужный параметр? делаете это на автомате или приходится напргать мозг? :rolleyes:
Просто допустим в 3д максе я могу отключить мозг и работать тупо на автомате. Конечно много завит от структуры кода, сейчас пытаюсь его оптимизировать под себя, но когда куча кода мой мозг работает как пентиум 1 :-D :SOS: |
Ответ: Когда кода много
Продвинутые IDE имеют такие полезные вещи, как "Поиск по всем файлам", "Закладки" и список всех функций/типов/констант/глобалов/локалов в текущем проекте.
Пользуемся IDEal или Protean, господа. |
Ответ: Когда кода много
не ну закладки то понятно.. я немного про другое
|
Ответ: Когда кода много
Большой код профи не допустит, он разобьет код на инклуды.
|
Ответ: Когда кода много
Инклуды же,ужаснейшая вещь,по крайней мере,мне. Намного удобнее будет пролистать код,или воспользоваться поиском,чем переключаться между инклудами. А еще,когда изменил чо-то, в зависимом от главного,инклуде,по привычке его и компилишь.Это так раздражает.
Может быть,и есть IDE,которые всегда запускают только установленный Main-код.Уверен в Protean это есть,чем я не пользуюсь. |
Ответ: Когда кода много
Зато можно создать инклуд с различными глобальными переменными, и с функциями. А потом в главном коде работать просто оболденно;)
|
Ответ: Когда кода много
Цитата:
Плюс если все правильно организовать,то работать с инклудами одно удовольствие....єкономит массу времени. |
Ответ: Когда кода много
Я потому и перешел с Блица на С++, что мой проект стал разрастаться как снежный ком, и я в нем утонул. Инклуды в блице очень ограничены!
В C++ есть отличные фичи которые позволяют делать большие пректы - - ООП - модульность (раздельная компиляция модулей и сборка линковщиком) - библиотеки... - и т.д и т.п. Одно только ООП решает половину проблем...) |
Ответ: Когда кода много
при реализации относительно большого проекта который требует написания большого объема кода главное структуризация и иерархия !! Сначало нужно выполнить структуризацию на уровне логики !!
Не нужно все сваливать все в один супер алгоритм под названием ИГРА (допустим мы про игры говорим, да) !! Нужно все разделить - боты, итемы, магия, статика и т.д. !! Сделать один глобальный (статический) объект/класс который будет управлять чем то одним !! Помимо управления он должен обмениватся инфой с другими такими же глобальными объектами как он !! Это сильно упрощяет дело !! Основной программе остается лишь сделать взаемодействие между ними !! Все будет работать как одно целое и независимо !! Еще плюс в том что это способствует переносимости кода в другие проекты и тд !! Что касается реалищации: Нужно стратся разделять по файлам, давать им внятные названия !! Мало отличающиеся части кода лучше вынести в функцию но добавить параметр !! Задавать константы а не хардкодить какоето значение в коде а потом искать его полчаса во всех местах !! Очень важно называть все своими именами (что содержит переменная, что выполняет функция) !! И тд.. И еще много чего что неудобно писать с телефона !! :) Это конечно мое имхо которое мне помогает !! У каждого свои подходы !! Делитесь !! |
Ответ: Когда кода много
Цитата:
|
Ответ: Когда кода много
О вкусах не спорят).
|
Ответ: Когда кода много
Цитата:
а вообще спасибо за инфу , насчет иерархии это да, наверно в ней вся проблема, чтобы найти нужный элемент приходится долго вспоминать в какой последовательности его искать реально чем больше разростается проект тем больше времени уходит на вспоминание где что лежит |
Ответ: Когда кода много
Когда делал РПГ на блице у меня были инклуды:
NPC - поведение персонажей и игрока Inventory - инфентарь и предметы Dialogs - диалоги персонажей Venicles - колёсные средства передвижения, залезание/вылезни, багажники Physics - всё что относится к загрузке физических объектов из собственного формата (и его загрузчик) и к регдоллу Math - математические функции типа теоремы Пифагора и т.д. Vegetation - всё что относится к росту травы/деревьев/плодов Pathfind - зачатки путенаха И ещё с пяток, что уже не вспомнить. Использовал Visual Blitz Справа список типов, функций, глобалов и констант. Сворачивание тел функций и типов. По-моему, удобно, вполне. |
Ответ: Когда кода много
ABTOMAT я кстати тож использую visual blitz удобная чтука
Вот только сейчас начал пользоваться списком справа , раньше приходилось листать на нужную функию вручную ) Плюс добавил основные точки с помощью labels : основные настройки загрузка уровня цикл обновление Действий renderworld список функций Кстати сворачивания типов у меня почемуто нету =\ Я пока использую инклуд с глобальными переменными и инклуд с главным меню, но похоже зря это сделал, т.к. теперь незнаю как сделать возвращение в главное меню из игры =\ |
Ответ: Когда кода много
Цитата:
|
Ответ: Когда кода много
На лекциях говорили, что одна функция, должна выполнять одну задачу, тогда легче будет исправлять ошибки, и следить за кодом. Собственно говоря, я всегда придерживаюсь трех правил:
1. Выносить всё возможное в функции. 2. Давать функциям, типам и переменным нормальные имена. 3. Если функция приняла окончательный вид, то выносить функцию в отдельный инклуд файл. И благодаря этим трем функциям, я легко через 10 минут могу разобраться в коде годовой давности. |
Ответ: Когда кода много
Цитата:
Я тоже стараюсь все что относится к одному типу действий выносить в функции и задавать им параметры, правда восновном так поступаю со сложными частями кода, чтобы было проще править либо с повторяющимися более 1 раза. |
Ответ: Когда кода много
А вы правда отличаете функциональное программирование от процедурного?
Думаю, что не все. Если у вас функции изменяют глобальные массивы и переменные это не "совсем" функции. Это процедуры. Функция это трансформация. Черный ящик с входами и одним выходом. Принимает аргументы - возвращает результат. Хорошая программа это несколько модулей с функциями по одной-две-три строчки каждая. Это - идеал. Если функции простые и каждая делает всего одну вещь - их легко комбинировать, что уменьшает количество кода в разы. |
Ответ: Когда кода много
ffinder спасибо .оч полезно . не знал этого
|
Ответ: Когда кода много
|
Ответ: Когда кода много
Цитата:
|
Ответ: Когда кода много
ааа ясно.
|
Ответ: Когда кода много
|
Ответ: Когда кода много
Цитата:
|
Ответ: Когда кода много
Цитата:
|
Ответ: Когда кода много
Цитата:
|
Ответ: Когда кода много
Давно уже б3д не использую из-за его убоговсти как языка.
Дома, BlitzMax, всё выношу в классы, никогда не работаю с глоабльными списками, лучше создать пару списков и хранить их в озу (это копейки памяти), и бегать по ним, чем иметь какой-нибудь убер список. Пишу код модульно, таким образом что вставить например между двумя связями двух классов, посреднеческий класс, например система распределяющая списки объектов на сектора, для оптимизации друг-друго зависемых просчётов, такое не состовляет никаких проблемм. Пишу обычно классы в стиле "интерфейсов", как таковой он может работать самостоятельно, даже если я пишу его в прототипе, это не составит труда его внедрить потом таким какой он есть в готовый продукт, только используя функции доступа к информации которая нужна для основной логики программы, или для визуализирования. Код нужно писать таким образом чтобы он был более структуризирован. Например в C# никогда не ссылаюсь к параметрам эллемента, всегда использую функцию set/get посредника. Такой подход всегда даст возможность удобно читать код, и делает сам класс, более как интерфейс отвечающий на запросы. К сожалению Blitz3D подобного не предастовляет, можно конечно извращаться с хэндлами там и т.п. но это уже быдло кодерство.. Ну и естественно стиль, придерживаюсь таких правил: все приватные и локальные переменные начинаются с "_", и маленькой буквы. В середине переменной никогда не использую "_", а использую каждую первую букву слова в имени переменной заглавной, например: _videoPreviewEventEx - локальная пременная относиться к ловле событий из элемента предпросмотра видео. Для функций и классов всегда использую первую как заглавную: OpenFile, и т.п. Имена дают о себе понять. Например есть у нас класс по работе с DirectShow фильтрами, и там есть класс для записи видео с камеры: Video.Capture.Start(_fileName); Что нибудь такого рода. |
Часовой пояс GMT +4, время: 06:53. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot