Форум 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=151724)

Alexmody 04.03.2011 13:47

Стилистика именования основных функций менеджера
 
Изучая различные менеджеры, обнаружил, что в основном есть два стилистических подхода, например менеджер Sounds статик класс/синглтон/экземпляр:

1.
Sounds.add(); - добавляет звук в список менеджера
Sounds.remove(); - удаляет звук из списка менеджера
Sounds.destroy(); - удаляет все звуки + очищает сам менеджер для GC т.е. он больше не используется в программе.
Sounds.pause(); - пауза всех звуков
Sounds.resume(); - восстановление проигрывания звуков.

2.
Sounds.addSound(); - добавляет звук в список менеджера
Sounds.removeSound(); - удаляет звук из списка менеджера
Sounds.removeAllSounds();
Sounds.pauseSounds();
Sounds.resumeSounds();

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

Второй более понятен для юзера-программиста, но есть некоторое нагромождение в именовании функции.

Т.е. в имени функции идет пояснение.
Логически, если менеджер называется Sounds (звуки), то соотв. функция должна работать с элементом звука и вызывая add можно понять, что операция идет над элементом менеджера. Но, иногда в менеджер приходится, добавлять не только звуки,но и что-то еще, тогда получается две функции add() и уже приходится конкретизировать: addSounds/addChannel. Тем не менее совпадения имен функций менеджера встречаются редко и можно называть функцию просто add.

Какую стилистику из (приведенных двух) именования функций менеджера вы применяете?

Кстати? также интересно, альтернативе destroy можно найти, remove, kill, clear, unregister :) и пр.
Хотя у меня remove ассоциируется с add, т.е. с добавлением/удалением одного элемента в менеджере. А destroy/kill ассоциируется уже с удалением всех элементов менеджера и собственно самого менеджера, т.е. подготовка его для GC и удаления из памяти.

КорДум 04.03.2011 14:04

На примере TweenLite: твины можно создавать двумя способами:
Код AS3:

new TweenLite()

и
Код AS3:

TweenLite.to()

Почему так сделано - загадка, второй способ более ресурсоемкий, так как вызывается статический метод, возвращающий экземпляр класса TweenLite.
И на примере TimelineLite: добавить твин на программный таймлайн можно через append() (если не ошибаюсь, форум без автокомплита). Можно назвать было appendTween его, но вот названо кратко.
Краткие названия более лаконичные (естественно, если их название отражает суть метода). На мой взгляд, второй способ именования методов чересчур чопорный, излишне даже. Так что, первый вариант лучше, да.
Представьте, если бы метод добавления элемента назывался вместо push каким-нибудь pushElementInThisVector ;)

Alexmody 04.03.2011 15:05

Когда изучал твин движки TweenMax и Tweener, тоже заметил, что наименование ф-ий в TweenMax по стилистике больше подходит к первому варианту, а в Tweener ко второму (напр. addTween, pauseAllTweens, removeTweens, removeAllTweens, resumeAllTweens, resumeTweens и пр.).

Wolsh 04.03.2011 15:43

Если не возникает двусмысленности, зачем тавтология. "Вася, как тебя зовут". Конечно, лаконичные лучше. Если не возникает двусмысленности)

shootkin 04.03.2011 16:43

Первый метод мало того что логичнее и красивее - он еще и экономнее. Длина названий переменных/методов/классов влияет на размер получаемой swf.

Hidest 04.03.2011 16:58

Я голосую за первый вариант :)

UPD: хотя было у меня некоторое отклонение:

Код AS3:

public function playSound(type:uint):void
 
public function playAmbienceSound():void



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

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