专栏首页工作随笔改VB.NET“偷懒”技巧
原创

改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 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • React+Redux的一个简单开发实例

    看到这个水果篮子的样子,大家应该可以明白它的功能:你可以做两件事 — 摘苹果和吃苹果。当你摘苹果时,应用会向后台发送ajax请求索取苹果,每个苹果有两个属性:编...

    javascript.shop
  • 如何使用sklearn进行在线实时预测(构建真实世界中可用的模型)

    Python 作为当前机器学习中使用最多的一门编程语言,有很多对应的机器学习库,最常用的莫过于 scikit-learn 了。我们介绍下如何使用sklearn进...

    abs_zero
  • ApplicationContextAware使用说明

    JavaEdge
  • java JAVA迭代器ITERATOR增删改查

    葫芦
  • 360面经

    【每日一语】很多人都无从得知自己的天赋,因为找不到相信他们的老师。于是他们深信自己很笨。——《心灵捕手》

    牛客网
  • Vue使用代理请求后端接口

    苦咖啡
  • SAP ABAP 接口错误日志查询(SRT_UTIL)

    matinal
  • 大数据扛起互联网保险创新

      又是一年“双十一”,阿里巴巴以571亿元的交易额刷新纪录。在畅享消费盛宴的同时,互联网销售大数据为众多保险公司提供了必要的数据支持,同时成为其发展、创新的...

    腾讯研究院
  • 不会做职场时间管理?这些建议你绝对用得上!

    ? 作者 | 董小云,腾讯员工 有人认真考虑过时间这个概念吗? ? 如果你去搜索它的定义,会发现有物理学、天文学、哲学、文学和宗教等多个角度来解释这个词。 在...

    腾讯大讲堂
  • 从头编写 asp.net core 2.0 web api 基础框架 (3)

    Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-...

    solenovex

扫码关注云+社区

领取腾讯云代金券