写的不是程序-------是态度

   小弟不才,有幸和公司其他几位技术牛人共同开发CDN系统。在开发Peer模块的过程中,有这个一个看上去很简单的task给到我。简单的描述一下需求:删除上传目录中的临时文件,这些临时文件以 “upload_”开头,”.tmp”结尾。同时也会生成很多的源文件数据信息也保存在upload目录下。于是小弟写出了如下汗颜的代码(伪代码,仅供参考,本文重点不讲代码)
Private void deleteFile(String path) {
              /*
               * Do something
              * Check the file name and file path to match the special conditions
	      */
	File[] deleteFiles = directory.listFiles(new FileFilter() {

	public boolean accept(File pathname) {
                  Date lastModifiedDate = new Date(pathname.lastModified());
                  long interval = (now.getTime() - lastModifiedDate.getTime()) / 1000;

			return interval > DELETE_TIME_INTERVAL;//大于一定时间的文件才被删除				}
			});
	for (File df : deleteFiles) {
	FileUtils.forceDelete(df);
}
}

小弟以为上面这部分代码就可以work了,可以完成了所以的工作!于是乎就提交,打包,放到测试环境开始run!结果可想而知,导致测试服务器上传的视频源文件和图片源文件信息丢失,杯具呀!幸好是测试服务器,只能这样感叹一句。
好了,进入本文重点。其实主要是想再次给自己提醒一下:写程序不能想当然,不能觉得是怎么样就是怎么样,所以写的不是程序,其实是态度。
首先, 删除文件必须考虑到删除文件的访问权限,是否可以被删除,如果不能被删除,如何处理这种case,虽然我利用了第三方的API,但是这个API接口是否能够满足自身开发的程序的需求,这个需要严格审查。第二点,删除特殊文件目录先的文件是,如果这个目录下的文件目录,修改时间是大于设定的删除时间,但是此时文件夹中还包括刚刚上传的文件,如何处理这种特殊的case。第三,删除文件过程中,还可能遇到一些特殊的异常case,是否是依靠一个第三方API就能搞定。
看似很小小的一个删除文件的case,其实后边本质反应的是一个程序开发人员写程序的严谨的态度,严谨的做事风格。这一点在外企体现的更为明显,我已近不是第一次因为这个问题让别的同事提醒了。记住一句话:小公司教人做事,大公司教人做人。(没有歧视小公司的意思,江湖上流传这句话,用在这里挺合适)。如果一个程序员过不了这一关,就永远无法成长为一个技术牛人。这句话希望与各位博友共勉。
所以这里引用一下公司同事说过的话。什么是写程序?其实就是满足如下三点就能写出很好的程序。
1. 算法和数据结构;
2. 尽可能考虑到正常的case;
3. 尽可能考虑到异常的case。
我觉得如上三句话总结的比较好,所以在此应用,有不同理论的同学,还请息怒。
所以,写出本人主要是想让自己记住,如何从一个程序员成长为一个技术大牛,其实很简单:写的不是程序,是态度!细节决定成败!
以上总结希望能够和各位共勉!

猜你喜欢

转载自soongbo.iteye.com/blog/1165928