以前看到李开复写过的一本书,说是微软推荐应届毕业生最好有10万行的代码经验。于是自己我想写个程序统计写了多少行代码。正好当时在学C#的正则表达式,借助正则表达式的简便。我统计了自己的代码量,大概有8万行的样子。
程序的主要函数是一个先根遍历文件夹树的函数。因为运用了正则表达式,所以程序很简洁,拿出来和大家交流一下。正在求职的同学可以跑一下这个程序,统计自己的代码量,写在简历上,也能给面试官留个映象。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Text.RegularExpressions; namespace 代码量统计 { class Program { static Regex fileType = new Regex(@"java|asm|c|cpp"); //匹配程序类型文件的正则表达式 static Regex breakLine = new Regex(@"\n"); //匹配行尾的正则表达式 static int lineNum = 0; static void Main(string[] args) { string path; //不断处理输入的程序文件夹的路径 while(true) { path = Console.ReadLine(); DirectoryInfo root = new DirectoryInfo(path); if(!root.Exists) { Console.WriteLine("输入路径不正确!"); } else { TraverseFileSystem(root); Console.WriteLine("当前代码行数总计:\t" + lineNum + "\n"); } } Console.ReadKey(); } //先根遍历文件夹树 static void TraverseFileSystem(DirectoryInfo dir) { FileInfo[] files = dir.GetFiles(); foreach(FileInfo file in files) if(fileType.IsMatch(file.Extension)) { StreamReader sr = new StreamReader(file.FullName); string content = sr.ReadToEnd(); sr.Close(); lineNum += breakLine.Matches(content).Count; } //处理当前目录下的每个子目录 DirectoryInfo[] dirs = dir.GetDirectories(); foreach (DirectoryInfo subDir in dirs) { TraverseFileSystem(subDir); } } } }
这是程序运行的过程: