Обновить
25
0.1
ApeCoder@ApeCoder

Разработчик

Отправить сообщение
Имхо есть простые end-to-end тесты, которые могут помочь контроллировать целостность приложения. Они не так сложны в написании и поддержке, но разные простые вещи типа «изменили формат X но забыли поменать его разбор в Y» могут проверить.
Недавно пролетало про распространение приложений:
habrahabr.ru/company/eastbanctech/blog/236563/
— где еще такое возможно?

А в питоне и руби разве нет?
Я обычно не так категоричен — может облегчить.
Существует такая дополнительная функциональность в X которая облегчает тестирование Y, использующее X так как позволяет не тестировать его внутри Y
Дык я не говорю, что это снимет полностью проблему тестирования — я говорю что облегчит. (см ваше «не имеет никакого отношения к юнит-тестированию»)
В динамическом языке враппер, наверное, не нужен, надо только абстрагировать создание.
Можно в нем как раз она и есть. (Тот исходный это не мейлер, если чо, а код использующий мейлер — сам-то мейлер мы не тестируем)
Это уже будет другой код, а тот, исходный позволит.
Не является но может быть нужным к юнит тестированию имеет отношение — позволит писать тесты более удобно
Неважно. «Посылка почты в приложении X» может иметь свою специфику по сравнению с «посылкой почты вообще», каковую специфику полезно выделить в отдельный юнит.
Мы рассматриваем этот мейлер — каковой вызывается статическим методом. Это раз.
А два — ваш мейлер может оборачивать готовый с целью внести специфику приложения (например — добавляет стандартную для приложения подпись и т.д.)
А мне вспомнилось
Where there's muck, there's brass

Pretty much any job that you can get paid for includes dealing with one gnarly problem.
А как еще писать юнит тест на код, который использует этот мейлер?

см. hexagonal architecture
Чо-то тут не то
if ($user->isGuest) $user->register($user->email, $user->name);


Зачем какому-то пользователю регистрировать чье-то другое имя и email — наверное $users -> register($user)?

вот это уже полиморфизм — и это сильная сторона ООП =)

функциональщики говорят, что у них это тоже есть (type classes)

Способ, конечно же, есть

Итого: мы согласились с тем, что хорошего способа нет.
Как их сделать, чтоб при этом не получилось убогое подобие того, что и так есть в объектной системе PHP?
>>В чем проблема? Где костыли?

Нет способа хорошо выделять общий код типа:

foreach($modifiedObjects as &$object)
{
      if ($object -> validate())
      {
          $object -> save()
      }
      else
      {
          $objectsWithErrors -> add($object)
      }
}



Процедурный стиль, ООП стиль, функциональный стиль — это лишь инструменты. И не в выборе инструментов дело.

Иногда в них. Я сомневаюсь, что PHP хороший язык для функционального программирования (ленивые вычисления, классы типов, функции как значения первого класса есть?), а ООП в нем уже общее место.
Говорят, не очень хорошо с тачем на WPF + существует готовое окружение, с которым неплохо бы взаимодействовать

Информация

В рейтинге
4 759-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность