ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

грамотная последовательность операторов
  #1  
Старый 17.07.2008, 16:18
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию грамотная последовательность операторов

имеется такой шаблон, по которому составляется страница:
PHP код:
if ($step == 1){

}elseif(
$step == 2){
    if(
$bank == 1){

    }elseif(
$bank == 2){

    }elseif(
$bank == 'custom'){
    
// ВЫВОД
    
}
}elseif(
$step == 3){
// ВЫВОД

Как несложно заметить - дублируется кусок кода, обозначенный как "ВЫВОД".
Говнокод украинский, это по сути html-страница, в которую вкраплён вот такой скелет из операторов.
Мне нужно удалить дублирование.
Пробовал вот так модифицировать последнее условие:
PHP код:
}elseif(($step == && $bank == 'custom') || ($step == 3)) 
естественно это не работает.

Можно сделать функцию, которая бы выводила код в двух местах, но мне не хочется лепить сомнительную функцию в чужую, довольно крупную, систему. Которая к тому же, всего лишь выводит html с парой переменных.

У кого есть какие мысли по поводу оптимизации?
 
Ответить с цитированием

  #2  
Старый 17.07.2008, 16:22
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

Цитата:
Сообщение от Дикс  

У кого есть какие мысли по поводу оптимизации?
Попробуй вывести в отдельный файл этот вывод, если он повторяется, а потом инклудить в нужных местах. Имхо самый простой способ
PHP код:
include("vivod.php"); 
в vivod.php - повторяющийся код.

или напиши функцию:
PHP код:
function viv(){
        
//операторы вывода.

и куда нужно подставить:
PHP код:
viv(); 
2-ой способ будет более оптимальный, на мой взгляд.

А с условиями так:
PHP код:
switch($step){
    case 
1:
        
//step 1
    
break;
    case 
2:
        switch(
$bank){
            case 
1:
                
//bank 1
            
break;
            
            case 
2:
                
//bank 2
            
break;
            
            case 
"custom":
                
//вывод;
            
break;
        }
    case 
3:
        
//вывод
    
break;    


Последний раз редактировалось ChaaK; 17.07.2008 в 17:01..
 
Ответить с цитированием

  #3  
Старый 17.07.2008, 16:49
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

эмм...ну именно оптимизировать операторы, то попробуй так:
PHP код:
<?php
if ($step == 1){

}elseif(
$step == && $bank == 1){
    
}elseif(
$step == && $bank == 2){    
        
}elseif(
$step == || $step == && $bank == 'custom'){
// ВЫВОД
}   
?>
не тестил, но по идее тоже самое что и твой код, только переделанный...
 
Ответить с цитированием

  #4  
Старый 17.07.2008, 16:52
etc
Постоянный
Регистрация: 16.02.2008
Сообщений: 724
Провел на форуме:
1025839

Репутация: 581


По умолчанию

Какой изврат. Switch не пробовал юзать?
PHP код:
<?php
if ($i == 0) {
    echo 
"i equals 0";
} elseif (
$i == 1) {
    echo 
"i equals 1";
} elseif (
$i == 2) {
    echo 
"i equals 2";
}

switch (
$i) {
case 
0:
    echo 
"i equals 0";
    break;
case 
1:
    echo 
"i equals 1";
    break;
case 
2:
    echo 
"i equals 2";
    break;
}
?>
 
Ответить с цитированием

  #5  
Старый 17.07.2008, 16:56
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме:
347573

Репутация: 185
По умолчанию

Может какнить так??
PHP код:
function vivod($step$bank)
{
    switch(
$step)
    {
        case 
1: break;
        case 
2:
            switch(
$bank)
            {
                case 
1: break;
                case 
2: break;
                case 
"custom"/*ВЫВОД*/ break;
            }
        break;
        case 
3/*ВЫВОД*/ break;
    }

 
Ответить с цитированием

  #6  
Старый 18.07.2008, 06:22
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

ChaaK

новый файл для инклуда пяти строк - нерационально.
про функцию я в своём посте уже написал.
а с условиями - что ты собственно доиблся? дублирование то остаётся.

.:EnoT:.
там дохрена банков. мне кажется код станет совсем нечитабельным, если к каждому условию банка добавлять ещё и условие на step.

etc

вообще, честно говоря не понял, что и зачем ты написал.
про свитч я знаю.

-=Static=-

у тебя проблема вообще на месте осталась. надо же от дублирования ВЫВОД избавится.

Ладно, думаю тема себя исчерпала. Я запостил с мыслью о том, что вероятно имеются простые решения, которые мне неизвестны. Но убеждаюсь что таких решений нет.
Код и так там сложный и запутанный - не буду дальше его усложнять.
Всем спасибо.
 
Ответить с цитированием

  #7  
Старый 18.07.2008, 08:43
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Код:
if($step == 1){

} elseif($step == 2 && $bank != 'custom') {
	if($bank == 1) {

	} elseif($bank == 2) {

	}
} elseif(($step == 3) || ($step == 2 && $bank == 'custom')) {
	// ВЫВОД
}
 
Ответить с цитированием

  #8  
Старый 18.07.2008, 10:04
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

да, вот это действительно вменяемое решение.
тока бля лень мне уже опять на сайт лезть. но всё равно спасибо Номеру, держи репу
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базы данных мобильных операторов. GaR1k[Sp] Сотовый фрикинг 11 27.03.2010 08:56
Потенциальная уязвимость всех операторов bublebuble Сотовый фрикинг 1 17.07.2008 10:57
База операторов Куплю ;) MaSTeR GэN Мобильная связь, СМС - Покупка, продажа 0 23.06.2008 20:10
Windows XP Professional грамотная установка- залог будущего успеха. t0tal Авторские статьи 12 02.06.2008 18:12



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