Мікробібліотека для роботи з конкатенацією в 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 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів