改VB.NET“偷懒”技巧

【开篇胡侃】虽然搞软件开发很多年了,但似乎从没有动手写过什么(很丢脸的感觉),因为,我的精力都献给了我的其他爱好,比如健身、美食、旅游等等,反而把自己最该专注的领域忽略掉了。随手翻阅云+社区,我发现我落伍了,而且是很严重的那种,竟然对很多知识完全陌生……嗨,为什么软件领域发展这么快,好吧,不多说了,还是继续跟大家聊聊技术吧……

前一阵子换了一份工作,当初来新公司我应聘的是QT开发岗位,但偏偏给我的第一份编程工作竟然是改VB.NET程序,VB是一种过气的语言(从各大招聘网站的招聘广告中看就能看出来,100份招人的最多有一、两份是提到VB),很多新程序员估计连Basic是什么都未必清楚,我比他们好不了多少,从未看过VB书籍,自然也不懂VB语法。新单位的领导说了,这个对你来说很简单,然后就扔给我一份需要修订的bug清单。不做不行啊,这就是工作(汗!!)。我怀着忐忑的心情,开始了这个不着调的新工作。

先说一下该项目情况,该项目是基于VB.NET2000开发的,之前是公司外包出去的,且项目持续时间较长。开发人员程序写的总体还不错,思路清晰,没有什么大的功能性bug,但由于测试少,有很多明睁眼漏的bug,另外,只是提供了功能实现,简化了程序,页面易用性存在些许问题。接手该代码和文档的程序员经验不足,没有在接手后第一时间内熟悉程序,并能发现问题与原程序员沟通。导致时间一长,一方面让原开发人员提供技术支持很困难,另一方面很多硬件设备已经淘汰,换硬件必然需要改动软件,最终使得该程序成为“食之无味,弃之可惜”的现状。还有一点,就是交接资料不全,很多程序中调用的外部接口文档没有提供,给后续更改造成很大困难。另外,如同我后面说的,基本上是人手一份交接资料,但奇葩的竟然都不相同,而且没有一份是完整且正确的。交接时曾装10台机器,竟然莫名的都有这样或那样的毛病(我到底来的是什么公司??)。

我先说说改过程发现的问题:

1、文档管理混乱

接手项目后,技术主管、原接手的软件工程师、仪器安装调试工程师每个人手头的资料都不一样(目录是一样的,内容却不同(晕啊!我不想当福尔摩斯,为啥会有这么奇葩的结果)),有的是自己不懂改乱的,还有就是拿到手的资料就是错误的。一个错误的资料,再碰到粗心大意的开发人员,必然的结果就是怎么改都不对。

2、与原开发人员对接不畅

写这套程序的开发人员应属业余设计,秉承着一手交钱一手交货的思想,钱到手,再咨询基本上属于呼叫不在线的状态。想从对方得到什么东西可能性不大。好在开发人员整体设计逻辑比较清晰,bug大多数属于马虎,所以改起来并不困难。

3、硬件购买竟然不知哪家

技术负责人告诉我,仪器里面的工业相机已经淘汰了,不再生产了,要买新的设备,告诉我只是升级,不会改动很大。我想,那好啊!既然知道淘汰了,问问该厂其他型号应该没有多大问题。结果,一周后,发现购买硬件的竟然想随便买个工业相机替换(我再次昏倒了)。理论上,替换是可以,但前提是需求不清楚,没有一片纸交代该相机如何工作的。我说通过DLL文件名查到厂家,他们竟然不信……仍然想等待原程序员永远呼叫不灵的答案……

4、机器各种异常==不认真

软件本身没有太大毛病,但装出来的竟然是千奇百怪的错误,有的触摸键盘异常,有的相机端口报错,有的报缺少文件错误。其实,所有问题就是一点,没装完全。VB.NET需要依赖环境,而且一些必要的dll文件没有放在该有的位置,另外,原程序员明明正确的配置文件,竟然在“击鼓传花”式的传递过程中莫名的越改越错,导致有用的数据被认为是完全无用干脆删掉了。

罗里吧嗦的说了一大堆废话,再来说说我这个懒人怎么改VB.NET程序的

写程序时间长了,不再像刚开始学习的时候那么认真了,有点喜欢走捷径。即然目的是改程序,没必要去扣语法,看一本本讲得似懂非懂的砖头书,我只需要看懂程序并改掉软件bug就行。

1、充分利用VB.NET自身提供的功能

比如下图是鼠标右键弹出的界面,红色部分可以帮程序员很好的了解程序中某函数是如何定义的,并了解整个项目中到底有多少个地方调用了该函数。黄色部分需要装.NET Reflector反编译软件(网上有如何安装),当点击“转到定义”时,如果是VB的函数,可看到源码。其实,我用它看的不是VB的源码,而是软件中被程序员自己编写的dll文件。当然,右键菜单中其他功能也很有用,就不一一列举了。下面就是我在短时间内改完所有程序bug的秘密武器。

这就是我在短时间内改完所有程序bug的秘密武器

