Я несколько раз читал, что ключевое слово new
, лежащее где-нибудь в вашем коде, является запахом кода и затрудняет тестирование. Вот фрагмент кода, я работаю над:Как сделать данный код более надежным?
private void uploadTagsToCloudStorage(Optional<String> filename, String tags) throws IOException {
if (!filename.isPresent()) {
return;
}
GcsFilename gcsfilename = new GcsFilename(gcsBucketName, filename.get());
GcsFileOptions options =
new GcsFileOptions.Builder().mimeType("text/html").acl("public-read").build();
try (GcsOutputChannel writeChannel = gcsService.createOrReplace(gcsfilename, options)) {
PrintWriter gcswriter =
new PrintWriter(Channels.newWriter(writeChannel, StandardCharsets.UTF_8.toString()));
gcswriter.println(decode(tags));
gcswriter.flush();
writeChannel.waitForOutstandingWrites();
}
}
Я использую Guice впрыснуть gcsService
, но до сих пор я вижу много new
ключевых слов вокруг. Я страдаю от плохого дизайна? или такой сценарий неизбежен?
Использование 'new' в C++ обычно является запахом кода. Я не слышал этого руководства для Java. – NathanOliver
Не знаете, откуда эти другие люди получают информацию, но, конечно, использование ** нового ** имеет ** основное ** влияние на то, как легко проверить ваш код. Все, кто говорит что-то еще ... извините, ребята, где вы провели последние 10 лет. Просто указывая, что https://www.youtube.com/playlist?list=PLD0011D00849E1B79 (esp video 2) 10 лет назад ясно дал понять, почему «неразумное» использование «нового» полностью нарушает вашу способность выполнять модульные тесты. – GhostCat
@ user1803551 См. Https://www.youtube.com/playlist?list=PLD0011D00849E1B79 ... видео нет. 2 дает вам очень подробное представление о «новых проблемах». И обратите внимание: это похоже на 10-летнее знание. – GhostCat