Оператор WITH в Java

PHPUnit является стандартом, но это является иногда также подавляющим, поэтому если Вы находите его слишком сложным, проверяете phpt для запущения Вас. Это очень, очень легко к тестам записи в нем. Никакой brainer для любого программиста.

И отвечать на Ваш вопрос TDD - я не уверен, используется ли TDD широко в пространстве PHP. Я вижу, что быстрая разработка приложений и TDD несколько сталкиваются (строго, по моему скромному мнению). TDD требует, чтобы у Вас было полное изображение того, что Вы создаете, и Вы пишете свои тесты впереди и затем реализуете код для создания тестовой передачи.

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

32
задан Mike Clark 29 September 2009 в 20:38
поделиться

5 ответов

Нет. Лучшее, что вы можете сделать, когда выражение слишком длинное, - это назначить его локальной переменной с коротким именем и использовать {...} для создания области:

{
   TypeOfFoo it = foo; // foo could be any lengthy expression
   it.bar();
   it.reset(true);
   myvar = it.getName();
}
31
ответ дан 27 November 2019 в 20:14
поделиться

Возможно, самый близкий способ сделать это в 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 .

Однако желание сделать это обычно указывает на то, что объект не имеет достаточно богатого поведения. Попробуйте выполнить рефакторинг в вызываемый класс. Возможно, выбраться отсюда пытаются несколько классов.

17
ответ дан 27 November 2019 в 20:14
поделиться

Некоторые объекты позволяют "связывать" вызовы методов, что соответствует синтаксису, который вам нравится. Например, часто класс построителя возвращает себя из методов, поэтому вы можете сделать что-то вроде этого:

MyObject b = new MyBuilder().setFoo(5).setBar(6).setBaz("garply!").build();

Каждый набор ... метод возвращает this , чтобы можно было связать следующий вызов.

6
ответ дан 27 November 2019 в 20:14
поделиться

Нет. В 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();
4
ответ дан 27 November 2019 в 20:14
поделиться

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

3
ответ дан 27 November 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: