首页 > 其他分享 >代码的形状:重构的方向

代码的形状:重构的方向

时间:2025-01-09 20:02:13浏览次数:1  
标签:重构 逻辑 代码 名字 清晰 形状 bug

大概2周前写了一篇《代码的形状:从外到内的探索与实践》 涵树:代码的形状:从外到内的探索与实践
  觉得这个话题还可以继续,它是一个从无形到有形的过程,而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。   我讨论代码的形状,一个初衷是为了降低代码维护的心智负担,而要达到这一目的,其实也是要使代码更加符合于“理”。   使用tree命令来查看代码的目录结构,这个方法颇为有效,他可以让我们很方便的评估这样的结构是否符合我们对项目逻辑的理解。  这是一个动态且永不停息的过程,代码在变,而你同时也在变。上面的这个common模块,之前也没有这么多的文件,也是一步一步的重构出来的。其中有一些在重构的过程中修改了名字。   “名字”这个东西,在编程的世界里,往往被一些初学者甚至是部分有经验的开发者视为无足轻重的细节。他们可能觉得,只要代码逻辑正确,功能实现,名字不过是些符号,随便取取就行。然而,我深感这种观念大错特错。“名字”的重要性、价值和可操作性,在我看来,远远胜过了设计模式和架构。   首先,代码中的“名字”是逻辑清晰度的直接体现。当我们为变量、函数、类或模块取名时,如果名字是随意的、模糊的,那么这往往反映出我们对这段代码的逻辑理解还不够清晰。一个好的名字,应该能够准确地传达出代码元素的用途、功能和性质,让阅读者一眼就能明白这段代码的意图。相反,一个随意的名字,获取不够精确的名字,会给代码维护增加心智负担,增加维护的难度。   因此,名字的选择直接影响着代码的可维护性。如果名字不清晰、不准确,那么当日后需要对代码进行修改或扩展时,开发者就会陷入困境。那么如何使名字“清晰”和“准确”呢?呵呵,这里感觉就是一个玄学,或者,我说它不是静态的。即没有一个永远“清晰”和“准确”的名字存在。我们需要不断的review,如果有看不懂的地方,可能就要考虑重构或者修改“名字”了。 以上面的代码为例,如果我想不起某一个方法的作用,那么我就要考虑修改名字了。   然而,我发现有一个悖论存在于我们的开发实践中。那就是,当我们感觉到代码测试老是有改不完的bug,项目已经变得难以维护时,才想起来要重构。他们希望通过“重构”这剂良药来改变项目的现状,让代码变得更加清晰、可维护。但是,这个时候的“重构”本身也是很危险的。因为在一个已经充满bug、逻辑混乱的代码中进行重构,就像是在一个摇摇欲坠的建筑上进行改造,一不小心就可能引发更大的崩塌。重构带来的改动可能会引入新的bug,大概率会破坏原有的功能,很难起到期望的效果。这也可能是互联网上的流传的“屎山”代码越堆越高的原因吧,没人敢去重构。   这也是我前面说的,“名字”的重要性,价值和可操作性远远胜于重构和系统架构的原因,因为,好的命名是重构和系统架构改进的前提。这是我所相信的,你呢?  

标签:重构,逻辑,代码,名字,清晰,形状,bug
From: https://www.cnblogs.com/czy/p/18662806

相关文章

  • 使用云数据库RDS和低代码开发平台“魔笔”,高效构建门户网站,完成任务领智能台灯!
    传统建站涵盖需求分析、设计、开发、运维等环节。需分析软硬件需求并购买配置,设计网页布局,前后端编码调试,涉及业务逻辑、数据库及API。更新时需调整设计与代码。运营期需进行服务器维护、数据监控和安全检查,整个过程耗资费力。本方案将为您详细介绍如何使用云数据库RDS和低代码开......
  • 遗传算法求解物流配送中心选址模型的MATLAB程序代码
    遗传算法求解物流配送中心选址模型的MATLAB程序代码列表GA/center.mat , 183GA/Consumer.mat , 234GA/costfun.m , 1437GA/dem.mat , 205GA/Distance.m , 171GA/DrawPath.m , 214GA/factory.mat , 183GA/Fitness.m , 69GA/GA.m , 2344GA/InitPop.m ......
  • 【Vue.js 2.x源码解析】第24章 Vue 是如何通过codegen把模板变成代码的
    第24章Vue是如何通过codegen把模板变成代码的一个例子带你搞懂AST到代码的过程一步步解析`generate`的生成逻辑1.`genElement`的实现2.`genFor`如何处理`v-for`的3.`genData`和`genChildren`的搭配写在最后Vue的编译过程,简单来说......
  • 示例代码对API接口的作用
    引言在现代软件开发中,API(应用程序编程接口)扮演着至关重要的角色。API允许不同的软件系统之间进行通信和数据交换,从而实现功能的扩展和应用的集成。示例代码作为API文档的重要组成部分,对开发者理解和使用API接口具有显著的作用。本文将详细探讨示例代码在API接口中的作用,并通过实......
  • 代码之美-代码整洁之道
    作者:京东零售刘仲伟一、开篇引言京东零售从9月开始对技术风险系统性地跟踪汇报,以故障数、监控发现率、故障发现时间、故障恢复时间等多个指标进行统计和跟踪汇报,相比于之前线上小故障杖责二十、大故障发配宁古塔,有了向惩前毖后、治病救人方向的转变。我也有机会参与到其中部分......
  • 腾讯云AI代码助手编程挑战赛:基于腾讯混元实现智能问答与交互AI对话功能
    引言在当今人工智能迅猛发展的时代,智能问答与交互AI对话功能正逐渐渗透到各个领域,从日常生活中的语音助手到企业级的智能客服系统。腾讯云AI代码助手编程挑战赛正在火热进行中,腾讯云AI代码助手编程挑战赛作为“AI开发黑客松”系列活动的关键部分,其主题“用AI构造AI-打造......
  • 49天精通Java(Day 46):Java的元编程与代码生成
    ......
  • 检测相邻递增子数组 II - LeetCode 3350 解题思路与代码解析
    检测相邻递增子数组II-LeetCode3350解题思路与代码解析在本篇博客中,我们将深入解析一道中等难度的算法题——检测相邻递增子数组II。通过这道题,我们将学习如何高效地处理数组中的递增子数组问题,并理解解决该问题的最佳策略。题目描述给定一个由n个整数组成的数组......
  • 十天速成:打造你的AI低代码系统(五、无代码-审批流)
    前言第一部分:AI辅助开发和AI辅助测试(基于IDEA插件开发)第二部分:无代码-动态列表第三部分:无代码-拖拽表单第四部分:无代码-任务流 第五部分:无代码-审批流第六部分:无代码-分布式任务调度(编写中...)第七部分:附录:百度千帆大模型接入使用方法第八部分:附录:QQ邮箱授权码生成......
  • imessage苹果群发系统 苹果推信使用及技术代码
    iMessage是通过Apple的消息服务发送的。以多台手机为主达到快速群发的一个推广效果。当您使用iMessage发送消息时,消息会被加密并通过互联网发送到接收者的设备。以下是iMessage发送的基本步骤:1.编写消息:在iMessage应用程序中编写您想要发送的消息。2.加密消息:当您点击发送按......