昨天写的代码被殷老师诟病了,因为太「丑陋」。
原来我的代码结构是这样的:
public class ColorRocognizer { ..... public static void main(String args[]) { class ColorX { public String colorName = ""; public String colorStr = ""; }//两个成员变量。 } ColorX[] c; c = new ColorX[32]; for (int i = 0; i < 32; i++) { c[i] = new ColorX();} c[0].colorName = "RED"; c[0].colorStr = "FF0000"; c[1].colorName = "GREEN"; c[1].colorStr = "00FF00"; c[2].colorName = "BLUE"; c[2].colorStr = "0000FF"; c[3].colorName = "GREY"; c[3].colorStr = "808080"; c[4].colorName = "WHITE"; c[4].colorStr = "FFFFFF"; ....... }
后面还有更多的c的初始化。
也就是class->function->inner-class。因为我发现好像class里面不能直接放一个class,必须在一个function里面才能再放一个class。
殷老师觉得这样写太丑了。
他建议这样:
public class ColorRecognizerByMrYin { private static final String [] colorName = {"RED","GREEN","BLUE","GREY","WHITE"}; private static final String [] colorStr = {"FF0000","00FF00","0000FF","808080","FFFFFF"}; public static void main(String args[]) { ColorX[] c; c = new ColorX[32]; for (int i = 0; i < 32; i++) { c[i] = new ColorX(colorName[i],colorStr[i]); } } } class ColorX { String colorName;//成员变量。 String colorStr; public ColorX(String name, String str){//构造函数 colorName = name;//在这里初始化。 colorStr = str; } }
把ColorX写在了ColorRecognizor的外面(是否可以写在另外一个文件里呢?那样可能更好)。
用构造函数初始化的方法,确实非常值得学习,这样写也好看多了。但是有个问题,就是颜色(KEY)和颜色值(VALUE)不容易用肉眼一一对应,万一出错,难以寻找。
明天再说。