如何精简Java中多段重复Audio音频播放代码 优化为易读的通用实现
优化思路
- 提取唯一可变的音频文件名作为通用方法入参,把重复的播放逻辑抽成公共私有方法
- 移除无意义的
char[][] gameBoard参数,你现有代码里两个方法都没有用到这个参数 - 用Java 7+支持的多异常合并捕获简化异常处理代码
- 保留原有对外调用入口,不需要修改其他地方的调用逻辑即可无缝切换
优化后的完整代码
import javax.sound.sampled.*; import java.io.IOException; public class Sound { // 原玩家音效对外调用入口 public static int playerSound() { return playSound("Spieler x.wav"); } // 原电脑音效对外调用入口 public static int computerSound() { return playSound("Bot.wav"); } // 通用音频播放核心方法 private static int playSound(String audioFileName) { try (AudioInputStream inStream = AudioSystem.getAudioInputStream(Sound.class.getResourceAsStream(audioFileName))) { Clip clip = AudioSystem.getClip(); clip.open(inStream); clip.start(); } catch (LineUnavailableException | UnsupportedAudioFileException | IOException e) { System.out.println(audioFileName + e.getMessage()); e.printStackTrace(); } return 0; } }
优化说明
- 后续新增其他音效只需要新增一行对外调用方法,传入对应音频文件名即可,不需要重复复制播放逻辑
- 播放逻辑统一维护,后续要调整播放规则(比如加音量控制、播放完成回调)只需要修改
playSound一处即可 - 整体代码行数减少60%以上,可读性和可维护性大幅提升
- 如果业务确实需要用到
gameBoard参数,只需要给通用playSound方法加上该入参,原有对外方法调用时传入即可
内容的提问来源于stack exchange,提问作者Don_Angel
相关产品推荐
相关产品推荐

