Как лучше избавиться от Notice: undefined index

Yaponchick

Новичок
weregod
Я уже с этим требованием 6 лет ;) И начинают они уже поднадоедать =)))
 

fixxxer

К.О.
Партнер клуба
а зубы 2 раза в день чистить не надоело? :)

не нравится писать ручками - ну сделай обертку по типу ArrayObject с нужными методами
 

Yaponchick

Новичок
fixxxer
Ответ из твоей лиги, больше всего и интересовал ) Спс ) пойду включу нотисы :D
 

С.

Продвинутый новичок
не нравится писать ручками - ну сделай обертку по типу ArrayObject с нужными методами
fixxxer, как ты в этой обертке определяешь, какой отсутствующий элемент надо просто инициализировать, а на какой надо выбросить ошибку?
 

fixxxer

К.О.
Партнер клуба
Я никак не определяю, я бы, если бы такая задача возникла, задумался, что у меня не так с архитектурой приложения.

Но вообще - очень просто, где нет значений по умолчанию, там ошибка.
 

Yaponchick

Новичок
Архитектура проста.

1) Дано 10000 минерала А, и 100 минерала С
2) Высчитываем требуемую руду чтобы покрыть минерал С, потом для минерала А
3) Группируем в массиве
4) Показываем в табличке

Хотите или нет, но пункт №3 повторяется и в других местах, т.к. паралельно высчитываются и другие данные.
 

Вурдалак

Продвинутый новичок
Pestilence, не думаешь же ты, что по такому странному описанию тебе кто-то поможет. Но по-любому это можно переписать нормально, хочешь ты этого или нет. А те, кто не в состоянии этого сделать, отрубают E_NOTICE и ищут оправдания.
 

Yaponchick

Новичок
Читал как-то на хабре пример истории, про кодера и умного программиста, так вот второй написал столько классов для булочной, что потом обновление занимало полгода ;)
Так и я вот не стремлюсь, всё сделать на классах =)
 

Вурдалак

Продвинутый новичок
А я где-то слышал такую пословицу: «заставь дурака богу молиться — он и лоб расшибёт».
 

WMix

герр M:)ller
Партнер клуба
Pestilence
прикольные у тя задачки. (правда я так и не понял что значит "Высчитываем требуемую руду чтобы покрыть минерал С").. а что за руду и минералы перебираете?
 

Вурдалак

Продвинутый новичок
Касаемо твоего кода: ты пытаешься сделать всё и сразу, отсюда и проблемы. Сразу в глаза бросается
PHP:
@$result[$material["oreTypeName"]]["timeRemaining"] = timeRemaining($result[$material["oreTypeName"]]["time"])
который явным образом зависит от time. Я так понимаю, что это сделано для вывода в виде HH:MM:SS? Этой функции место где-нибудь во View вообще (тут можно спорить, но то, что не в этой функции — факт). Объектов ты боишься, а ведь там можно было бы сделать соответствующий геттер, такого бы поля вообще бы нигде не было. Это касается и остального (batches, time ???).

PHP:
$volume = $material["oreVolume"] * $material["oreWeight"];
// ..
@$result[$material["oreTypeName"]]["oreVolume"] += $volume;
— это просто мусорный код. Да и вообще очень грязный подход к именам. из preBatch вообще нихера неясно что это. Что за префикс «ore» непонятно, что за магическая констана 5200 (Nokia?) — хер знает, «спросите автора кода».

Если ты хочешь придерживаться такой небрежности, то смело вырубай E_NOTICE — будь последовательным. Только твой код никогда не будет хорошим.

P.S. Ещё вопрос стиля, но я вот не люблю, когда написано $units или $batches. Х*й поймёшь — массив это или количество. Лучше писать $unitAmount, $unitCollection, $unitList.
 

Yaponchick

Новичок
Это для игры, Копатели обычно копают руду, она перерабатывается с определённым рейтом в минералы. Видов руд около 10, минералов около 12, при этом нет универсальной руды.
Из минералов делаются вещи с помощью рецептов, так вот моё творение, показывает сколько и чего копать надо чтобы сделать вещь ;)

Вурдалак, я не боюсь объектов, сам калькулятор и есть класс ;) Я просто не считаю что нужно делать ArrayGenerator для проверки дефолтности массива, хотя уже думаю что придётся. Код класса: http://pastie.org/private/f0v9wz4fpdpuqywqkxfg
OMGWTF, исходя из того, что это реверсивный кальулятор минералов, то units это кол-во, batches это кол-во пакетов руды, ибо руда не рефайнить 1к1, а 333 к (1000, 45, 11), 5200 это объём добываемой руды среднестатическим халком :D И вообще, придираться к системе СИ какого-либо предмета тупо, ибо везде свои ограничения, в ивке например: кубометры, кол-во, astronomical units, m, m/s и усё, дальше ты уже гост :D
 

Вложения

Yaponchick

Новичок
Ragazzo OMG, это eveonline, и я не делаю игру, я делаю калькулятор для игры ;) http://eveonline.com/ :) Если без шуток, то пиши в скайп fg_registrar, расскажу что да как ;)
 

WMix

герр M:)ller
Партнер клуба
тоже в зенде пишешь?... предположительно модель... странно что не унаследовал от Zend_Db_Table_Abstract, зачемто $s повторяешь, в строчку не проще ли?...
$this->db = Zend_Registry::get("db"); а это как раз потому что не Zend_Db_Table_Abstract... яб так написал $this->db = $this->getAdapter();. ну а принципе придраться некчему...
 

Yaponchick

Новичок
WMix увы, без MVC :) $s повторяю ибо мне так глазу приятней, да и гемора с табами меньше. =)
И этот класс как раз моделью и не можешь быть, эт очто-то между хелпером и контроллёером ;)
 

Вурдалак

Продвинутый новичок
хелпером и контроллёером ;)
Контролёр — это человек, который позорит безбилетников. А хелпер — это вообще универсальное название, для именования говнокода. Типа вот мы что-то сделали, хз как это называется, но он нам нужен, давайте называть его хелпером.
 

WMix

герр M:)ller
Партнер клуба
а модель это вообще позирующий человек...
хороший паттерн ))
как можно изучать немецкий язык если ich это я, ja это да, da это тут, а tut это делает...
 
Сверху