程序员的自动化
版权声明:本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者署名及本版权声明。
为什么是程序员?
我想不出还有什么职业比程序员更接近计算机,让机器代替我们工作,让我们享受自动化带来的快乐。
自动化的好处?
自动化最少能带来下面两个显而易见的好处:
- 减少工作量,减轻重复劳动
- 减少手工工作出错的机率
把什么自动化?
我们无法把每件事都自动化,所以先把事情分分类[1]:
- 只做一次的事情:既然只做一次,我想就没太大必要自动化,要做成自动化会比直接做事更花时间
- 重复做的事情:只要有重复就一定能找出其中共性的部分,马上把它抽取出来,开始自动化
如何自动化?
可以考虑按下面4个步骤来进行:
- 手动去做一遍:首先要确定你可以手动执行此流程,或许你可以写下此流程,这样一是确保不会遗漏步骤,二是可以强迫你好好再想上一想
- 编写每个步骤的脚本代码:把每个步骤转成由命令行或小程序组成的脚本,并单独测试每个步骤,确保每个步骤的脚本都是正确的,有些参考资料[2]可以帮到你
- 把所有步骤的脚本合在一起:如果在这步能够渐增式合并的话,可以将最终脚本的错误率降至最低
- 最后别忘了测试:写个自动化脚本即使我们用不到TDD[3],最后的测试还是不要忘了
自动化脚本举例
参见我以前所用的一个oracle数据备份脚本的片段:
day=`date ‘+%Y%m%d’`
su – oracle <<EOF
rman target / nocatalog;
run {
allocate channel t1 type disk;
sql ‘alter system archive log current’;
backup format ‘/back/rman/last/arch/arc_%d_%T_%u_%s_%p’ archivelog all delete input;
release channel t1;
}
exit
exit
EOFmt -f /dev/rmt/0mn eod
cd /back/rman
tar cvf /dev/rmt/0mn last/arch/arc_$day_*
注释:
- 国外也有人用四象限法把事情按是否重复和简单还是复杂分为四类
- Windows下可以参考《Win32 Perl Scripting》,Unix下可以参考《Advanced Bash Scripting Guide》
- TDD:测试驱动开发,Test-driven development,利用测试来驱动软件程序的设计和实现,极限编程中倡导的一种程序开发方法

最新评论