文档章节

程序框架的作用

崔钢
 崔钢
发布于 2015/03/05 15:58
字数 1293
阅读 277
收藏 3

一年之前的那段时间,我一直在维护一个断断续续持续了近5年的项目的程序,直观的印象的惨不忍睹,从未读过如此糟糕的代码。没有任何的设计,完全是想到哪里写到哪里。代码中细节非常多,最明显的是有大量的临时使用的中间变量,从不自己定义对象,需要数据结构的时候,就随便的定义一个list或者一个map凑合着使用。而且从来不用泛型,对于IDE工具的警告置之不理。大段大段重复的代码,从来不提取方法,需要相似的功能就直接把代码段复制过去,然后修改几个变量。从来不使用foreach循环,偏爱while+迭代器。大多数的类都超过3000行,大多数的方法都在150行上下。而且还没有任何的文档,或者DOC注释。程序中虽然有一些注释,但是基本上如同梦中呓语,不知所云。还有大段大段注释掉的代码,总之可读性极差。

这个项目还有一个显著的特点,就是在竭尽全力的使代码行数增多,而且尽可能的写的晦涩,使用大量的错别字来误导你,让你不读它200行的逻辑就不明白它的意思。临时变量不但多而且名称还特别怪,都是一些符号,既不是汉语拼音也不是英文,大小写还很随意,想大写就大写,想小写就小写,完全没有规律,就像被混淆过的。最为过分的是,居然还有大段大段完全无用的代码,这些代码的执行对于方法的结果完全没有影响,删除之后程序完全正常。WTF?

这个项目还有一个有趣的地方,就是似乎完全不知道java的命名约定,类名和接口名称想大写就大写,想小写就小写,既不用骆驼命名法,也不用下划线。错别字奇多,使用英文单词,要不少几个字母,要么多几个字母,总之就是故意恶心你。完全不知道java是有对象的,特别喜欢在方法里罗列一堆一堆的String或者Strhig数组。特别喜欢用sb(StringBuilder)的append来自己拼接JSON字符串,想怎么拼就怎么拼,明明就是一个字符串,还是要拆成好几个append拼接。有的时候这个拼接的过程跨越上百行代码。特别喜欢拼sql玩,而且分的很开,之间毫无关系,先拼几个条件,然后干点别的事情,在忽然拼一个表名,再拼几个条件,过程拉的很开很大气,总之凡是拼接的至少都要跨越几百行。

其实我觉得在这个代码基础上做任何的修补工作都是无济于事的。就如同让鲁迅来修改小学生的作文,让王羲之来修改毛新宇的书法,让食神把一泡狗屎做成美味一样。最好的做法其实就是重做吧。注意是重做不是重构。重构也是要有基础的,不是什么样的代码都能够重构的出来,至少要基本正确才行。

这个项目让我更加的明白了框架的作用,我一直在思考,如果这个项目使用了Sping会怎么样?因为Spring里面有很好的JDBC封装,很好的MVC封装,大概不会让程序变成现在这个样子吧。框架可以限制水平差的程序员的破坏性。我觉得我的老板并没有认识到这个问题。因为他水平太高了,他总觉得我们的这个项目的功能是十分简单的。而且他十分的重视数据模型的设计,认为数据模型才是系统的核心。他这个理解其实不能说是错的。但是在我看来,一个项目,他的方方面面其实都是非常重要的,而且最需要关心的其实就是代码的质量。你数据模型设计的再好,没有好的应用,也无法体现出来。应用层其实才是系统最具有价值的地方。因为数据其实仅仅是原材料,再好的数据没有应用的支持,也无法发挥其作用的。

不重视代码质量其实是很多软件公司的通病。大家都喜欢与天花乱坠的设计,以及花里胡哨的功能,却从来不关心实现是怎么做的。也从来不认为实现也是一个极具技术含量的工作。这种错误的认识毁灭了无数花哨的设计,终结了无数的公司以及创业的梦想。而其实成功总是从脚踏实地中得来的,必须要关注每一个细节。

