考虑一个常见的验证函数。
private static void check(int[][] m1, int[][] m2, char op) {
if (m1 == null || m2 == null) {
throw new NullPointerException("No input matrix should be null.");
}
/**
* Switch case was thought to be beneficial in case of future extensibility.
* http://en.wikipedia.org/wiki/Switch_statement#Advantages_and_disadvantages
*/
switch (op) {
case 'a' : if (m1.length != m2.length && m1[0].length != m2[0].length) throw new IllegalArgumentException("bla bla"); else break;
case 'm' : if (m1[0].length != m2.length) throw new IllegalArgumentException("bla bla"); else break;
}
}
在这里,如果通过了“a”,则验证确保矩阵适合乘法,如果通过了 m,则它适合加法。但是,我可以在这段代码中看到几个漏洞,例如: 1. 客户端需要知道作为参数传递的内容 2. 客户端可能会传入错误的字符。全局常量或枚举是我可能的解决方案。有没有更好/更常见的方法来解决这个问题?谢谢,