最近在分析现有代码,将一部分逻辑抽取出来做服务化,分析的时候才发现里面有很多“坑”。在对相关负责人访谈的时候,发现绝大多数程序员都有这样的习惯:
- 面对一个新的需求,通常的做法是完全沿用现有的设计,完全不考虑现有的设计是否适应新的需求,是否要做改造;
- 想尽一切办法对现有的代码进行修修补补,完成新的功能,以达到修改最小的目的。
- 面对老旧的、无用的代码,很少甚至从来不做删除,以确保风险最低。
然后,用不了多久,代码就变得很难读懂了,只有少数人掌握其中的“真理”。我个人认为,如果是针对某一个特定的应用,规模不大、用户比较少、软件生存周期比较短、需求变更很少的情况下,这样做是可以接受的。 但如果是互联网行业,情况则完全不同:产品周期很长(除非死翘了)、需求频繁变更、业务方向经常变更,这样的做法会让代码很快就变得难以理解(我最近重构的逻辑实际上才过了1年半左右)。 最后导致的结果就是没法维护,重新开发,进入下一次恶性循环。
这种情况以前也经常遇到,绝对不是个案,甚至是普遍的。我开玩笑地对同事说,程序员就是被别人写的代码恶心,再把本来已经很恶心的代码变得更恶心,再用来恶心别人的过程(他离职或者去做其他的系统,别人接替他的工作)。这样对程序员整个的生存环境造成了极大的影响。 维护的工作没人愿意做,但是大多数工作都是维护类型的工作。
为什么不换一种思路来进行呢?
- 首先,收到一个需求,评估需求与现有的架构是否完全吻合,对于不吻合的地方,做少量的调整;
- 确保每次提交的代码,让可读性变好一点点(至少不会变差) (摘自《程序员应该知道的97件事》)
- 架构师或者资深程序员充分参与到项目里面,做好相应的支持;
- 建立较好的单元测试、集成测试、自动构建体系,尽可能减少重构带来的风险。
一些程序员遇到了拆分的问题,比如有个程序员知道底层是不能调用上层逻辑的,但是遇到了底层的一个处理必须要通知上层,又没人告诉他应该怎么做,只好硬性依赖了。对此我只能说IOC几乎每个Java程序员都知道,但是能够深入理解的就不那么多了,如果理解了IOC,就不会不知道如何处理了。
紧张的工期也是一个问题,当然,有些程序员不去动原有的逻辑并不真正的因为是工期的问题,而是以工期为托辞,不愿因做那些费力不讨好的工作。我个人将之归结为职业素养,宁愿晚一点下班,也要把代码写的好一些,这是职业程序员应该遵守的“道德”规范。
相关推荐
在IT行业中,代码重构是一项至关重要的技能,尤其对于Java程序员而言。重构不仅能够提升代码的质量,还能增强软件的可维护性和扩展性。本文将深入探讨《看大师如何重构代码(java程序员必看)》这一主题,解析代码...
设计模式,代码重构设计模式,代码重构设计模式,代码重构设计模式,代码重构设计模式,代码重构
为了支持程序员的重构实践,书中还提到了一些工具,如重构浏览器(Refactoring Browser)等,这些工具可以帮助自动完成一些重构步骤,减少手动操作带来的错误。此外,重构与设计模式密切相关,因为良好的设计往往...
通过重构,程序员能够更有效地管理代码,提升开发效率,减少错误,并促进团队成员之间的沟通。 首先,我们要明白重构的定义。重构是对软件内部结构的一种调整,它的目标是在不改变外部行为的前提下,提高代码的可...
木书是·木重构指南( guide to refacaoring ),为专业程序员而写。我的目的是告诉你如何以一种可控制且高效率的方式进行重构。你将学会这样的重构方式:不引入臭虫〔错误);并且有条不紊地改进程序结构、 按照传统,...
《程序员编程艺术系列之程序员编程艺术》是一本深入探讨编程技巧和思维的艺术性书籍,旨在提升程序员的专业素养和代码质量。编程艺术不仅关乎技术的掌握,更在于如何将技术运用得巧妙、优雅,以实现高效、可维护的...
《重构-改善既有代码的设计》是一本专注于Java编程领域的经典著作,主要探讨了如何通过重构技术来提升既有代码的质量和可维护性。重构是软件开发过程中一个至关重要的环节,它旨在不改变代码外在行为的前提下,改进...
重构真的那么美好吗?强弱类型语言到底哪个更好?敏捷真的靠谱吗?程序员要不要懂数学等。另外,他还谈到了很多大公司的理念,比如亚马逊做平台为什么那么成功等。最后,《程序员的呐喊》还收录了他写的Google面试...
《重构:改善既有代码的设计》和《设计模式》则是那些希望写出高质量代码和具有良好设计模式的程序员必读的书籍。前者教你如何改善现有的代码架构,而后者则是教你如何在软件设计中应用经典的设计模式,提升代码的可...
在本文档中,我们探讨的是一个关于重构代码的实例,特别是针对Java程序员。重构是软件开发过程中的一个重要环节,旨在改善代码的结构、可读性和维护性,而不改变其外在行为。在这个例子中,作者通过一个实际的场景来...
根据提供的文件信息,标题为“程序员悲哀之歌”,但描述部分重复了标题名称,并未提供具体的信息内容。标签部分同样仅有“程序员悲哀之歌”的字样。而部分内容则是一些无法辨识的文字或符号,可能是在传输过程中出现...
标题中的"【EMD重构】.rar"指的是包含EMD重构过程的压缩文件,而"EMD重构函数"是指在处理EMD分解后的IMF分量时使用的特定函数。"IMF变量重构"则是指将分解得到的各个IMF重新组合成原始信号的过程。"tomorrowi4n"可能...
参与这本书编写的还有其他业界知名专家,比如Kant Beck(著名的程序员、测试员、重构专家、作家)、John Brant和Don Roberts(《重构工具的力量》的作者)。他们都是重构研究和实践的活跃分子,并开发了一些工具如...
书中详细阐述了重构的基本原理和操作技术,并且用Java语言中的具体案例进行说明,便于Java程序员理解并应用到实际开发中。重构手法包括但不限于变量、函数、类以及更大范围内的系统结构的改进,每一种手法都旨在解决...
2. 持续关注法:要求程序员始终关注性能,但这种方法可能导致不必要的优化工作。 3. 良好的分解方式:在开发阶段不考虑性能,等到后期才针对性能瓶颈进行优化。 代码编写中的一些不良模式,也被称为“代码臭味”...
书中可能会涵盖重构、设计模式、算法优化等主题,帮助程序员写出更优雅、更高效的代码。 3. **版本控制**:Git是现代软件开发中不可或缺的工具,书里可能会讲解如何有效地使用Git进行版本控制,包括分支策略、合并...
程序员应该在开发新功能或者修复bug的同时,不断地对代码进行重构,从而保持代码库的健康状态。 《重构》一书中的重构方法虽然是用Java语言描述的,但其理论和实践原则可以应用于任何面向对象的编程语言。因此,...
2. 性能优化和代码重构:该模板中,程序员通过优化代码和进行重构,提高了应用程序的性能和用户体验。 知识点:性能优化和代码重构是程序员的核心技能之一。通过学习性能优化和代码重构技术,程序员可以提高应用...