PHPUnit является стандартом, но это является иногда также подавляющим, поэтому если Вы находите его слишком сложным, проверяете phpt для запущения Вас. Это очень, очень легко к тестам записи в нем. Никакой brainer для любого программиста.
И отвечать на Ваш вопрос TDD - я не уверен, используется ли TDD широко в пространстве PHP. Я вижу, что быстрая разработка приложений и TDD несколько сталкиваются (строго, по моему скромному мнению). TDD требует, чтобы у Вас было полное изображение того, что Вы создаете, и Вы пишете свои тесты впереди и затем реализуете код для создания тестовой передачи.
Так, например, то, что мы делаем вместо этого, должно записать много тестов, когда мы сделаны. Это - не всегда лучший подход, потому что Вы иногда заканчиваете с поддельными тестами, которые передают, но не действительно полезны, но по крайней мере это - что-то, на чем можно подробно остановиться. Внутренне мы продолжаем тесты и в основном пишем тест для каждой ошибки, которую мы находим. Это - то, как это становится более твердым.
Нет. Лучшее, что вы можете сделать, когда выражение слишком длинное, - это назначить его локальной переменной с коротким именем и использовать {...}
для создания области:
{
TypeOfFoo it = foo; // foo could be any lengthy expression
it.bar();
it.reset(true);
myvar = it.getName();
}
Возможно, самый близкий способ сделать это в Java - это идиома двойной скобки во время построения.
Foo foo = new Foo() {{
bar();
reset(true);
myVar = getName(); // Note though outer local variables must be final.
}};
В качестве альтернативы методы, возвращающие this
, могут быть связаны:
myName =
foo
.bar()
.reset(true)
.getName();
где методы bar
и reset
возвращают this
.
Однако желание сделать это обычно указывает на то, что объект не имеет достаточно богатого поведения. Попробуйте выполнить рефакторинг в вызываемый класс. Возможно, выбраться отсюда пытаются несколько классов.
Некоторые объекты позволяют "связывать" вызовы методов, что соответствует синтаксису, который вам нравится. Например, часто класс построителя возвращает себя из методов, поэтому вы можете сделать что-то вроде этого:
MyObject b = new MyBuilder().setFoo(5).setBar(6).setBaz("garply!").build();
Каждый набор ...
метод возвращает this
, чтобы можно было связать следующий вызов.
Нет. В Java есть политика избегания всего, что может снизить многословность.
Что ж, после написания этого мне пришло в голову, что ближайшим может быть статический импорт, например
package a.b.c.d;
public class Foo {
public static void bar() {
...
}
}
, и теперь вы можете сделать
package d.e.f;
import static a.b.c.d.Foo.*;
bar();
Наиболее близким к этому является статический импорт, который позволит вам вызывать статические методы без явного указания класса, в котором этот метод существует.