昨天看了一下CSDN举办的SD2.0大会邀请的嘉宾,不得不说,确实阵容很强大,都是业界比较有名气的人,就小弟知道名有其人的,有JE的肉饼,翻译《深入java虚拟机》的曹晓刚,JE技术大牛李锟,《java夜未眠》作者蔡学镛等等。大会涉及软件开发的8个领域,我比较感兴趣的是架构和实践,或许我可以借此解决我工作中遇到的问题。
目前手上差不多有四个任务,其中2个是跟重构有关,一个是上面分给我的,一个是我主动要求的,我很感谢头儿分给我这么一个比较有趣而且有挑战性的任务,重构就是站在别人的肩膀上看问题,这不是一个简单的事情。虽然只是某一个小模块,但是我也满足了。小到一个变量,一个方法的重构,大到一个模块设计的重新架构,我都必须谨慎对待。我知道重构是一件神圣的事情,我更乐意叫维护人员为重构人员,软件的80%工作都是在维护和重构,在我看来,重构是大型软件企业急需的技能。
重构能力=企业持续的竞争力,这样说一点都不夸张,就拿我们公司来说,目前的项目组的架构已经不能够满足各个功能的修改,每一次小的变动都必须修改代码,每一次提交测试都会反馈大量的BUG,有几个模块因为当初设计的时候路线不对,现在修修补补了好多次还是有很多BUG。
拿一个我比较熟悉的任务来说,重构的需求,也是目标:
1.通用性(可复用性),头儿要求最好能够适用组内其他小项目,尽量将所有重复性的代码都写在一个地方集中管理,提炼出不同的业务逻辑,这一部分可以根据各个小项目自定义,不管是继承类也好,写在配置文件也好,只要将不变的和变化的分开,尽量做到代码层次的重用,业务逻辑层次的重用就好。
2.可维护性(可扩展性),模块必须满足目前面临业务逻辑所有可能的情况,意思就是说,在目前能够想到的业务逻辑变化时,尽量做到OCP原则,在我们头儿来看,OCP原则就是将业务逻辑变化之处写在配置文件中。
3.清晰性(架构优美),架构清晰,流程清晰,简单即是美,简单的问题,我们就不要把问题搞的太复杂,为了解决问题就不要把他演变成为了彰显自己的能力,过度设计就是这么一个例子。清晰性最好的解释就是,你的解决方案能够在评审会议上让大家欣然明白并接受。
4.可用性(用户体验性),如果不是GUI设计,那么我们这里主要强调的是性能的优化,性能的提升,包括战略上的,也有战术上的,战略上主要是在软件开发过程上的控制,包括了需求、设计、实现和测试的各个阶段的一些原则。战术部分则包含了Java各个技术环节的经验,包括I/O编程、内存对象、类加载的控制、如何使用Java对象、算法和数据结构、本地方法、Swing模型和渲染器、Swing线程模型以及部署等各方面的技术和方法,这些技术和方法可以帮助你极大提高Java应用程序的性能。
上面说的太笼统了,本来我是针对某一个任务来说的,但是思维发散到尽量使用所有的重构实践了,可能是平时设计方法和类的习惯,能够一般化,就尽量不要搞特殊。呵呵,不过有一句话时刻提醒着我,不要为了优化而优化,最后性能的优化,如果不是你的应用出现太大的性能问题时,你应该第一时间保持你的应用能够正确完成业务逻辑,减少BUG数量,然后再是可扩展性,可复用性,最后才是性能上的完美,还有架构和代码各个细节的完美。
分享到:
相关推荐
王家林,一位资深的软件工程师与架构师,在其著作《王家林的软件重构最佳实践》中,分享了他在软件重构领域的深刻见解与实践经验。这本书被誉为软件开发领域的一部经典之作,对于任何希望提升软件项目质量和团队生产...
Go语言重构实践 郭军
前端重构实践(一):性能优化 前端重构实践是指对前端代码进行重构以提高性能和模块化。性能优化是前端开发中非常重要的一部分,因为页面加载速度对用户体验和搜索引擎优化都有着极高的要求。本文将讨论如何对前端...
### 软件重构的思考与实践 #### 一、什么是重构? 重构(Refactoring)是一种在不改变软件外部行为的前提下,对软件内部结构进行调整的过程。这种调整旨在提高代码的质量,使其更加易于理解、修改和维护。软件的...
模块化架构是目前大型Android应用开发的趋势之一。 2. 微信架构历史回顾:文档中提到的微信-IALoEA架构的演变,从简单分层架构、多进程架构、到多子工程并行开发架构,可以看出微信在不断的发展过程中,如何根据...
9. **重构与敏捷开发**:在敏捷环境中,重构作为持续改进的一部分,与迭代开发和用户反馈紧密关联。 通过以上内容的学习和实践,开发者可以提升自己的重构技能,为项目带来更好的架构和更高的代码质量,从而实现更...
《重构极限编程XP的实践与反思》是一本深入探讨软件开发方法论的书籍,主要针对的是极限编程(Extreme Programming, XP)这一敏捷开发框架。XP作为一种以客户需求为中心、强调快速反馈和持续改进的开发方式,曾经在...
"系统重构的最佳实践" 系统重构是任何技术团队无法回避的问题,它需要投入巨大的成本和资源,却可能带来业务的不稳定和新的问题。因此,在进行系统重构之前,需要确定并聚焦目标,确保重构能够获得良好的收益。 ...
《剖析业务架构与业务系统重构实践》
此外,测试驱动开发(TDD)是XP的关键实践之一,要求开发者先写测试用例,再编写满足这些测试的代码,确保代码的正确性。 书中还讨论了如何通过“计划游戏”来管理项目,这是一种高度互动的规划方法,让客户、...
### 项目实例讨论—一个架构重构项目的迭代实践 #### 一、引言 在软件开发过程中,随着项目规模的增长和技术的演进,原有的系统架构往往难以满足新的需求或技术挑战,这时就需要进行架构重构。本文将详细介绍一个...
重构是软件开发过程中一个至关重要的环节,它旨在不改变代码外在行为的前提下,改进代码结构,使之更易理解和修改。此书深入浅出地介绍了重构的概念、原则和实践方法,对于任何Java开发者来说,都是提升编码技艺的...
知乎推荐系统的实践及重构之路 孙付伟
公众平台网页重构实践PPT学习教案.pptx
“设计模式”作为本书的标签之一,表明重构与经典的设计模式密切相关。在重构过程中,往往需要运用到如工厂模式、单例模式、观察者模式等经典设计模式,以解决特定的软件设计问题。通过重构,可以将代码从原始的、...
3. **保持简洁**:重构的目标之一就是简化代码结构。这不仅包括去除不必要的代码,还包括简化逻辑结构,使得代码更加清晰易懂。 4. **遵循设计模式**:在重构的过程中,应该参考并遵循一些已知的设计模式,这些模式...
本项目为基于Java语言的影片出租店系统重构实践设计源码,总共有42个文件构成,包括12个Java源代码文件、12个Java类文件、8个XML配置文件、2个Git忽略文件、2个Gradle构建文件、1个Markdown文档、1个JAR包文件、1个...
这本书是每一位致力于提升软件工程实践水平的开发者,尤其是架构师的必读之作。 重构的核心概念在于,当代码变得难以理解和维护时,我们需要对其进行整理和优化,使其更清晰、更简洁,同时保持原有的功能。这一过程...
重构是软件开发过程中的一个重要环节,它涉及到代码的优化、设计改进和质量提升,而不改变程序的外部行为。本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why...