![]() |
Глобальные функции или статические методы?
Что лучше использовать для простых утилитных функций(например для trim(s:string):string), как думаете? Глобальные функции или статические методы?
Добавлено через 1 минуту Я как то всегда был уверен, что правильно делать методы, пока не натолкнулся на библиотеку: https://github.com/as3/as3-utils И тут мне в голову закрались сомнения... |
Я, кстати, не знал про глобальные функции. Мельком глянул доку. Получается один файл - одна функция? Много функций, типа модуля, нельзя никак?
|
Походу вроде нелья(я пробовал - не получилось)... Хотя если нажать F4 во FlashDevelop например на функции getTimer(), открывается файл со всеми функциями из Package-а... Но наверное это ничего не значит.
|
Я обычно по смыслу смотрю. Если предполагается один метод, то нет смысла городить класс-хранитель. Но если это именно набор утилит, то может и есть смысл в этаком "швейцарском ноже". Однако опять же, если в проекте будет использоваться один метод из 20, наверное лучше вынести его в глобальную функцию и не импортить мертвый груз. Тут, как всегда, главное знать меру.
|
Дело хозяйское + здравый смысл.
|
Math.cos правильнее, чем cos.*
getTimer правильнее, чем Date.getTimer()* *По версии Adobe. |
Лучше статический класс. От него если что можно наследовать.
|
trim должен быть статическим методом StringUtils.
|
Вопрос стоял не конкретно в trim-е... А в целом...
А вот к примеру почему getTimer() - не метод а функция? Ну или getDefinitionByName? Скажем, а как должна быть реализована функция fitToRect(obj:DisplayObject,rect:Rectangle) - которая пропорционально скалит объект под заданный прямоугольник?(собственно при написании этой функции вопрос меня этот и посетил. К слову сказать, я таки сделал класс со статическим методом....) |
В 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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.