Мікробібліотека для роботи з конкатенацією в Java
Отже, я Рома і я автоматизовую системні тести, сценарні моніторинги для будь-чого вже 10 років
І я вже десь 4 роки носив з собою шматок коду з проєкту в проєкт для роботи зі стрінгою. Мене постійно бісило в Java писати ассерт меседжі або гарні логи з лапками різними, табуляцією та в принципі конкатенувати то все ібо дуууже багато слів тре писати ну і часто провтикував закриваючі лапки ставити.
Почну з 8ї жави, в ній напевно швидше за все конкатенувати стрічки через StringBuilder, але його АПІ доволі масивний, щоб додати нове слово, речення або табуляцію окремим append("\n«) — фє.
StringBuilder strBuilder = new StringBuilder();
String targetMsg = strBuilder.append("ololo").append("\n").append("\"double quoted text\"").build();
І писати умовно таку «локшину» бісило, особливо коли текст приходить звідкись. Хотілось щось значно компактніше по свому інтерфейсу, ну і зробити так шоб це було мікро бібліотекою і будь-де собі підключати
Той самий білдіг стрічки тепер виглядатимо отак:
String targetMsg = sbb("ololo").n().dq("double quoted text").bld();
Тому тепер асерт меседжі або логі як тре робити більш логічно/читабельно можна робити, коли явно та простіше нову стрічку можна вказати
sbb().n()
.add("Unexpected response body:").n()
.add(targetResponse.asString()).n()
.add("Expected body type:").w().sQuoted(expectedClass.getSimpleName()).n()
.add("With fields:").n()
.add(expectedClass.getDeclaredFields())
.bld();
Під капотом це той самий StringBuilder ініціалізується потокобезпечно через внутрішній статичний клас
private SBB() {
this.strBuilder = new StringBuilder();
}
public static SBB sbb() { return LazyHolder.instance; }
private static class LazyHolder { private static final SBB instance = new SBB(); }
...
На проєктах де була 9+ Java — заміть StringBuilder та апендів була просто конкатенація через плюсик оскільки завдяки JEP 280 оновився механізм конкатенації через виклик invokedynamic
Тому я зроблю ще в рамках однієї ліби мультимодульний проєкт під Java 8 та умовно 9+
Був би вельми вдячний код ревʼю та вашим пропозиціям.
А також зробив мікро обгортку для Playwright на Java, шоб АПІ був як в Selenide.
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів