文档章节

一个Web报表项目的性能分析和优化实践(五):重构有助于性能优化么?

jtn
 jtn
发布于 2015/04/13 15:06
字数 898
阅读 5
收藏 0

项目从初次开发到现在,已经快3年了。期间,有N个工程师参与过。

需求方面:增加减少,反反复复,无数次;人力方面:增加减少,不稳定;时间方面:功能开发着急上线,Bug开发紧急修复。

因此,代码臃肿,问题颇多。

自从毕业加入到项目,深感代码质量问题对项目开发效率的影响,因此经常会对项目进行“重构”和“优化”。

主要经历了2次大的重构和无数次小的改进。

今天,特别整理下,希望今后可以做得更好。

重构事项

1.统一标准。

  包、类、方法、字段等命名按照Java标准规范那样,统一命名。

2.重新组织代码。

a. 将项目代码,按照业务逻辑等原则,重新组织到不同的包中。

b. 按照一定的原则,调整类中的方法。

比如对于数据访问层Dao的方法,严格按照查询、增加、修改、删除这样的顺序组织。

而且,使用和修改频率高的代码,放在靠前的位置。

3.增加必要的注释。

对于那些业务比较复杂,容易混淆的代码,加上清晰简洁的注释。

4.删除无用的代码。

将废弃的功能代码,无用的注释,先用@Deprecated标记,过段时间,然后彻底删除。

5.提高代码复用。

Dao层:编写一个实现了常用CRUD功能的BaseDao。

工具层:对常用的工具代码,进行整理,统一到工具库中。

6.清理数据库。

a.将数据库中没有用到的表、字段全部删除。

b.优化表的数据类型。比如将longtext的字段,修改为varchar(20)。

c.规范化表和字段的命名。比如用户表用User,用户地址用userAddress表示。

同时,Java代码和实体配置文件,尽可能与数据库表相统一。

参考建议

更多重构和优化事项,不再赘述。

有兴趣的同学,可以看看《代码大全》、《重构》、《编写可读代码的艺术》这3本书。

重构有助于性能优化么

我只能说,有一定的帮助。

a.重复代码比较少,注释清晰,命名合理的代码,看起来“赏心悦目”。

   本质上,不太可能提高系统性能,但是算得上是性能优化的准备工作。

   项目重构后,开发更有效率,Bug更少,这样才可能有更多的时间去做性能优化。

b.去掉数据库表中无用的字段,这还是有点作用的。

 至少,在SQL查询的时候,比如select *,会少查询一些字段。

见仁见智

重构是否有助于性能优化,是一个见仁见智的问题。

根据我有限的重构和优化经验,我只能说,“重构有助于优化性能,但作用有限”。

打个比喻,当你学画画,想要画一个苹果的时候,“把苹果洗干净”是否有助于你画出一个逼真的苹果呢?

“把苹果洗干净”就是代码重构的过程。

“画出一个逼真的苹果”就是性能优化的过程。

你是怎么看待这个问题的呢?愿闻其详...

相关阅读

一个Web报表项目的性能分析和优化实践

原文参见http://FansUnion.cn/articles/3109 (小雷网-FansUnion.cn)

© 著作权归作者所有

jtn

jtn

粉丝 12
博文 879
码字总数 879609
作品 0
武汉
程序员
私信 提问
高性能网站建设读书笔记(2)Ajax

理解Ajax性能 权衡 过早的优化是万恶之源--Donald Knuth 时间,质量,成本,三选二。(Project Triangle) 增量式开发(incremental development) 迭代式开发,瀑布式开发 大爆炸集成方式(...

adamduan
2015/12/01
34
0
WEB架构师成长之路

一 、你必须学习面向对象的基础知识,如果连这个都忘了,那你的编程之路注定是在做原始初级的重复! 很多程序员都知道类、方法、抽象类、接口等概念,但是为什么要面向对象,好处在哪里,要解...

jerry__sun
2016/07/14
243
0
编程是一门实践技能,积极动手实验常有意外的收获

这是自己这一周的一点小体会。 说来惭愧,这周以来一直在琢磨工程当中某个函数的优化,任务描述当中是说此函数在执行过程当中出现了Pipeline Stall的情形,并且消耗的cycles数也位居前列。读...

Peter87
2015/07/23
148
0
【提升技能必备】这几本Android高级进阶的好书值得一看

Android开发的书籍有很多,下面简单的就我看过的感觉写的很全面,很深入,很有启示意义的几本书推荐给大家,希望大家在闲暇之时也能买来看看。(只是介绍书籍,想买的自己百度书名。别误会。...

AWeiLoveAndroid
2018/01/02
0
0
Velocity China 2015

关于 Velocity China 大多数具有对外动态网站的公司都面临同样的挑战:网页必须快速装载,基础结构必须有效地扩展,网站和服务必须可靠,而完成这一切还要在团队能承受的范围之内,还不能超出...

文洁洁洁
2015/06/05
623
2

没有更多内容

加载失败,请刷新页面

加载更多

Java 8 Stream Api 中的 skip 和 limit 操作

1. 前言 Java 8 Stream API 中的skip()和limit()方法具有类似的作用。它们都是对流进行裁剪的中间方法。今天我们来探讨一下这两个方法。 2. skip() skip(lang n) 是一个跳过前 n 个元素的...

码农小胖哥
31分钟前
1
0
看中华小当家第二集片段记录

最近正好在学习做饭,看看这片子,燃烧燃烧做饭的热情 哈哈,以下是摘的一些句子和个人理解 My name is Liu Mao Xing . More commonly known as Mao. 个人理解:我的名字叫 刘昴星, (commo...

T型人才追梦者
36分钟前
3
0
Python基础-6

1、注释 # 单行注释'''多行注释'''"""多行注释"""# 中文编码声明注释 ,在文件开头加上下面这行注释# encoding=utf-8或者# -*- encoding:utf-8 -*- (-*- 只是为了美观,没有实际......

zfskkk
36分钟前
5
0
我的这半年 / 2018 七夕著

浑然不觉,竟已至七夕, 今年已经过了一半 , 突然想给自己记录点什么 , 回顾下我的2018, 我的这上半年. 2018的第一件记事得从一月份下旬的那场大雪说起 , 一觉醒来 , 窗外整个银装素裹 , 在此之...

gxLong
40分钟前
3
0
NSS支持的数据库

NSS,简写自Name Service Switch。我把它译为“名字服务中心”。 在*nix操作系统中,NSS是C语言库(Library C或者glibc)的一部分,用以寻找名字。比如说,我们运行ls -lh查看一个目录中的文...

大别阿郎
56分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部