Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.01.2012, 00:27
booksmaster вне форума Посмотреть профиль Отправить личное сообщение для booksmaster Найти все сообщения от booksmaster
  № 1  
Ответить с цитированием
booksmaster

Регистрация: Jan 2012
Сообщений: 22
Question разбивка основного класса на модули

Как в Flex3 + AS3 вынести часть кода в отдельный модуль, а то все в одном слишком громоздко получается. Гуглю уже неделю, ничего по теме не нахожу.
Но не так, чтоб тольк остатические методы в отдельный класс, у меня таких почти нет, а чтоб именно методы основного класса с полной видимостью private variables and methods.

Старый 07.01.2012, 00:57
ProxyGreen вне форума Посмотреть профиль Отправить личное сообщение для ProxyGreen Найти все сообщения от ProxyGreen
  № 2  
Ответить с цитированием
ProxyGreen
 
Аватар для ProxyGreen

Регистрация: Jul 2011
Сообщений: 67
Эммм... Куски кода класса вынести в другой файл, но что-бы это в итоге был один класс, а не разные?

Старый 07.01.2012, 02:01
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 3  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
хрень какая-то на самом деле.

Если класс получается слишком громоздким то нужно подумать и поделить его на логические составляющие. Из каждой такой составляющей следует сделать отдельный класс, и наладить между ними взаимодействие.

Я такую деятельность провожу периодически в своих проектах. Обычно такого не случается, но и на старуху бывает проруха
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 07.01.2012, 02:09
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Что-то странное вы спрашиваете, раз у вас проект стал аж таким громоздким, то его наверняка можно поделить на класы.
__________________
Дети не должны знать о своих родителях

Старый 07.01.2012, 02:20
booksmaster вне форума Посмотреть профиль Отправить личное сообщение для booksmaster Найти все сообщения от booksmaster
  № 5  
Ответить с цитированием
booksmaster

Регистрация: Jan 2012
Сообщений: 22
Ну как-то так... можно и вынести в другой класс, но как-то так, чтоб видимость сохранить и чтоб не пришлось потом ко всем переменным дописывать имя класса вначале... Ну вот а ты сам как делаешь, чтоб не было много кода в основном классе?

Хорошо... Будут ли видны методы основного класса из методов дополнительнго? Если в основном классе есть небольшой метод showMessage, который совсем маленький и выносить его в отдельный класс не смысла, но я этот метод вызываю много где, в том числе в тех функциях, которые я хочу вынести в отдельный класс. Можно ли сделать так, чтоб showMessage вызывался как и раньше без приставок (чтоб код не править в миллионе мест) так буд-то он является методом нашего нового класса?


Последний раз редактировалось Zebestov; 07.01.2012 в 02:55.
Старый 07.01.2012, 03:23
ProxyGreen вне форума Посмотреть профиль Отправить личное сообщение для ProxyGreen Найти все сообщения от ProxyGreen
  № 6  
Ответить с цитированием
ProxyGreen
 
Аватар для ProxyGreen

Регистрация: Jul 2011
Сообщений: 67
Если вам нужно что-бы переменная была публичной, то и объявляйте её публичной. Остальные модификаторы доступа нужны что-бы инкапсулировать реализацию в рамках пакета, цепочки наследования или одного класса.

Что-касается приставок и миллионов правок, то FD есть "фича" что-бы заменять повторяющиеся участки кода на новый код.
Хотя всё это антипаттерн.

Старый 07.01.2012, 04:18
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я так догадываюсь, вы ищете что-то типа partial из C# - нет, такого нет. Но и писать такие большие классы тоже плохо, и не только потому, что с ними не удобно работать. Плохо еще и потому, что скорее всего такой класс выполняет много функций, которые лучше было бы разделить, с точки зрения планирования проекта в целом.
Самое худшее, что вы можете сделать - есть директива компилятора include она предназначена для того, чтобы во время компиляции собирать код из нескольких файлов. Проблема с ней в том, что ни одна среда разработки не найдет заincludеные исходники - работать так очень неудобно. Лучше, конечно, разбить класс на логические части. Очень часто решением проблемы становятся "состояния" - классы описывающие публичные, и не только методы класса, в зависимости от того, в каком состоянии находится объект - это позволяет сделать код более читаемым. Например, если у вас было:

Код AS3:
class Foo {
private var _flag:Boolean;
public function bar():void {
	if (_flag) { ... }
	else { ... }
}
public function baz():void { bar(); }
}
то это можно переделать в:
Код AS3:
class Foo {
private var _state:IState;
public function baz():void { _state.baz(); }
interface IState {
function baz():void;
}
. . .
class StateA implements IState {
public function baz():void { ... }
}
. . .
class StateB implements IState {
public function baz():void { ... }
}
Таким образом можно избавиться от очень ветвистой логики, повторяющегося кода и т.п.
__________________
Hell is the possibility of sanity

Старый 07.01.2012, 05:00
booksmaster вне форума Посмотреть профиль Отправить личное сообщение для booksmaster Найти все сообщения от booksmaster
  № 8  
Ответить с цитированием
booksmaster

Регистрация: Jan 2012
Сообщений: 22
Спасибо, wvxvw
Вот тот ответ, который я искал...

Старый 07.01.2012, 14:40
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 9  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Наследование? И делить код на функциональные части по их смыслу (взаимодействие с сервером, отрисовка, и т.д.) не подходит?

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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