资深软件开发师对于软件开发现状的建议
有一款教育软件——河狸艺术测评APP被广泛下载并应用。据软件开发业内人士评价,该软件的开发过程中,开发者规避了当下数据繁杂、单机储存、易丢失等问题,直接用软件替代单机。该软件不仅可以无限扩展,不用部署、安全与调试,还可以即开即用。软件评分高达5.0,得到了广大群众的好评,该开发者的高分软件作品还有助美整形助手和晟元宇讯软件。今天,我们找到了该软件开发者——吴相铮先生,来谈谈他关于软件开发的心得。自本科毕业后,吴相铮先生就开始接触软件开发的工作,为公司研发企业软件。经过多年的磨练,他在2010年考上北京电邮大学硕士,在软件工程方向深造自己。
我们在采访吴相铮先生的时候,他提到了自己对软件开发行业的看法:软件开发从狭义来看,是实现需求到最终上线发布的过程;从广义上看,是将人类的思维活动固化凝结成软件产品的过程,并能不断地训练人的思维和发现问题、解决问题的能力。
吴相铮先生说道:“对于外行人来说,他们只能看到工作的结果。或许在他们眼中,软件开发的工作人员是技术型人员,只要坐在办公室和敲打键盘,就很快能做出符合当下所需的系统或软件。然而事实并没有这么简单,在做软件开发的这几十年里,我遇到了不少棘手的问题,我也相信这些问题在这个领域里是普遍存在的。”
在采访中,吴相铮指出了几个行业现状以及解决办法:
开发人员在开发过程中随处使用全局变量。这个现象在早期汇编转型过来的程序员以及初学者的工作过程中比较常见,他们几乎是把全局变量当成了函数形参来使用。吴相铮先生表示,他并不否认全局变量的重要性,但他认为使用需谨慎,泛用全局变量会引申带来其他更为严重的结构性系统问题。因为全局变量会导致软件分层的不合理,全局变量相当于一条快捷通道,它容易使程序员模糊了“设备层”和“应用层”之间的边界。写出来的底层程序容易自作多情地关注起上层的应用。
全局变量在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往出现一堆漏洞,软件中雷区遍布,不得不处处打“补丁”。全局变量的大量使用,会使得有些变量、流量往返于中断与主回圈程序之间。这个时候如果处理不当,系统的漏洞会随机出现,并且是无规律地出现。这时,程序将会初步显示出可谓“病入膏肓”的特征,如果没有技术强硬且能攻破漏洞的程序员来力挽狂澜,这个程序可被宣布“慢性死亡”。
吴相铮先生说道:“全局变量的使用是不可避免,每一个设备底层几乎都需要用它来记录当前状态,控制时序,起承转合,但是尽量不要用它来传递参数,这点是成熟开发者非常忌讳的。而且,我们需要尽量把变量的作用范围控制在使用它的模块里面,如果其他模块要访问,就开个读或写函数接口出来,严格控制它的访问范围。”
吴相铮先生还提到,很多软件开发人员在工作过程中没有安排好bug管理规范和系统,往往使用word、email、excel等文本方式来跟踪bug,导致整个项目的bug管理陷入混乱。更为严重的问题是在编程过程中不写注释。我们在短期内不会看出什么问题,一旦时间久了,工作人员就会忘记了自己的代码。如果后续再重建,就会花掉更多时间和人力。所以说,这种不良习惯是不可取的,也是很多公司的程序员必须规避的。吴相铮先生指出,开发人员一定要做注释,注释是方便代码维护的很有价值的步骤,开发人员在项目开发中要尽量保持代码注释的规范性和统一性。关于“类、类属性、类方法”的注释必须使用Javadoc规范,使用/*n内容/格式,不得使用//xxx方式。好的命名、代码结构是自解释的,注释应力求精简准确、表达到位,避免出现注释的一个极端,即过多过滥的注释,代码的逻辑一旦变更,修改注释将是相当大的负担。
谈到这里,吴先生表示,希望各位新晋同行在看到他的经验分享后都能获得启发。如今吴相铮先生已经从业二十多年,相信在未来的时间里,他将与同行分享更多富有实战价值的经验与想法。(文:杨晓雯)