-1
我看過好幾次了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
不知道那些其他人從哪裏獲取他們的信息,但當然使用** new **對於您的代碼的易測性有多大**影響。每個人都在說別的......抱歉的人們,你在過去的10年裏從哪裏度過的。只是指出https://www.youtube.com/playlist?list=PLD0011D00849E1B79(ESP視頻2)10年前說的很清楚爲什麼「不明智」的使用「新」,完全打破你做單元測試的能力。 – GhostCat
@ user1803551請參閱https://www.youtube.com/playlist?list=PLD0011D00849E1B79 ......視頻沒有。 2給你非常詳細的關於「新問題」的見解。並注意:這就像10年的知識。 – GhostCat