Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 12.11.2010, 22:35   #16
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Когда кода много

На лекциях говорили, что одна функция, должна выполнять одну задачу, тогда легче будет исправлять ошибки, и следить за кодом. Собственно говоря, я всегда придерживаюсь трех правил:
1. Выносить всё возможное в функции.
2. Давать функциям, типам и переменным нормальные имена.
3. Если функция приняла окончательный вид, то выносить функцию в отдельный инклуд файл.
И благодаря этим трем функциям, я легко через 10 минут могу разобраться в коде годовой давности.
(Offline)
 
Ответить с цитированием
Эти 9 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
ABTOMAT (12.11.2010), Android (16.11.2010), ARA (12.11.2010), Crayzi (12.11.2010), den (14.11.2010), Gector (12.11.2010), pepel (12.11.2010), Randomize (13.11.2010), Reks888 (13.11.2010)
Старый 12.11.2010, 22:51   #17
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Когда кода много

Сообщение от Hurrit Посмотреть сообщение
На лекциях говорили, что одна функция, должна выполнять одну задачу, тогда легче будет исправлять ошибки, и следить за кодом. Собственно говоря, я всегда придерживаюсь трех правил:
1. Выносить всё возможное в функции.
2. Давать функциям, типам и переменным нормальные имена.
3. Если функция приняла окончательный вид, то выносить функцию в отдельный инклуд файл.
И благодаря этим трем функциям, я легко через 10 минут могу разобраться в коде годовой давности.
+
Я тоже стараюсь все что относится к одному типу действий выносить в функции и задавать им параметры, правда восновном так поступаю со сложными частями кода, чтобы было проще править либо с повторяющимися более 1 раза.
(Offline)
 
Ответить с цитированием
Старый 12.11.2010, 23:11   #18
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Когда кода много

А вы правда отличаете функциональное программирование от процедурного?
Думаю, что не все.

Если у вас функции изменяют глобальные массивы и переменные это не "совсем" функции. Это процедуры.

Функция это трансформация. Черный ящик с входами и одним выходом. Принимает аргументы - возвращает результат.

Хорошая программа это несколько модулей с функциями по одной-две-три строчки каждая. Это - идеал.

Если функции простые и каждая делает всего одну вещь - их легко комбинировать, что уменьшает количество кода в разы.
(Offline)
 
Ответить с цитированием
Эти 7 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
ABTOMAT (12.11.2010), Артем Валерьевич (28.01.2011), Crayzi (13.11.2010), Hurrit (12.11.2010), is.SarCasm (17.11.2010), Mr_F_ (13.11.2010), pepel (12.11.2010)
Старый 12.11.2010, 23:15   #19
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Когда кода много

ffinder спасибо .оч полезно . не знал этого
(Offline)
 
Ответить с цитированием
Старый 12.11.2010, 23:34   #20
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Когда кода много

Пора разбавить картинками все вышесказанное!
Ы. Управление всеми наземными единицами. Открыл одну функцию для наглядности, справа почти все бб'шники. Удачи в больших проектах!
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
pepel (12.11.2010), Program23 (13.11.2010), Reks888 (12.11.2010), St_AnGer (12.11.2010)
Старый 13.11.2010, 01:11   #21
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Когда кода много

Сообщение от pepel Посмотреть сообщение
это как?
Ну в блице классов как таковых нет !! Да и класс не обезательно нужен !! я имел ввиду что высший по иерархии объект должен управлять теми кто ниже !! Но никак не наоборот !!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pepel (13.11.2010)
Старый 13.11.2010, 01:13   #22
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Когда кода много

ааа ясно.
(Offline)
 
Ответить с цитированием
Старый 13.11.2010, 17:44   #23
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Когда кода много

http://www.insidecpp.ru/antipatterns/spaghetti/
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ABTOMAT (17.11.2010), is.SarCasm (17.11.2010), moka (17.11.2010), pepel (13.11.2010), Reks888 (13.11.2010)
Старый 13.11.2010, 22:22   #24
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Когда кода много

Сообщение от ffinder Посмотреть сообщение
А вы правда отличаете функциональное программирование от процедурного?
Думаю, что не все.

Если у вас функции изменяют глобальные массивы и переменные это не "совсем" функции. Это процедуры.

Функция это трансформация. Черный ящик с входами и одним выходом. Принимает аргументы - возвращает результат.

Хорошая программа это несколько модулей с функциями по одной-две-три строчки каждая. Это - идеал.

Если функции простые и каждая делает всего одну вещь - их легко комбинировать, что уменьшает количество кода в разы.
Кстати, функция - это вроде бы модуль, который возвращает значение, а процедура - модуль, который не возвращает, так?
(Offline)
 
Ответить с цитированием
Старый 14.11.2010, 01:37   #25
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Когда кода много

Сообщение от Hurrit Посмотреть сообщение
Кстати, функция - это вроде бы модуль, который возвращает значение, а процедура - модуль, который не возвращает, так?
Ни процедура ни функция не являются модулем. Остальное верно.
(Offline)
 
Ответить с цитированием
Старый 16.11.2010, 20:00   #26
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Когда кода много

Сообщение от ffinder Посмотреть сообщение
Ни процедура ни функция не являются модулем. Остальное верно.
Не знал как по-другому назвать их обеих, разве что подпрограммами.
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 13:35   #27
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Когда кода много

Давно уже б3д не использую из-за его убоговсти как языка.
Дома, BlitzMax, всё выношу в классы, никогда не работаю с глоабльными списками, лучше создать пару списков и хранить их в озу (это копейки памяти), и бегать по ним, чем иметь какой-нибудь убер список.
Пишу код модульно, таким образом что вставить например между двумя связями двух классов, посреднеческий класс, например система распределяющая списки объектов на сектора, для оптимизации друг-друго зависемых просчётов, такое не состовляет никаких проблемм.
Пишу обычно классы в стиле "интерфейсов", как таковой он может работать самостоятельно, даже если я пишу его в прототипе, это не составит труда его внедрить потом таким какой он есть в готовый продукт, только используя функции доступа к информации которая нужна для основной логики программы, или для визуализирования.
Код нужно писать таким образом чтобы он был более структуризирован.
Например в C# никогда не ссылаюсь к параметрам эллемента, всегда использую функцию set/get посредника. Такой подход всегда даст возможность удобно читать код, и делает сам класс, более как интерфейс отвечающий на запросы.
К сожалению Blitz3D подобного не предастовляет, можно конечно извращаться с хэндлами там и т.п. но это уже быдло кодерство..
Ну и естественно стиль, придерживаюсь таких правил:
все приватные и локальные переменные начинаются с "_", и маленькой буквы. В середине переменной никогда не использую "_", а использую каждую первую букву слова в имени переменной заглавной, например: _videoPreviewEventEx - локальная пременная относиться к ловле событий из элемента предпросмотра видео.
Для функций и классов всегда использую первую как заглавную: OpenFile, и т.п.
Имена дают о себе понять.
Например есть у нас класс по работе с DirectShow фильтрами, и там есть класс для записи видео с камеры: Video.Capture.Start(_fileName);
Что нибудь такого рода.
(Offline)
 
Ответить с цитированием
Эти 9 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
ABTOMAT (17.11.2010), Arles (17.11.2010), baton4ik (17.11.2010), Hurrit (18.11.2010), is.SarCasm (17.11.2010), Morganolla (17.11.2010), pepel (29.12.2010), Reks888 (17.11.2010), St_AnGer (17.11.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:26.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com