追求完美程序的我

追求程序性能的最优化,这不是我自己的要求,是软件上架之后,用户的反应,管理2K台设备的软件,把2K台设备加载到内存中大量消耗用户PC资源。作为软件研发人员,每个人员都有自己编程的诡异风格,前期没有规划好的软件系统,现在让我整体进行性能优化,着实让我很头疼。稍微看点程序就能总结出以下问题:
1.变量名的命名
作为软件开发编程的常识:变量名不能自动生成,好多人还是list1,list2...的使用,一个个的变量名都帮你修改过来的话,啥时候能改完啊,操作数据库的getString(1),getString(2)这样的取值方式再放入上面诡异名称的变量里面,让人怎么理解这块代码。
2.静态变量和全局变量的使用
静态变量和全局变量在软件中有他们特有的优势,静态变量赋值之后不变的特性和"类名.变量名"的直接使用,确实能给编程带来方便,但静态变量在不需要的时候也一定要处理掉,否则内存中一直被占用,例如2K台设备数据都放在那里,每打开一个界面都多出一份,再好的PC,资源也能被占完啊。全局变量,不知道为什么喜欢使用全局变量,一个界面还没有初始化,就建了数十个全局变量,不规则的命名+不规则的局部变量,变量名重复都不知道,动不动出现莫名其妙的问题,还不知道错在哪里。
3.诡异的设计理念
这个设计理念,是受领导的思路影响的,软件开发初期领导提出的:第一次打开该界面把数据都加载上来,下次打开该界面就能变的很快了。这样就造成了,第一次打开界面是非常的慢,是让人无法忍受的慢。即使以后打开很快,我感觉这也是常说的瓶颈问题吧?但是真正的瓶颈问题是比这要高级的性能优化问题,这能算吗?这样的理念引导出了静态变量和全局变量的大量使用。
4.单纯的模仿心态
使用的是Twaver组件,模仿Twaver Demo,我承认前期的模仿有助于快速的熟悉组件,但如果是单纯的模仿,不分辨优势和缺陷都一味的模仿的话,是自己的懒惰,举个例子:查询的时候有个进度条,本来查询的数据量都够大的,查询性能数据和端口流量什么的要上几十万条,十秒以内是最好的体现时间,偏偏在很难满足的情况下,在查询结束的情况下还要让线程 Thread.sleep(1000); 返回来问他们为什么这1秒不去掉,说不知道啊,是为了“查询成功”那几个字显示出来吧。说的没错,Demo里面是这样,加几十条假数据,最后暂停1秒为了显示出来这几个字。
5.Twaver组件的使用
组件好使只能使自己变的更傻瓜,傻瓜式的去模仿使用,永远不知道该组件怎么才能达到性能的最优化。
6.诡异的查询数据库方式
这个问题应该总结为:能在内存中拿到的数据,不要去数据库中查询。在一个端口的对象上点击查询该端口的流量信息,直接从流量数据表中拿到自己想要的数据就可以了,端口的名称,对应的上层设备,厂商,设备分类这些信息都在内存中呢,不用在查询流量数据的时候关联那么多表进行查询了。
7.不查数据库的危害
上面刚说过在内存中能得到的信息,不要去数据库中查询,为了提高软件反应速度。这样做的过火了也不是好事情。本地有个xml文件保存的信息是为了生成一个Tree组件,Tree组件上含有省、市,市区、设备分类、设备厂商、设备型号、2K左右的设备信息。可以不查数据库就把这些信息从本地加载到内存中来使用的。但是要说是2k左右的设备信息这样操作我就不说什么了,怎么也不至于一个界面上有市的下拉框,市区的下拉框、设备厂商的下拉框、设备型号的下拉框,为了填充这4个下拉框,每次都初始化一次Tree组件,再对Tree组件的数据进行过滤,4个下拉框的生成,从xml里面加载了4次数据到内存。打开几个界面,卡死用户的PC
8.变量的最小作用域规则
很多个地方,声明一个变量,该变量的取值本来是可以轻松拿到的,何必绕那么一大圈干什么,把变量传的到处都是,可以说是乱窜。严重违背了高内聚低耦合。各个组件不是独立的,往组件上添加什么属性都是和别的组件进行关联的。搞的修改一个组件的问题,得把好多类进行维护,看见都头疼。
软件优化还要继续,不知下面还会遇到什么诡异的程序,自己看到的瑕疵总想让它消失,这么多的问题如何修改,很让人头疼啊![color=green][/color][color=indigo][/color][size=large][/size][size=x-large][/size][size=xx-large][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值