开发人员可能听到过"bad smell"这个词,这个词用在软件编码中是什么意思呢? 代码还有smell吗?当然没有,正如计算机病毒,bug等词一样,这只是个形象的说法。这个词在这里的意思是代码实现了需求,但是代码却不精炼,冗余,结构混乱,难读懂,难维护,难扩展等等。与之相对应的一个词是"refactor",即代码重构。我们在看些外国人写的程序时可以发现,他们的代码里一般会定义大量的类、接口、方法,类与类,类与接口之间很多是继承和实现的关系,方法的代码行数很少,超过20行代码的方法不多,看他们的代码感觉最多的就是方法之间的调来调去,不像我们的代码,一个方法下来几十上百甚至两三百行都是最基本的语句构成,很少调用自己的方法。两相比较,可以看出,前者在结构上更清晰,通过类视图就可看出设计意图,并且总的代码量不会高于后者,而后者代码量庞大,代码冗余现象严重,结构不清晰,很难维护,如要修改某个错误,可能涉及到要修改的代码点很多,这样后来的维护者就很头疼了。造成这种状况的原因有这样一些:
1.经验不足,分析设计不到位
2.敏捷开发,虽然经验很多,但为了快速开发,没有经过分析设计
3.缺乏意识,只为实现功能而写代码,不管代码质量
对于这样的代码,我们怎样将其变得更为精炼和易于维护呢?这就是代码重构。重构不是针对功能,纯粹是对代码本身。重构后的代码不会影响到系统的运行。
我们来看看可以在哪些方面对代码进行重构:
1.重命名:对类,接口,方法,属性等重命名,以使得更易理解
2.抽取代码:将方法内的一段代码抽取为另一个方法,以使得该段代码可以被其他方法调用,这是重构中很重要很常用的,此举可以极大的精炼代码,减少方法的代码行数
3.封装字段:将类的某个字段转换成属性,可以更加合理的控制字段的访问
4.抽取接口:将类的某些属性,方法抽取组成个接口,该类自动实现该接口
5.提升方法内的局部变量为方法的参数:这主要是在写代码的过程中会使用到
6.删除参数:将方法的一个或多个参数删掉
7.重排参数:将方法的参数顺序重新排列
实际应用中,用的最多的是1、2、3,我们可以在写代码的时候有意识的运用代码重构,这样当我们完成编码时代码的质量也能得到保证。
本文来自CSDN博客,出处:http://blog.csdn.net/weiky626/archive/2007/05/10/1602691.aspx
分享到:
相关推荐
接下来,我们谈谈“修改代码的艺术”。在软件开发中,需求变更、bug修复等都需要对已有代码进行修改。这时,我们需要谨慎处理,遵循一定的原则。首先,确保充分理解原有代码的逻辑,再进行修改,以免引入新的错误。...
通过重构,我们可以消除代码异味(Code Smell),即那些暗示潜在问题的代码结构,如冗余代码、复杂的条件逻辑和过深的继承层次。常用的重构技术包括提取方法、引入参数对象、提取类、替换类型检查等。重构不仅提升了...
首先,我们来谈谈代码行数统计的重要性。在软件开发过程中,代码行数(LOC,Lines of Code)常常被用作衡量项目复杂性和工作量的一个粗略指标。虽然它并不能完全反映代码的质量或效率,但在项目管理和估算开发时间时...
接下来,我们来谈谈代码提示和智能感知。Visual Studio的IntelliSense功能可以实时提供代码补全、方法签名、成员列表等信息,极大地提高了编码效率。用户可以根据需要调整智能感知的灵敏度,避免过多的干扰,同时...
使用解密工具,我们可以分析并重构这些混淆的代码,使其恢复可读性,便于理解和调试。 CSS(层叠样式表)是控制网页外观和布局的重要部分。虽然CSS编码相对简单,但有些网站可能会使用CSS加密技术,比如通过特殊...
代码重构也是优化的一部分,通过将冗长和复杂的函数拆分为多个小函数,可以使代码更易于理解和测试。同时,遵循SOLID原则(单一职责、开闭、里氏替换、接口隔离、依赖倒置)有助于提高代码的可维护性和可扩展性。 ...
2. **代码重构**:简化代码结构,消除冗余,提高代码可读性和维护性。 3. **缓存策略**:对频繁访问的权限信息进行缓存,减少数据库查询,提升响应速度。 4. **并行处理**:如果系统支持多线程或多进程,可以将权限...
在Java开发中,通常使用IDE(集成开发环境)如Eclipse、IntelliJ IDEA等,它们提供了丰富的源代码管理功能,如版本控制集成(Git、SVN等)、代码提示、重构工具等。同时,IDE还支持断点调试,允许开发者逐行执行代码...
此外,它的代码导航功能可以帮助开发者快速定位和理解复杂的代码结构,而代码重构工具则能帮助优化代码结构,使代码更易于维护。 对于代码风格一致性,Visual AssistX也表现出色。它可以自定义代码格式规范,确保...
这对于自动化代码处理、重构或者构建自定义的代码分析工具非常有用。 在实际开发中,这些插件的结合使用可以显著提升VS2010中JavaScript开发的效率和质量。JScriptEditorExtensions提供舒适的开发环境,JSLint.VS...
首先,让我们谈谈Web前端开发。它涵盖了网站中用户可以直接看到和交互的所有部分,包括HTML(超文本标记语言)用于页面结构,CSS(层叠样式表)用于样式设计,以及JavaScript用于添加动态功能。Sublime Text是一个...
首先,我们需要熟练掌握主力编程语言(如Python),包括常见的写法优化、代码效率优化、高频代码段的快速实现、快速修复错误等。熟练掌握shell也很重要,可以帮助我们快速处理大量数据和实现复杂的任务。 熟练掌握...
4. 类似代码重构:如果无法直接获取源代码,可以尝试根据论文描述自己重构代码。 MATLAB是一种广泛用于数值计算、数据分析和科学可视化的编程语言,尤其在工程和科学仿真领域非常流行。MATLAB源码通常具有良好的...
包含第一部分html,第二部分CSS,第三部分...第十部分综合问题,如谈谈你对重构的理解、什么样的前端代码是好的、对前端工程师这个职位怎么理解、前端的价值体现在哪,最后整理了一些常常见问题无具体答案内容的。
这是一个开源的清理和重构工具,可以帮助开发者整理代码,使其更整洁、易读。CodeMaid提供了一系列自动化的清理规则,包括格式化代码、优化导入语句、删除未使用的变量等。此外,它还集成了Git,便于代码审查和版本...
文档可能还涉及错误调试、性能分析和代码重构的策略。 总之,Delphi作为一款强大的开发工具,提供了丰富的功能和优秀的性能,适合开发桌面应用程序。通过深入学习和实践,开发者可以充分利用其优势,提高开发效率,...
Fragments 提供了一种灵活的方式来构建动态和可重构的用户界面,特别是在平板电脑和手机等不同屏幕大小的设备上。本文将详细介绍Fragments 的使用、设计理念、生命周期以及分类。 **Fragments 的诞生初衷** ...
此外,通过正则表达式实现的查找和替换功能,让代码清理和重构变得更加高效。还可以创建自己的快捷键,提高操作速度。 编程格式化工具也是不可或缺的一部分,它们帮助保持代码的整洁和一致性。例如,Prettier和...