锁定老帖子 主题:写的不是程序-------是态度
精华帖 (0) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-05
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) { // step3:Check last modify time 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。 我觉得如上三句话总结的比较好,所以在此应用,有不同理论的同学,还请息怒。 所以,写出本人主要是想让自己记住,如何从一个程序员成长为一个技术大牛,其实很简单:写的不是程序,是态度!细节决定成败! 以上总结希望能够和各位共勉! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-06
你要么全部用英文写 要么全部用中文写
|
|
返回顶楼 | |
发表时间:2011-09-06
别把未完成处理文件、当前工作文件和历史存档文件放一个目录,temp文件完成后在移动到工作目录,工作文件过期放入存档目录,这样情况简单很多
archive文件按照目录或者命名格式归档,别把太多的判断逻辑放到系统维护代码中 |
|
返回顶楼 | |
发表时间:2011-09-06
最后修改:2011-09-06
KimShen 写道 你要么全部用英文写 要么全部用中文写
不好意思,我的错。。。 |
|
返回顶楼 | |
发表时间:2011-09-06
ppgunjack 写道 别把未完成处理文件、当前工作文件和历史存档文件放一个目录,temp文件完成后在移动到工作目录,工作文件过期放入存档目录,这样情况简单很多
archive文件按照目录或者命名格式归档,别把太多的判断逻辑放到系统维护代码中 在这里,temp文件是需要被删除,不要保存。同样,过期的文件在此处也是不需要保存的。 |
|
返回顶楼 | |
发表时间:2011-09-06
说的好,程序写的好不好就是看你有没有用心,有没有考虑周全。
|
|
返回顶楼 | |
发表时间:2011-09-06
你没抓住重点,这个设计你的核心问题是把文件都放在一起,把一个部署问题最后放在了实现上的硬编码解决,这里你所引入的细心其实只是一种亡羊补牢,你补了劳,第二个新兵一样可以轻易犯同样的错
一个如此简单的需求,还需要上层维护者费那么多心思,应该想想到底是哪层更该细心改造一下 |
|
返回顶楼 | |
发表时间:2011-09-06
顶bobo
有理解,共勉 |
|
返回顶楼 | |
发表时间:2011-09-06
这个不属于态度, 应该算是你经验不足或者考虑问题不全。 先不管你的考虑全不全, 光你这几行代码本身就有很多问题。
Date lastModifiedDate = new Date(pathname.lastModified()); 为什么现在java程序员写这样的代码的人越来越多, Date近乎一个淘汰的类了, 还在到处用。 除了需要DateFormat外尽量不要使用Date。 你获取了lastModified 居然转成DAte再去Date.getTime() 这样写的意义是什么?? 就不能System.currentTimeMillis() - pathname.lastModified() > DELETE_TIME_INTERVAL . 还有一个问题就是FileFilter, 本来应该做成单实例模式, 你这样写每次调用都会new一个FileFilter。 |
|
返回顶楼 | |
发表时间:2011-09-06
Ctrl+C,Ctrl+V
会阻碍程序员的发展, 踏入江湖时,一个老头的话 |
|
返回顶楼 | |