Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
грамотная последовательность операторов |

17.07.2008, 16:18
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
грамотная последовательность операторов
имеется такой шаблон, по которому составляется страница:
PHP код:
if ($step == 1){
}elseif($step == 2){
if($bank == 1){
}elseif($bank == 2){
}elseif($bank == 'custom'){
// ВЫВОД
}
}elseif($step == 3){
// ВЫВОД
}
Как несложно заметить - дублируется кусок кода, обозначенный как "ВЫВОД".
Говнокод украинский, это по сути html-страница, в которую вкраплён вот такой скелет из операторов.
Мне нужно удалить дублирование.
Пробовал вот так модифицировать последнее условие:
PHP код:
}elseif(($step == 2 && $bank == 'custom') || ($step == 3))
естественно это не работает.
Можно сделать функцию, которая бы выводила код в двух местах, но мне не хочется лепить сомнительную функцию в чужую, довольно крупную, систему. Которая к тому же, всего лишь выводит html с парой переменных.
У кого есть какие мысли по поводу оптимизации? 
|
|
|

17.07.2008, 16:22
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
Сообщение от Дикс
У кого есть какие мысли по поводу оптимизации? 
Попробуй вывести в отдельный файл этот вывод, если он повторяется, а потом инклудить в нужных местах. Имхо самый простой способ
в vivod.php - повторяющийся код.
или напиши функцию:
PHP код:
function 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..
|
|
|

17.07.2008, 16:49
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
эмм...ну именно оптимизировать операторы, то попробуй так:
PHP код:
<?php
if ($step == 1){
}elseif($step == 2 && $bank == 1){
}elseif($step == 2 && $bank == 2){
}elseif($step == 3 || $step == 2 && $bank == 'custom'){
// ВЫВОД
}
?>
не тестил, но по идее тоже самое что и твой код, только переделанный...
|
|
|

17.07.2008, 16:52
|
|
Постоянный
Регистрация: 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;
}
?>
|
|
|

17.07.2008, 16:56
|
|
Участник форума
Регистрация: 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;
}
}
|
|
|

18.07.2008, 06:22
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
ChaaK
новый файл для инклуда пяти строк - нерационально.
про функцию я в своём посте уже написал.
а с условиями - что ты собственно доиблся? дублирование то остаётся.
.:EnoT:.
там дохрена банков. мне кажется код станет совсем нечитабельным, если к каждому условию банка добавлять ещё и условие на step.
etc
вообще, честно говоря не понял, что и зачем ты написал.
про свитч я знаю.
-=Static=-
у тебя проблема вообще на месте осталась. надо же от дублирования ВЫВОД избавится.
Ладно, думаю тема себя исчерпала. Я запостил с мыслью о том, что вероятно имеются простые решения, которые мне неизвестны. Но убеждаюсь что таких решений нет.
Код и так там сложный и запутанный - не буду дальше его усложнять.
Всем спасибо.
|
|
|

18.07.2008, 08:43
|
|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
Код:
if($step == 1){
} elseif($step == 2 && $bank != 'custom') {
if($bank == 1) {
} elseif($bank == 2) {
}
} elseif(($step == 3) || ($step == 2 && $bank == 'custom')) {
// ВЫВОД
}
|
|
|

18.07.2008, 10:04
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
да, вот это действительно вменяемое решение.
тока бля лень мне уже опять на сайт лезть. но всё равно спасибо Номеру, держи репу
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|