2、充分利用网络资源

做任何软件都离不开打印功能,尤其是医疗行业。必然需要给病人出具一张报告单。原程序只是把内容打出来了,根本没有考虑格式的问题。从头开始吗?否定!我花了20分钟查到网上VB打印资料,而且是那种带模板(可以自定义位置信息等等),下载下来,改动一下,放到程序里面,OK!(嘿嘿,懒人一枚)。比如下面的这个模板,考虑问题真的很全面了

VB打印模板(从pudn下载)

3、打包内容尽量全

写完程序需要发布,不要相信其他人能看懂你写的详细安装手册步骤,因为没有多少人真愿意静心看你写的罗里吧嗦的文章,他们所要的就是给一个文件,点击一下就可以傻瓜式安装,安装完就可以用。告诉他们装机步骤,最终还得一步一步问你如何操作。

VB.NET运行必须依赖.NET Framework,所以须能提供安装地方

如果程序中把文件放到C盘系统文件夹下,需要在“目标计算机上的文件系统”上点击右键,添加“特殊文件夹”,比如加文件到C:\WINDOWS\SYSTEM32\下,需添加Windows文件夹,并增加system32目录,把文件放到该目录下即可。

系统路径上加载文件

想要启动系统后立即加载该软件,可以在这里增加启动文件夹。如果不想让人在启动项里面看到,也可以写成配置文件,然后用命令加载,写成任务计划中,当系统启动时,触发任务,打开软件。

任务计划(这里只是示意)

写任务计划示例:

<?xml version="1.0" encoding="UTF-16"?>

<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">

<RegistrationInfo>

<Author>Domain\User</Author>

</RegistrationInfo>

<Triggers>

<LogonTrigger>

<Enabled>true</Enabled>

<UserId>Domain\User</UserId>

</LogonTrigger>

</Triggers>

<Principals>

<Principal id="Author">

<UserId>Domain\User</UserId>

<LogonType>InteractiveToken</LogonType>

</Principal>

</Principals>

<Settings>

<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>

</Settings>

<Actions Context="Author">

<Exec>

<Command>"C:\Windows\notepad.exe"</Command>

<Arguments>/logon</Arguments>

</Exec>

</Actions>

</Task>

上述内容保存成task.xml文件。然后用下列命令导入

schtasks /create /TN "Test Logon Task" /XML task.xml

会涉及权限问题,网上也有解决办法,不一一列举了。

可能会有人嘲笑,谁还会看这些过时的玩意。其实,有句话是对的,不要轻视任何人,即使他是文盲,她是清洁工。同样道理,作为程序员不要轻视任何软件,至少80%,甚至90%的程序员是编不出VB这种程序,至少它集合了微软若干高级程序员集体的智慧。从这几天改VB程序,发现VB程序编的真的很全,很多地方都替你考虑好了,大部分人只要会用VB自身提供的功能,能少走很多弯路。我也从中也学到了不少新的知识。篇幅有限,时间有限,今天只能列举这些了……

最后再说一句,向开发VB程序的前辈致敬,是你们的努力让我们有了一款易学易会的好软件。也对我以前的无知深感抱歉~~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

工作随笔

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

揭秘:充电宝是如何盗取你的个人隐私的?

中午吃完饭,看到一个微博中别人转的央视新闻《别被改装充电宝盗取隐私》觉得又是啥高大上的东西上了央视,看完后才知道是数字公司的某研究员做的伪装充电宝盗取隐私的玩意...

2547
来自专栏IT大咖说

做一个不背锅的运维

内容来源:作者:田逸(sery),来自:http://blog.51cto.com/sery/2162642

1784
来自专栏大数据文摘

爬虫还在用Python?我与Node.js不得不说的故事

4K4
来自专栏Python小白进阶之旅

Android离Linux越来越遥远了,Google的Android真的是开源的吗?

3189
来自专栏Android 开发者

正式发布 Android 架构组件 1.0 稳定版

1332
来自专栏向治洪

Android 绿色应用公约

Android 绿色应用公约(草案) 宗旨 这是一项旨在推动Android生态中的优秀应用共同维护一个更加良性的『设备体验』而发起的开放公约。 设备体验:影响效...

3026
来自专栏13blog.site

短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 前言 短信发送接口...

4086
来自专栏即时通讯技术

小白必读:闲话HTTP短连接中的Session和Token

Http协议在现今主流的IM系统中拥有无可替代的重要性(在IM系统中用HTTP发起的连接被大家简称为http短连接),但Http作为传统互联网信息交换技术,一些...

1113
来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 前言 2016年,我写了一系列的 VUE 入门教程,当...

2339
来自专栏WeTest质量开放平台团队的专栏

提升iOS审核通过率之“IPv6兼容测试”

在WWDC2015大会上苹果宣布iOS9将支持纯IPv6的网络服务。2016年6月1号,所有提交到AppStore上的应用都必须支持IPv6,否则将通不过审核。...

3183

扫码关注云+社区

领取腾讯云代金券