Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как лучше писать скрипт блоками IF или Функциями? я новичёк, нужна ваша помощь 
:(
    Опции темы
dillinja
  Дата 15.1.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.1.2010

Репутация: нет
Всего: нет



(сама новичёк) И так вопрос, пишу скрипт, дело в том что когда в скрипте стало уже на 100 кб, читать крайне не удобно код... 

Так вот вопрос как лучше использовать построение ?

Вот так:

Код

IF ($d == 1)
{
# ПЕРВОЕ ДЕЙСТВИЕ (код на 10 кб)
}
elsif ($d == 2)
{
# ВТОРОЕ ДЕЙСТВИЕ  (код на 6 кб)
}
elsif ($d == 3)
{
# ...... и т.д.
}


.... и так допустим до $d == 50

после такого подхода читать просто не удобно, подскажите может лучше использовать такой способ:

Код

if ($d == 1)
{
&odin;
}
elsif ($d == 2)
{
&dva;
}
elsif ($d == 3)
{
&tri;
}



Код

sub odin
{
# ПЕРВОЕ ДЕЙСТВИЕ (код на 10 кб)
}

sub dva
{
# ВТОРОЕ ДЕЙСТВИЕ  (код на 6 кб)
}


ну и так далее....

для меня для глаза лучше делать вторым способом, но как это сказывается на производительности и т.д. ?

как вы строите программы?


Это сообщение отредактировал(а) dillinja - 15.1.2010, 22:40
PM MAIL   Вверх
mvsgt
Дата 15.1.2010, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Лучше так, чтобы скрипт был покороче, так что функции это хорошо. Код на 10К вставлять в if не стоит.
Можно ещё сделать что-то типа 

Код

my %handlers;
$handlers{1} = sub {...};
...
$handlers{50} = sub {...};

$handlers{$d}->(lalala);



Только не забывайте, что в Вашем случае будет срабатывать closure (замыкания). 

Можно ещё разные придумать ухищрения, хорошо бы понять почему модулями не пользуетесь.
PM MAIL   Вверх
нуп
Дата 15.1.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



switach case  smile 
PM MAIL   Вверх
dillinja
Дата 15.1.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.1.2010

Репутация: нет
Всего: нет



спасибо! а то в основном у меня HTML код между блоками smile 
Буду знать теперь, в учебниках жаль этого не пишут(

Добавлено @ 19:18
Цитата(нуп @ 15.1.2010,  19:15)
switach case  smile

я вообще не поняла что ты сказал  smile 

Это сообщение отредактировал(а) dillinja - 15.1.2010, 22:40
PM MAIL   Вверх
sir_nuf_nuf
Дата 15.1.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



подозреваю разговор будет длинным =)

1) да, нужно разделять на функции.
есть такое правило - каждая функция должна помещаться на двух экранах (около 50 строк)

2) Еще нужно прочитать про  МОДУЛИ
и стараться разбивать программу на них


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
dillinja
  Дата 15.1.2010, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.1.2010

Репутация: нет
Всего: нет



Цитата(sir_nuf_nuf @ 15.1.2010,  19:25)
подозреваю разговор будет длинным =)

1) да, нужно разделять на функции.
есть такое правило - каждая функция должна помещаться на двух экранах (около 50 строк)

2) Еще нужно прочитать про  МОДУЛИ
и стараться разбивать программу на них

 smile  модули это здорово ))) но я такая блондинка, что у меня помимо модулей, ещё между блоками IF тексту по 10 кб ))))

Добавлено @ 19:40
и почему у вас у всех привычка давать ссылки на англоязычные ресурсы ? вы тем самым показываете что вы грамотеи и знаете английский ? , когда полно таких же ресурсов на РУССКОМ

Это сообщение отредактировал(а) dillinja - 15.1.2010, 22:42
PM MAIL   Вверх
sir_nuf_nuf
Дата 15.1.2010, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Цитата(dillinja @  15.1.2010,  19:39 Найти цитируемый пост)
и почему у вас у всех привычка давать ссылки на англоязычные ресурсы ? вы тем самым показываете что вы грамотеи и знаете английский ? , когда полно таких же ресурсов на РУССКОМ 


Если вы мне покажите хороший перевод официальной документации на русский - буду давать ее.
А так - perldoc.perl.org - это наиболее качественная и полная информация.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
mvsgt
  Дата 15.1.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Цитата(dillinja @  15.1.2010,  19:39 Найти цитируемый пост)
когда полно таких же ресурсов на РУССКОМ


Ссылочку можно? 

PS 

Кстати, а продолжение фотосессии в ванной будет? smile 
PM MAIL   Вверх
shamber
Дата 15.1.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



mvsgt
Цитата(mvsgt @  15.1.2010,  22:50 Найти цитируемый пост)
Кстати, а продолжение фотосессии в ванной будет? smile  

и тут Остапа понесло
PM MAIL Jabber   Вверх
gcc
Дата 16.1.2010, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



если программа действительно большгая, то вы пытаетесь изобрести велосипед, посмотрите MVC  Catalyst (и аналогичные ему, которые не такие большие)

http://www.lissyara.su/articles/freebsd/coding/mvc_catalyst/
http://dev.catalyst.perl.org/wiki/
http://search.cpan.org/~flora/Catalyst-Run...lib/Catalyst.pm

Это сообщение отредактировал(а) gcc - 16.1.2010, 12:34
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1053 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.