无法维护的代码

长期以来,软件工程往往被拿来和建筑工程进行类比,但是人们往往认为修改软件无论如何也比修改建筑容易,但这种看法其实并不正确。软件和建筑一样,一旦完成交付使用之后,就只能做小的调整和修葺了。大的改动往往就会需要大的成本,这也许并不是客户所希望见到的。建筑在设计的时候,往往也会需要考虑维护的问题,比如会预留一些通道,设计一些活门什么的。但软件显然在这一点上就比较困难,因为似乎也没有什么定例或者规定来要求软件的设计实现者考虑维护的问题,并思考如何让软件的维护变得容易。

其实软件的维护也是一个挺重要的工作。它包含的两个方面的内容,一个当然是修改bug,另外还有增加或者改进功能。如果有人做过这些事情,就会发现,其实修改一个老旧系统的bug以及为老旧系统来增加功能往往是一个比较困难而且痛苦的工作。而导致维护困难的主要原因说白了,其实就是代码量。显然代码量越少,维护就越容易。而代码量其实就是系统的规模。不能从软件做的事情来认定软件系统的规模。操作系统往往要做很多的事情,但它的规模并不大,很多的时候比不上UI的规模。而软件的规模越大,明显就越难维护。

但是这一点也并非人人都明白,特别是一些自以为做过多年技术工作的白痴。他们往往过于主观的从技术的难度上去判断维护的难易,而从来不考虑系统的规模。其实这是一个多么浅显的道理呀。比如对于从一堆绿豆中找出混入的黄豆这种没有技术含量的工作来说,规模的差异会导致工作的难度大大变化。从十颗绿豆中找出混入的一颗黄豆是很容易的事情,可以说是一目了然。但是从一吨绿豆中找出混入的一公斤黄豆就完全是另外一回事情了。这种不负责任的人如果是领导,往往会使程序的维护工作雪上加霜,因为他会因为错误的观点而做出错误的评价,毕竟技术是如此的简单。而不公正的评价往往是导致团队破灭的根本原因。因为除非有特殊的原因,没有人能够忍耐对自己不公正的评价的。毕竟人从本质上都希望得到别人的认可而不是否定。

但无论如何,维护工作总是需要有人做的。个人认为,软件维护工作如果能够顺利一定需要一个技术水平较高,并且熟悉系统,而且年纪较大,性格沉稳的人来做核心。因为他就算不能起到什么大的作用,至少能够保证慎重。而慎重和保守恰恰是是保证维护工作顺利完成的关键。换句话说,维护系统并不能随心所欲,这个工作往往比开发还有着更多的限制和约束。

对于系统的实现和设计者来说,应该具有一定的维护思想,特别是实现者。很多软件设计的很好,或者就算设计的没什么新意,至少中规中矩,但实现的很烂,最终导致系统的毁灭。所以实现系统的人,一定要具备维护的思想,在写程序的时候,就要考虑维护的成本。而提高可维护性的第一原则就是尽可能的 减少代码量。 大体上来说,许多的程序员并不是很重视减少代码量的问题。有的时候还因为写了巨多的代码而骄傲。这其实是完全错误的想法。好的程序员和平庸的程序员往往就区分在这个地方。好的程序员对待代码十分的执着,会想尽办法使自己写的代码精致和优雅;而平庸的程序员,往往完成功能了事,反正代码是否精简集约,测试也无法发现。当然,其实这种说法等于没说,或者说等于没用,不过我觉得可能并非人人都明白这个道理。

少的代码更容易维护,这个是毋庸置疑的。但是如何做到却很困难,而且关键是,并没与类似模式那样的相对固定和场景化的东西存在,往往需要因地制宜。下面我会根据我的经验写一些建议,仅仅适用于java语言1.6版本。
  1. 减少if else语句的高度。if-else语句越高,就越影响理解,因为if-else语句中的条件不但重要,而且还相互关联。把相互关联的东西都尽量写在一起是一种非常好的编程习惯。
  2. 少些注释。最好只写doc注解。少写注释会让你在如何命名方法和变量上多花费一些精力。
  3. 别写毫无意义的接口,非常影响阅读和重构。如果这个接口仅仅有一个实现,那这个接口就是完全没有必要的。
  4. 尽量只用一个配置文件。
  5. 尽量不要拼sql,哪怕多写几个。拼sql也应该用preparedStatment。。。
  6. 使用对象作为数据结构,而不是随意的使用map和list。这点真的很有趣,明明是java语言,却好像在使用c语言开发。到处使用map套lis或者list套map。
  7. 如果需要生成返回值尽可能的返回对象而不是字符串。特别是一些servlet,里面返回页面的时候,不要自己拼写json结构。为什么不用类库呢?
  8. 使用类库。使用类库,不要什么都打算自己实现。要知道人类区别与动物的最大一点就是人类会很好的使用工具。对于开发来说,类库就是我们的工具。千万别什么都想着自己实现,别忘记了,你是在喧嚣的人类社会里面,而不是荒凉的小岛上。
  9. 要有责任心,对自己的代码负责,不要因为工期而打马虎眼。事实上,虽然经理们说的十分严重,但是工期总是一延再延的,一气呵成的软件一定是驴粪蛋蛋,表面光。
  10. 处理一下IDE给的警告。
  11. 查查字典,不要满篇错别字。
  12. 这条是给老板们说的:求求你们雇一个真正懂开发的人来开发吧。





转载于:https://my.oschina.net/clarkhill/blog/190166

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值