|
12.11.2010, 22:35
|
#16
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Когда кода много
На лекциях говорили, что одна функция, должна выполнять одну задачу, тогда легче будет исправлять ошибки, и следить за кодом. Собственно говоря, я всегда придерживаюсь трех правил:
1. Выносить всё возможное в функции.
2. Давать функциям, типам и переменным нормальные имена.
3. Если функция приняла окончательный вид, то выносить функцию в отдельный инклуд файл.
И благодаря этим трем функциям, я легко через 10 минут могу разобраться в коде годовой давности.
|
(Offline)
|
|
Эти 9 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
|
|
12.11.2010, 22:51
|
#17
|
ПроЭктировщик
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: Когда кода много
Сообщение от Hurrit
На лекциях говорили, что одна функция, должна выполнять одну задачу, тогда легче будет исправлять ошибки, и следить за кодом. Собственно говоря, я всегда придерживаюсь трех правил:
1. Выносить всё возможное в функции.
2. Давать функциям, типам и переменным нормальные имена.
3. Если функция приняла окончательный вид, то выносить функцию в отдельный инклуд файл.
И благодаря этим трем функциям, я легко через 10 минут могу разобраться в коде годовой давности.
|
+
Я тоже стараюсь все что относится к одному типу действий выносить в функции и задавать им параметры, правда восновном так поступаю со сложными частями кода, чтобы было проще править либо с повторяющимися более 1 раза.
|
(Offline)
|
|
12.11.2010, 23:11
|
#18
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Когда кода много
А вы правда отличаете функциональное программирование от процедурного?
Думаю, что не все.
Если у вас функции изменяют глобальные массивы и переменные это не "совсем" функции. Это процедуры.
Функция это трансформация. Черный ящик с входами и одним выходом. Принимает аргументы - возвращает результат.
Хорошая программа это несколько модулей с функциями по одной-две-три строчки каждая. Это - идеал.
Если функции простые и каждая делает всего одну вещь - их легко комбинировать, что уменьшает количество кода в разы.
|
(Offline)
|
|
Эти 7 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
|
|
12.11.2010, 23:15
|
#19
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Когда кода много
ffinder спасибо .оч полезно . не знал этого
|
(Offline)
|
|
12.11.2010, 23:34
|
#20
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Когда кода много
Пора разбавить картинками все вышесказанное!
Ы. Управление всеми наземными единицами. Открыл одну функцию для наглядности, справа почти все бб'шники. Удачи в больших проектах!
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
|
|
13.11.2010, 01:11
|
#21
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Когда кода много
Сообщение от pepel
это как?
|
Ну в блице классов как таковых нет !! Да и класс не обезательно нужен !! я имел ввиду что высший по иерархии объект должен управлять теми кто ниже !! Но никак не наоборот !!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.11.2010, 01:13
|
#22
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Когда кода много
ааа ясно.
|
(Offline)
|
|
13.11.2010, 17:44
|
#23
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Когда кода много
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
13.11.2010, 22:22
|
#24
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Когда кода много
Сообщение от ffinder
А вы правда отличаете функциональное программирование от процедурного?
Думаю, что не все.
Если у вас функции изменяют глобальные массивы и переменные это не "совсем" функции. Это процедуры.
Функция это трансформация. Черный ящик с входами и одним выходом. Принимает аргументы - возвращает результат.
Хорошая программа это несколько модулей с функциями по одной-две-три строчки каждая. Это - идеал.
Если функции простые и каждая делает всего одну вещь - их легко комбинировать, что уменьшает количество кода в разы.
|
Кстати, функция - это вроде бы модуль, который возвращает значение, а процедура - модуль, который не возвращает, так?
|
(Offline)
|
|
14.11.2010, 01:37
|
#25
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Когда кода много
Сообщение от Hurrit
Кстати, функция - это вроде бы модуль, который возвращает значение, а процедура - модуль, который не возвращает, так?
|
Ни процедура ни функция не являются модулем. Остальное верно.
|
(Offline)
|
|
16.11.2010, 20:00
|
#26
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Когда кода много
Сообщение от ffinder
Ни процедура ни функция не являются модулем. Остальное верно.
|
Не знал как по-другому назвать их обеих, разве что подпрограммами.
|
(Offline)
|
|
17.11.2010, 13:35
|
#27
|
.
Регистрация: 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 за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:26.
|