专家说第一天上班可以少干点活儿。终于有良心专家了,甚合吾意,干脆摸个鱼,聊聊最近偷的懒。
以前偷的懒主要是做过一个数据库偷懒工具,主要是针对我的实际需要CRUD代码自动生成和实体类自动生成等等,这个我好像在csdn也写过,但懒得找了。
去年国庆后换了工作,目前分析数据的工作量占了一定比重。经常别的部门传一个excel过来,要求根据ID在生产库中比对或补充数据。技术上没什么难度,如果表格里有成百上千个ID,那毫不犹豫的先把Excel导入数据库再写SQL比对;如果只有少量几个那也毫不犹豫的直接把ID纵向复制下来然后修改下格式(主要是每个ID后加个逗号,如果是字符串则还要先在前后加单引号),然后套用where ID in ('id1','id2',...)这样的语句继续查。尴尬的是不多不少的量,譬如小几十个的样子,导入数据库不值当,手写么不是不可以但同样有点不值当。如何偷懒呢?考虑了一下还是写个简单的小工具吧,不就为每行的文字前后加指定的字符么:
// 前缀、后缀string pf = txtPrefix.Text;string sf = txtSuffix.Text;// 切分每行string[] lines = txtMain.Text.Split(new string[] { "\r\n" },StringSplitOptions.None);StringBuilder sb = new StringBuilder();// 对每行进行处理foreach (string s in lines){if (s.Trim() == ""){// 如果是空行则忽略continue;}else{sb.AppendLine(String.Format("{0}{1}{2}", pf, s, sf));}}string result = sb.ToString().Trim();// 如果需要去掉最后一个逗号if (chkRemoveLastComma.Checked){if (result.EndsWith(","))result = result.Substring(0, result.Length - 1);}txtMain.Text = result;
确实没啥技术含量,但是很省时间。运行后的效果:
这样的后果就是再来几百个都不带怕的,再多也是复制后直接帖进sql语句里。唯一的问题是,看来要换个滚轮好使点的鼠标了。
再后来开始做数据核对和传报。文档中有些表有几十个字段,人工一个个去写(复制黏贴)定义实体类和JsonProperty的代码我不愿意。好在文档有word格式的,可以纵向只复制字段名那列(灰色的就是选中并复制的):
本着抓大放小解决主要矛盾的宗旨,参数类型一律先视作字符串。那就可以定义一个模板,设置占位符(@@$),到时候用每一行的内容去替换它,就可以生成一段大差不差的代码了。确有必要再微调。
显然测试代码也是可以做个模板偷懒来的:
十秒钟完成一上午的活,累死了,先摸会儿鱼。
果然,常在河边摸鱼,难免摸到奇葩鱼。有次接到任务要写一段查询,简单来说其中包含有20组诊断代码和诊断名称(还有10组手术,10组麻醉),好在很有规律,能用序号。但是这种代码我会愿意复制黏贴再改序号?模板安排上(这次用占位符指代递增的数字),别说20组,2000也照写:
也快下班了,说个正经的总结吧。很小的时候看过一个港台片,里面有一句台词记忆犹新:人脑不如电脑,电脑等于猪脑。现在想想真是真理呀。过分智能等于霸道,所以最适合我的模式是半自动:烦琐的大坨子东西自动生成,但怎么组装、怎么微调让我来。另外,这是多年前我还在证券公司营业部上班的时候我们技术经理经常说的:只要是人能说的清楚的规则,都可以尝试让电脑解决。都好有道理啊!