© 著作权归作者所有

共有 人打赏支持
上一篇: 抽象的好处
崔钢
粉丝 171
博文 99
码字总数 59953
作品 0
西安
高级程序员
私信 提问
加载中

评论(4)

崔钢
崔钢

引用来自“码农界傲娇段子手”的评论

比较同意作者老板的见解
恩,老板当然是对的,可是这个项目剧烈膨胀之后,他其实也意识到了这个问题。软件不仅仅是可以运行就行了。
开源无憾
开源无憾
比较同意作者老板的见解
处处闻啼鸟
处处闻啼鸟
博主加油;-)
聽雨人
聽雨人
我是支持代码设计的,可以有时候也会疑惑,这样不堪的系统也已经跑了5年了不是吗?
加入一开始就卡代码质量的话,项目能不能出来呢?毕竟有时候我们对队友不能要求太多。
所以渐渐喜欢简明风格的代码,有设计但不要太完善太智能。
《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式

原创文章,欢迎转载。转载请注明:关东升的博客 什么是设计模式。设计模式是在特定场景下对特定问题的解决方案,这些解决方案是经过反复论证和测试总结出来的。实际上,除了软件设计,设计模...

智捷课堂
2016/01/22
33
0
库房管理系统架构篇--MVC+三层+EasyUI

前言 之前我们做C/S项目都是采用三层或者是七层,到了B/S阶段,会有各种各样的框架和技术,而每一种框架和技术都有各自的适用范围和优缺点。这次小编接手的库房管理系统,采用MVC+三层框架,...

weienjun
2017/12/02
0
0
微信小程序开发框架_类MINA文件结构

微信小程序开发框架_类MINA文件结构 微信小程序MINA文件结构 微信小程序包含一个描述整体程序的app和多个描述各自页面的page。 一个微信小程序主体部分由三个文件组成,必须放在项目的根目录...

百度小程序
2018/11/12
0
0
01 - Object-C入门

Object-C简介 在C语言的基础之上,增加了一层最小的面向对象语法 完全兼容C语言 oc代码中可以混合使用C语言和C++代码 oc可以用来开发MAC OS X平台和 ios平台的应用程序 基本语法 关键字 基本...

口十耳
2015/12/22
59
0
干货~powershell与bash和docker在项目中怎么用

这个标题够直接了吧,够坦诚了吧,也许你在项目里这三个东西都没有用到,但这三个东西在未来的两年里将成为最HOT的技术,它们不是什么框架,也不是什么设计模式,而是做为程序和环境快速部...

mcy247
2017/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一文说尽MySQL事务及ACID特性的实现原理

本文将首先介绍 MySQL 事务相关的基础概念,然后介绍事务的 ACID 特性,并分析其实现原理。MySQL 博大精深,文章疏漏之处在所难免,欢迎批评指正。 MySQL 事务基础概念 事务(Transaction)是访...

架构师springboot
36分钟前
7
0
Vue +Element UI后台管理模板搭建示例

一、蓝色主题 Element ui 后台管理 Demo https://github.com/taylorchen709/vueAdmin https://taylorchen709.github.io/vueAdmin/#/user Element ui 文档 http://element.eleme.io/#/zh-CN/......

tianma3798
今天
2
0
小白学习大数据的最详细的学习路线图就在这里

现如今大数据已经上升到国家战略层面,企业对于大数据的关注和重视程度也在不断提升。想要成为大数据工程师,大需要很多种基础理论知识与编程框架、分布式服务器等来支撑,这也是使得一个大数...

董黎明
今天
9
0
2019Java学习规划

重要性 虚拟机 > 并发 > 数据库 > 设计模式 > 算法 读书 深入理解Java虚拟机 Java并发编程实战 剑指offer

2change
今天
3
0
聊聊flink JobManager的High Availability

序 本文主要研究一下flink JobManager的High Availability 配置 flink-conf.yaml high-availability: zookeeperhigh-availability.zookeeper.quorum: zookeeper:2181high-availability.zo......

go4it
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部