Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Глобальные функции или статические методы? (http://www.flasher.ru/forum/showthread.php?t=149190)

JackFromChaos 20.01.2011 15:54

Глобальные функции или статические методы?
 
Что лучше использовать для простых утилитных функций(например для trim(s:string):string), как думаете? Глобальные функции или статические методы?

Добавлено через 1 минуту
Я как то всегда был уверен, что правильно делать методы, пока не натолкнулся на библиотеку: https://github.com/as3/as3-utils
И тут мне в голову закрались сомнения...

proxiServer 20.01.2011 16:29

Я, кстати, не знал про глобальные функции. Мельком глянул доку. Получается один файл - одна функция? Много функций, типа модуля, нельзя никак?

JackFromChaos 20.01.2011 16:40

Походу вроде нелья(я пробовал - не получилось)... Хотя если нажать F4 во FlashDevelop например на функции getTimer(), открывается файл со всеми функциями из Package-а... Но наверное это ничего не значит.

Wolsh 20.01.2011 17:06

Я обычно по смыслу смотрю. Если предполагается один метод, то нет смысла городить класс-хранитель. Но если это именно набор утилит, то может и есть смысл в этаком "швейцарском ноже". Однако опять же, если в проекте будет использоваться один метод из 20, наверное лучше вынести его в глобальную функцию и не импортить мертвый груз. Тут, как всегда, главное знать меру.

Bgg 20.01.2011 23:10

Дело хозяйское + здравый смысл.

Psycho Tiger 20.01.2011 23:31

Math.cos правильнее, чем cos.*
getTimer правильнее, чем Date.getTimer()*

*По версии Adobe.

semenyakinVS 21.01.2011 00:14

Лучше статический класс. От него если что можно наследовать.

etc 21.01.2011 00:32

trim должен быть статическим методом StringUtils.

JackFromChaos 21.01.2011 00:43

Вопрос стоял не конкретно в trim-е... А в целом...
А вот к примеру почему getTimer() - не метод а функция? Ну или getDefinitionByName?
Скажем, а как должна быть реализована функция fitToRect(obj:DisplayObject,rect:Rectangle) - которая пропорционально скалит объект под заданный прямоугольник?(собственно при написании этой функции вопрос меня этот и посетил. К слову сказать, я таки сделал класс со статическим методом....)

etc 21.01.2011 00:49

В DisplayObjectUtils. Отдельно она может существовать только тогда, когда конкретика или похожие функции отсутствуют. Например, getDefinitionByName, работающий глобально, «соседей» не имеет. getTimer также не оперирует с какими-либо объектами, вещь в себе. Посему trim и fitToRect, работающие с конкретными объектами, должны быть статическими свойствами класса.


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.