给结对伙伴叶露婷的代码复审:
1.变量命名存在些许问题,尽量不要使用拼音,如果需要按照中文意思命名可以采用英语。
1 public void dictionarystore() 2 { 3 String temp; 4 count jishu; 5 6 foreach (Object o in str) 7 { 8 temp = o.ToString().ToLower(); 9 if (table.ContainsKey(temp)) 10 { 11 jishu = table[temp]; 12 jishu.setnum(); 13 if (jishu.getdanci().CompareTo(o.ToString()) < 0) 14 { 15 jishu.setdanci(o.ToString()); 16 } 17 } 18 else 19 { 20 jishu = new count(o.ToString(), 1); 21 table.Add(temp, jishu); 22 } 23 } 24 25 26 } 27 }
2.使用了过多的类,但是这些类的存在没有很大的实际意义,本来只有两百行的代码分成这么多个类有些繁琐,可以将一些功能比较薄弱的类归并到其他的类中实现其功能。比如下面这代码的功能是获取文件中的内容,完全可以将内容的获取和分割放在一个类中,这应该是属于同一种处理,也是同一个对象应该提供的功能。不要将一些杂乱的功能归为一个类。面向对象不是简单的分割,而是有原因的。合理确定对象,这样在以后写大型程序的时候能够更易看懂更好管理。
1 public void dirscanner(String dir) 2 { 3 String[] allfile = null; 4 String[] alldirectory = null; 5 if (!Directory.Exists(dir) && !File.Exists(dir)) 6 { 7 Console.WriteLine("该路径无效"); 8 Environment.Exit(0); 9 } 10 else if (Directory.Exists(dir)) 11 { 12 allfile = Directory.GetFiles(dir); 13 alldirectory = Directory.GetDirectories(dir); 14 for (int i = 0; i < allfile.Length; i++) 15 { 16 dirscanner(allfile[i]); 17 } 18 for (int i = 0; i < alldirectory.Length; i++) 19 { 20 dirscanner(alldirectory[i]); 21 } 22 } 23 24 String houzhui = dir.Substring(dir.LastIndexOf(".") + 1); 25 if (houzhui == "txt" || houzhui == "cpp" || houzhui == "h" || houzhui == "cs") 26 { 27 String text = File.ReadAllText(dir); 28 str.Append('-' + text); 29 } 30 } 31 }
3.这里的dictionary的值对的值得类型为一个自己定义的类,有些浪费空间。可以考虑一下还有没有其他的方式,能够同时兼顾时间和空间。
1 public void dictionarystore() 2 { 3 String temp; 4 count jishu; 5 6 foreach (Object o in str) 7 { 8 temp = o.ToString().ToLower(); 9 if (table.ContainsKey(temp)) 10 { 11 jishu = table[temp]; 12 jishu.setnum(); 13 if (jishu.getdanci().CompareTo(o.ToString()) < 0) 14 { 15 jishu.setdanci(o.ToString()); 16 } 17 } 18 else 19 { 20 jishu = new count(o.ToString(), 1); 21 table.Add(temp, jishu); 22 } 23 }
4.时间效率方面还行,使用了dictionary很好的改善了时间效率,对文件内容的处理使用了正则表达式和spilt分割,都很得当。功能的实现也很独立,对变量的命名总体上还是合适的,代码比较容易读懂。