Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.02.2013, 13:36
Новичок на форуме
Отправить личное сообщение для hyp1k Посмотреть профиль Найти все сообщения от hyp1k
 
Регистрация: 30.11.2009
Сообщений: 7

Нужен совет по рефакторингу
На работе дали задание сделать раздел сайта, грубо говоря отчетник.
Сам сайт представляет из себя переходы индексам.пхп из разных папок соответствующих разделам сайта. И переходам по списку ссылок слева имеющим свой индекс &id_report=

А центральное наполнение <div id="content"> уже как хочешь, так и делай, на усмотрение разработчика. Я решил попробовать сделать центральное наполнение на ExtJS. Всего было 3 формы.
1. Одна форма рендерится прямо в центральный div там есть кнопки создать отчет, дублировать, редактировать, удалить. Есть список отчетов, есть фильтры чтобы проще было пользоваться списков.
2. Вторая форма появляется модальным окном при нажатии на создать, открыть или дублировать. Там заполняешь входные для отчета данные.
3. Третья форма появляется модальным окном отображает собсно отчет имеет кнопки сохранить и закрыть.

Написал код, все работает, но смущает что код вышел 1400 строк. Гулять по нему можно в notepad++ закрывая и открывая уровни alt+num / alt+shift+num. Внутри комменты, в принципе все понятно. Нажал alt + 4,3,2 увидел список форм и событий. Дальше открываешь нужную форму, в ней открываешь нужный метод, работаешь с ним.

Выглядит так:
https://docs.google.com/file/d/0B5Jf...it?usp=sharing

Код индекса.пхп раздела сайта вышел такой:
Код:
<?
include $_SERVER["DOCUMENT_ROOT"]."/orcl/include/auth.php";
include $_SERVER["DOCUMENT_ROOT"]."/orcl/include/top.php";
include $_SERVER["DOCUMENT_ROOT"]."/orcl/calculator/menu.php";
include $_SERVER["DOCUMENT_ROOT"]."/orcl/include/middle.php";
?>
<script language="javascript" type="text/javascript" charset="utf-8">
	<? if (isset($_REQUEST['login']))  print "var login = '".$_REQUEST['login']."';";?>
	<? if (isset($_REQUEST['tc_index']))  print "var tc_index = '".$_REQUEST['tc_index']."';";?>
	<? if (isset($zagolovok))  print "var title = '".$zagolovok."';";?>	
</script>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<link rel="stylesheet" type="text/css" href=".\js\ext-4.1.1a\resources\css\ext-all.css" />
<link rel="stylesheet" type="text/css" href=".\style\formula.css" />
<link rel="stylesheet" type="text/css" href=".\style\ext.css" />
<link rel="stylesheet" type="text/css" href=".\style\main.css" />
<script type="text/javascript" src=".\js\ext-4.1.1a\ext-all-debug.js"></script>
<script src=".\js\ext-4.1.1a\locale\ext-lang-ru.js"></script>
<script type="text/javascript" src=".\js\main.js"></script>
<div id="content" class="text"></div>
<? include $_SERVER["DOCUMENT_ROOT"]."/orcl/include/bot.php"; ?>
Кнопки и действия форм связываются событиями jquery

$(this.frmMain).bind('eventButtonShowDuplicateDialogClicked', function(){
				that.eventButtonShowDuplicateDialogClicked();								
			});
			$(this.frmCreateCalculation).bind('eventButtonMakeCalculationClicked', function(){
				that.eventButtonMakeCalculationClicked();								
			});


Вопросы к специалистам js:
1. После загрузки странички у меня есть ряд глобальных настроек которые есть в index.php (var title,tc_index ,login) и main.js (var globalConfig = { };)
Как лучше всего хранить эти глобальные вещи? Пихнуть в структуру типа синглтон или еще как?

2. Как лучше разносить формы по файлам js теперь? Делать класс формы и создавать форму копированием класса при нажатии на кнопку создать отчет?

3. При нажатии дублировать и редактировать отчета нужно пользоваться другими классами-наследниками основной формы для создания отчета или лучше методы duplicate и edit дописывать в основной класс формы?

4. Вообще как лучше нажал на кнопку создать отчет создалась форма. При закрытии ее стоит убить или спрятать, чтобы потом снова показать и не создавать новую?

5. Ну и в общем чего скажете, может это типичный случай, когда надо какую-нибудь либу использоать для организации кода? Есть некий стах что код дорастет в будущем до 2000 или 3000 строк и будет совсем неудобно.

Заранее спасибо всем отписавшимся.

Последний раз редактировалось hyp1k, 16.02.2013 в 13:39.
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2013, 13:53
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от hyp1k
eventButtonShowDuplicateDialogClicked
ужас. у вас все методы и свойства такие многословные?

Сообщение от hyp1k
Как лучше всего хранить эти глобальные вещи? Пихнуть в структуру типа синглтон или еще как?
угу, в неймспейс лучше все убрать

Сообщение от hyp1k
Делать класс формы и создавать форму копированием класса при нажатии на кнопку создать отчет?
один класс на все формы. каждая форма - экземпляр.

Сообщение от hyp1k
другими классами-наследниками основной формы для создания отчета или лучше методы duplicate и edit дописывать в основной класс формы?
балансируйте между богоподобным классом (один огромный класс на все задачи) и муравейником (куча ненужных классов для разных мелких задач)

Сообщение от hyp1k
Вообще как лучше нажал на кнопку создать отчет создалась форма. При закрытии ее стоит убить или спрятать, чтобы потом снова показать и не создавать новую?
экономичнее было бы прятать , конечно

Сообщение от hyp1k
5. Ну и в общем чего скажете, может это типичный случай, когда надо какую-нибудь либу использоать для организации кода? Есть некий стах что код дорастет в будущем до 2000 или 3000 строк и будет совсем неудобно.
Кучи библиотек для создания архитектуры - к примеру, Backbone

есть несколько библов от участников форума: Использование классов в JavaScript

(к примеру)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен совет по созданию эффекта к слайдеру. VadimVL Элементы интерфейса 2 12.02.2013 20:27
Нужен совет по поводу слайдера Artsemi Общие вопросы Javascript 0 25.01.2013 17:50
плохо работает jQuery ui dialog нужен совет flytracer jQuery 5 10.10.2011 19:25
Нужен совет по регистрации через аякс Garik AJAX и COMET 1 19.08.2011 23:31
Drag&Drop не пашет помогите, я нуб, нужен совет bookin Элементы интерфейса 0 16.09.2010 14:00