"Бородатый" код. Как оптимизировать?

  • Автор темы Микаэль
  • Дата начала

Микаэль

Guest
"Бородатый" код. Как оптимизировать?

Один программист сказал мне, что у меня очень "бородатый" код. К примеру задача - проверить входящие данные:
PHP:
If (isset(переменная1) && isset(переменная2) ... && isset(переменнаяN)) { // Лажово. Особенно когда добавляются новые переменные постоянно, приходится их здесь добавлять, получается громоздко
	If(!empty(переменная1) && !empty(переменная2) ... && !empty(переменнаяN)) { // Опять дублирование всего
		// Проверка переменных на "адектватность" :)
		If(переменная1 один является числом) { 
			Проверяем её; // Учитываем что тут тоже много условий
		} else {
			GoodBye(номер ошибки);
		}
		If(переменная2 является текстом) {
			Обрезаем, проверяем и т.д.
		} else {
			GoodBye(номер ошибки);
		}
		If (и т.д. и т.п.) {
		} else {
			Good_Bye(номер ошибки);
		}

		наконец
	} else {
		Ошибка(некоторые поля - пустые);
	}
} else {
	Ошибка(не все поля заполнены);
}
Короче получается куча If'ов, вложенных друг в друга. Может кто подскажет решение? Как писать, чтобы не было кучи if'ов? Чтоб всё это гибко было, изменяемо, чтоб были возможности для апгрейда?
 

SiMM

Новичок
Начни с того, что попробуй объяснить разницу между "некоторые поля пустые" и "не все поля заполнены" ;)
А вообще, однотипные операции обычно выносят в циклы ;)
 

Микаэль

Guest
это делается в целях "фишки", чтобы потом юзера отправить на страницу и там написать "Вы не заполнили поля".
Про циклы подробнее расскажи...
 

-=KPOT=-

Новичок
обзывай заполняемые поля так что бы можно в цикле обойти и все (типа field1,field2,field3 ...)
 

SiMM

Новичок
Автор оригинала: Микаэль
это делается в целях "фишки", чтобы потом юзера отправить на страницу и там написать "Вы не заполнили поля".
По моему, ты не понял вопроса. Объясни мне с точки зрения логики разницу между фразой "некоторые поля пусты" и фразой "не все поля заполнены".
Про циклы подробнее расскажи...
[m]for[/m], [m]foreach[/m], [m]while[/m] - вообще-то это азы программирования, и прежде чем им заниматься - не плохо бы их изучить - Структуры управления
 

SiMM

Новичок
Автор оригинала: -=KPOT=-
обзывай заполняемые поля так что бы можно в цикле обойти и все (типа field1,field2,field3 ...)
Их всегда можно обойти - вовсе необязательно так извращаться с названиями.
 

Микаэль

Guest
2 Simm: лажанулся :). С точки зрения логики одно и тоже. С циклами знаком. Покажи код который выполняет ту же задачу, но при этом он оптимизированней.
2 Крот: field1,2,3 , кстати эту фишку можно заюзать где-нибудь. спасибо.
 

Фанат

oncle terrible
Команда форума
Микаэль
Слушай то, что тебе говорят умные дяди, а не ламеры типа Крота.
НЕ НУЖНО эту фишку заюзывать.
И без нее все прекрасно в цикле обходится.

Вот мне пеняют, что я грубый. Ну так как до вашего головного моззга достучаться-то? Если обычными словами до вас не доходит?

-~{}~ 28.12.04 12:24:

по поводу примера кода - тебе симм дал ссылки.
нажимать умеешь?

Если ты не в состоянии перебрать в цикле массив - тебе рано коды оптимизировать. тебе надо узнать базовый синтаксис языка.
 

SiMM

Новичок
PHP:
$err = '';
foreach (array('varname1' => 'error1', ..., 'varnameN' => 'errorN') as $k=>$v)
  if (empty($$k)) $err .= $v.'<br>';
if ($err) die($err);
Не совсем то, что тебе нужно - но идея примерно такая - остальное развивай сам.
 

Фанат

oncle terrible
Команда форума
чтобы потом юзера отправить на страницу и там написать "Вы не заполнили поля".
обычно юзера никуда не направляют, а поля выводят здесь же, ЗАПОЛНЕННЫЕ.
чтобы человеку не пришлось заполнять из-за одного пропущенного поля все сначала
 

Микаэль

Guest
2 Simm: в идею врубился. Я раньше foreach вообще стороной обходил, не понимал что это штука очень полезная. Вот примерно такое решение я и искал. Классно всё, гибко, если идею развить вообще хорошо.
2 Фанат: поверь до мозгов хорошо доходит, когда пример кода показывают. Хотя иногда нужно стукнуть разок-другой ;) :)
 
Сверху