Измените имя вашей переменной $this->attachments
на другое
. У класса, который можно отправить по почте, уже есть свойство $attachments
, которое вы перезаписываете.
Безусловно один из самых интересных подходов, я когда-либо видел планирование реалистично, является основанным на доказательстве Планированием, которое является частью выпуска FogCreek FogBugz 6.0. Посмотрите сообщение в блоге Joel, связанное выше для резюме и некоторых примеров.
Я нашел, что оценка времени получит Вас до сих пор. Interuptions с другими задачами, непредвиденными обстоятельствами или влияниями проекта неизбежно изменит Ваши периоды времени и если бы Вы были постоянно перезадницам, то Вы потратили бы впустую много времени, справляясь, когда Вы могли разрабатывать.
Таким образом для нас здесь, мы даем начальную оценку на основе опыта к решению в течение времени (мы не используем модель, я не нашел тот, который работает достаточно хорошо в нашей среде), но не судите наш KPIs против него, и при этом мы не гарантируем бизнес, что этот крайний срок будет поражен. Наш подход к разработке здесь является в основном реактивным, и это, кажется, заполняет требования бизнеса нас очень хорошо.
Я оцениваю со своими товарищами по команде многократно, пока мы не достигаем согласия. Несомненно, мы делаем ошибки, но мы не вычисляем "скоростной" фактор explicitely, а скорее, мы используем собранный опыт в наших новых дебатах оценки.
Если оценка прорвалась, попытка определить, было ли это просто случайно (среда повредилась, некоторые однажды от хитрой ошибки и т.д.), или если было что-то, что Вы не определили.
Если esimate был слишком большим, определите то, чем случалось так, что Вы думали, собирался занять много времени и разработать, почему это не сделало.
Выполнение, что достаточно, надо надеяться, поможет разработчикам в их оценках.
Например, если dev думает, что запись тестов для контроллера собирается взять возрасты, и затем это заканчивает тем, что заняло меньше времени, чем он вообразил, следующая оценка, которую Вы делаете для контроллера подобного объема, можно иметь это в виду.
когда оценки выключены, существует почти всегда явная причина, которая приводит к извлеченному уроку. Недавние из памяти:
пользовательский интерфейс принял функциональность.NET, которая не существовала (способность вставить новую строку и отредактировать ее встроенный в GridView); извлеченный урок должен проверить функциональность выбранных классов прежде, чем передать оценке. Эта ошибка стоила недели.
процесс ftp предположил, что FtpWebRequest мог говорить с безопасным FTP-сервером банка; оказалось, что существует известная ошибка с этим классом, если FTP-сервер возвращает что-нибудь кроме обратной косой черты для текущего каталога; извлеченный урок должен погуглить для 'ошибки' и 'проблемы' с именем класса, не только 'учебного руководства' и 'примера', чтобы удостовериться, что нет никаких потаенных 'глюков'. Эта ошибка стоила трех дней.
эти уроки входят в документ "контрольного списка" Оценки и Разработки Проекта, таким образом, о них не забудут для следующего проекта