`
soongbo
  • 浏览: 87031 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
   小弟不才,有幸和公司其他几位技术牛人共同开发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。
我觉得如上三句话总结的比较好,所以在此应用,有不同理论的同学,还请息怒。
所以,写出本人主要是想让自己记住,如何从一个程序员成长为一个技术大牛,其实很简单:写的不是程序,是态度!细节决定成败!
以上总结希望能够和各位共勉!
分享到:
评论

相关推荐

    本地资源管理器- web浏览器上的文件管理器。「Local Explorer - File Manager on web browser」-crx插件

    如果他们两个都在一个地方不是很好吗?示例C:\ Users \ my_user_name \ Documents(“我的文档”文件夹)\\ 10.0.0.1 \ shared \ local \ folders \ files(网络驱动器)W:\ folder \和W:\ folder \ file.doc(在...

    易语言自带安装包程序修改版-易语言

    首先声明一下,没什么技术含量(幼儿园级别),至于为什么要去修改它,也不是因为闲的蛋疼,是因为现有打包程序不够智能,本着能用且用的态度,所以只针对我认为的痛点进行的处理,放修改源,有需要的朋友可自行修改...

    程序员什么时候可以刷题-appjs-deskshell:使用前端的HTML5/CSS/JS和后端的服务器脚本构建桌面应用程序的SDK

    还有很多不是严格编码的事情你可以做,也许你可以编写一个示例应用程序,改进我们的文档,在论坛上回答问题或编写教程。 大多数情况下只是享受制作应用程序的乐趣,当你看到一些可能更好的东西时,可以尝试改进它,...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL语言主要包含5个部分  数据定义...

    PHP168网站 大家赶紧下载爸

    文件传到空间后,如果你的服务器不是windows的话,请确认以下目录可写,即是文件属性为0777或0755,否则运行不正常, 大部份空间改为0777,少部分空间改为0755 必须修改的文件属性 /php168/ 此目录,及目录下的每一个文件...

    测试培训教材

    原因:8080端口被其他应用程序占用。 用netstat查看谁占用了8080端口 netstat -ano 解决办法1:修改其他程序的端口使用 解决办法2:修改JBOSS的启动端口 JBOSS_HOME\server\default\deploy\jbossweb-tomcat...

    iOS 开发者的微信小程序初体验

    前端0基础,研究也不是很透彻,所以大家一定要保持怀疑的态度看这一篇分享。由于是本职是iOS开发所以在开发小程序的时候也会按照之前iOS开发的一点点经验来搭建小程序。所以主要是从几个应用框架层来比较说明一下iOS...

    千字文c语言

    现代人,一生中有机会通读千字文的机会是非常少的,很多理工科的大学生,完全没有听说过这篇神奇的文章,自然也会抱着“怀疑一切”的态度问,真的有这么神吗,真的一个重复的字都没有吗?耳听为虚,眼见为实,我们...

    ARM 嵌入式LINUX 系统构建与驱动开发

    8 用我写的《自己写了个C工程模板又写了个使用说明 》里的方*调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。 9 把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下 10 按照《UBOOT 移植操作》移植...

    嵌入式Linux开发之C语言学习秘诀

     学习C语言,乃至学习所有的语言,都讲究一个动手--不是动手打人,而是动手编程序。你必须通过编写程序来熟悉知识、理解知识。倘若只学不编,只看别人的程序,自己不动手写,是不能从入门到精通的。要知道,在...

    嵌入式系统/ARM技术中的嵌入式Linux开发之C语言学习秘诀

     学习C语言,乃至学习所有的语言,都讲究一个动手--不是动手打人,而是动手编程序。你必须通过编写程序来熟悉知识、理解知识。倘若只学不编,只看别人的程序,自己不动手写,是不能从入门到精通的。要知道,在...

    小程序的填坑小技巧之网络请求改造

    小程序在内测的时候就已经开始玩了,不过最开始的时候觉得,这sx东西东西怎么这么坑的样子,网络请求居然不是返回Promise而是用Callback的方式, 传值居然不能把值写在方法里只能用dataset,在这个全面组件化的大环境...

    骑士PHP人才系统 6.0.20

    骑士PHP人才系统是一项基于PHP+MYSQL为核心开发的一套免费+开源专业人才系统,软件具执行效率高、模板自由切换、后台管理功能方便等诸多优秀特点,凭借骑士网络的不断创新精神和认真的工作态度,相信骑士能够为您...

    基于AT89S52 单片的频率计

    写软件将HEX 文件烧入单片机内。3 2.2.3 单片机仿真软件:PROTEUS Proteus 是目前最好的模拟单片机外围器件的工具。可以仿真51 系列、 AVR,PIC 等常用的MCU 及其外围电路(如LCD,RAM,ROM,键盘,马 达,LED,AD/...

    小旋风ASP服务器_小旋风ASPWeb2005服务器_架设ASP网站_(ASP Web2005服务器)_完整免费版

    我先声明这个的确不是我写的程序,是网上收集来的,拿来给大家分享。CSDN上的资源很多都是转载分享的,如果还是不放心大家尽可以自己上网找,名字见标题上的几个都可以,别打错。很好的软件,很多软件站都有搜藏,...

    loadrunner测试资料

    我们先不论报酬薪资,单从这种不负责任的态度与做事方式来讲,个人觉得这些是不利于新人成长。  一个入门的测试人员,他应该先做好本职工作,充分了解系统,充分了解需求,能为后续产品提出新的价值关联,能知晓...

    计算机组成原理最全傻瓜式模板实验报告(含实验目的、详细实验步骤、亲自计算的实验数据以及感人的实验总结)

    实验一 运算器实验实验二 移位运算实验实验三 存储器读写和总线控制实验附加实验 总线控制实验实验五 微程序设计实验 一、实验目的: 1. 掌握运算器的组成及工作原理; 2. 了解4位函数发生器74LS181的组合功能,...

    Java面试宝典和大学生面试宝典

    让写的常见程序有:数据结构书上的程序,经典 C 程序(strcmp、strcpy、atoi……) ,C++程序(表现 C++经典特性的) 。第 一次在面试官眼皮底下在纸上写程序,思路容易紊乱。建议大家事先多 练习,找个同学坐在边上...

Global site tag (gtag.js) - Google Analytics