自动化 幸运的是,作为程序员,我们所处的行业天然适合引入机器来提升工作效率。机器能够高效地执行任务,并且可以不间断地工作。
代码生成器 对于程序员而言,代码生成器是日常工作中实现自动化的重要工具。
然而,一提到代码生成器,可能会遇到一些质疑的声音。如果你曾使用过早期的代码生成器,你可能也会对它们抱有负面印象。
大约十年前,我当时的公司购买了一套代码生成工具,该工具宣称配置好业务逻辑后即可同时生成ASP、PHP和JSP代码。但公司推广两个月后发现难以实施,因为工具无法处理我们特有的业务逻辑,且每个部门有自己的编码规范和库,这些都与该工具不兼容。
此后,我们对代码生成器产生了抵触情绪。
不过,后来为了偷懒,我还是不断尝试并逐渐意识到,要开发一个全球通用的代码生成系统可能非常困难;但为自己定制一个专用的代码生成器却相对简单,只要遵循以下两个原则。
只为自己设计 第一个原则是“只为自己设计”。
由于每个公司、部门甚至岗位的需求千差万别,通用的工具往往难以满足特定需求。如果我们自己开发工具,就可以完全根据个人的工作流程和编码需求来设计。
我们清楚知道元数据如何存储、处理以及最终生成何种代码,因此可以创建非常适合自己的代码生成器。
能自动化的自动化,不能自动化的半自动化 第二个原则是“能自动化的自动化,不能自动化的半自动化”,尤其是后半句非常重要。
许多程序员在设计代码生成器时过于追求完美,希望系统完成所有工作。但由于开发环境和办公软件间缺乏交互接口,很多情况下无法实现全自动。面对这种情况,完美主义者可能会选择手动处理。
但是,我们开发代码生成器的根本目标是提升生产效率,而非创造一个完全自动化的产品。即使有些部分无法完全自动化,我们也可以采用半自动化的方式。
半自动化有两种思路。一是通过交互方式解决无法自动化或需要花费大量时间的细节问题。
例如,早期做网站时,编辑提供的资料都存储于Office软件中,那时没有好的Office格式解析包,许多人选择手工输入数据。我的解决方案是在Office中复制表格数据,粘贴到textarea中,然后使用PHP分析tab和换行符来提取数据。
尽管不是全自动,但比起手工输入,效率提升了数十倍。
另一种思路是对小操作进行自动化以生成代码片段。
例如,写输入处理时通常需要根据数据表字段进行验证,这是重复性劳动。我写了一个小工具,可以直接读取数据表字段及注释,根据注释自动生成验证代码。将这些代码粘贴到编辑器后稍作修改,就能迅速完成验证工作。这虽然技术含量不高,但显著提升了生产效率。
这只是我想到的一些思路,实际上还有更多方法。有的同学通过工具链和命令行交互来实现自动化。