profile for Macon_Cao at Stack Overflow, Q&A for professional and enthusiast programmers
随笔 - 130  文章 - 0  评论 - 195  阅读 - 13万
 
摘要: 原文:http://www.mikeash.com/getting_answers.html作者:mike@mikeash.com译者:今天早上起床,有幸读到这篇文章,觉得它是我们在这个世界上的基本生存技能之一。内容虽然是程序员相关技术问题,但同样适用于我们的日常生活。所以,决定用自己的碎片时间,将... 阅读全文
posted @ 2013-08-17 07:30 涵树 阅读(450) 评论(1) 推荐(1) 编辑
  2025年1月9日
大概2周前写了一篇《代码的形状:从外到内的探索与实践》
 
觉得这个话题还可以继续,它是一个从无形到有形的过程,而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。
 
我讨论代码的形状,一个初衷是为了降低代码维护的心智负担,而要达到这一目的,其实也是要使代码更加符合于“理”。
 
使用tree命令来查看代码的目录结构,这个方法颇为有效,他可以让我们很方便的评估这样的结构是否符合我们对项目逻辑的理解。
 这是一个动态且永不停息的过程,代码在变,而你同时也在变。上面的这个common模块,之前也没有这么多的文件,也是一步一步的重构出来的。其中有一些在重构的过程中修改了名字。
 
“名字”这个东西,在编程的世界里,往往被一些初学者甚至是部分有经验的开发者视为无足轻重的细节。他们可能觉得,只要代码逻辑正确,功能实现,名字不过是些符号,随便取取就行。然而,我深感这种观念大错特错。“名字”的重要性、价值和可操作性,在我看来,远远胜过了设计模式和架构。
 
首先,代码中的“名字”是逻辑清晰度的直接体现。当我们为变量、函数、类或模块取名时,如果名字是随意的、模糊的,那么这往往反映出我们对这段代码的逻辑理解还不够清晰。一个好的名字,应该能够准确地传达出代码元素的用途、功能和性质,让阅读者一眼就能明白这段代码的意图。相反,一个随意的名字,获取不够精确的名字,会给代码维护增加心智负担,增加维护的难度。
 
因此,名字的选择直接影响着代码的可维护性。如果名字不清晰、不准确,那么当日后需要对代码进行修改或扩展时,开发者就会陷入困境。那么如何使名字“清晰”和“准确”呢?呵呵,这里感觉就是一个玄学,或者,我说它不是静态的。即没有一个永远“清晰”和“准确”的名字存在。我们需要不断的review,如果有看不懂的地方,可能就要考虑重构或者修改“名字”了。
以上面的代码为例,如果我想不起某一个方法的作用,那么我就要考虑修改名字了。
 
然而,我发现有一个悖论存在于我们的开发实践中。那就是,当我们感觉到代码测试老是有改不完的bug,项目已经变得难以维护时,才想起来要重构。他们希望通过“重构”这剂良药来改变项目的现状,让代码变得更加清晰、可维护。但是,这个时候的“重构”本身也是很危险的。因为在一个已经充满bug、逻辑混乱的代码中进行重构,就像是在一个摇摇欲坠的建筑上进行改造,一不小心就可能引发更大的崩塌。重构带来的改动可能会引入新的bug,大概率会破坏原有的功能,很难起到期望的效果。这也可能是互联网上的流传的“屎山”代码越堆越高的原因吧,没人敢去重构。
 
这也是我前面说的,“名字”的重要性,价值和可操作性远远胜于重构和系统架构的原因,因为,好的命名是重构和系统架构改进的前提。这是我所相信的,你呢?
 
posted @ 2025-01-09 19:41 涵树 阅读(17) 评论(0) 推荐(0) 编辑
  2024年1月1日
摘要: 今天开源了我的笔记系统我的笔记系统从9月份开始动工,到现在仍然在开发中。一个人开发的创造力总是有限,所以决定开源。采用的是Apache-2.0协议考虑到国内的具体环境,所以把项目放在gitee上,链接如下: https://gitee.com/hanshu_alan/notes 阅读全文
posted @ 2024-01-01 11:54 涵树 阅读(19) 评论(0) 推荐(0) 编辑
  2019年4月3日
摘要: 昨天有朋友问我你写了这么多年的代码,你到底是前端开发人员还是后端开发人员?我被这个问题给愣住了,问题不在前端和后端,而在于这么多年我还是一个开发人员。但我不在乎这件事情,因为这么多年了,我发现我对写代码的热情不减反增,我的愿望是退休之后还能继续写代码。回到正题,我觉得没有必要去贴前端开和后端的标签。 阅读全文
posted @ 2019-04-03 11:21 涵树 阅读(3853) 评论(0) 推荐(1) 编辑
  2018年4月26日
摘要: 开发一个microservice,Demo级别和产品级别对开发者的要求是不一样的。 从上面的图来看,Demo只会涉及资源服务器这一块,那其它部分呢? 以SDK的方式实现,开发者负责Client到资源服务器的所有开发工作 以PaaS的方式实现,开发者只负责实现资源服务器的开发工作 参考阮一峰关于Iaa 阅读全文
posted @ 2018-04-26 12:12 涵树 阅读(363) 评论(1) 推荐(1) 编辑
  2018年4月10日
摘要: 最近在做微服务的前后端设计,打算将客户端中的一个模块独立出来发布到npmjs上,因此,有机会了解了一下npm的发布过程。 参考了很多网上的文章,长篇累牍(但在这里还是真心感谢他们的分享),最终总结成一个命令: npm publish 当然,为了让这个命令成功执行,准备如下: 初始化项目 创建npm账 阅读全文
posted @ 2018-04-10 10:07 涵树 阅读(1225) 评论(0) 推荐(0) 编辑
  2017年12月15日
摘要: 今天和网上的朋友聊到了前端开发,这位朋友真是一位大师级人物,聊聊几句话,几乎就概括了整个前端的开发工作。 我整理了一下,前端的开发工作大致包含3点: 1. 前后端的数据交互 2. DOM操作 3. 模块化设计 /* 因此,我也兴趣大发,想借此写点什么。首先声明一下,下面的口水话较多,仅当是一次技术闲 阅读全文
posted @ 2017-12-15 10:49 涵树 阅读(1850) 评论(0) 推荐(1) 编辑
  2016年9月4日
摘要: 献给我的女儿以及天底下正在出差的父亲。 今天到辛巴克去整理有关REST的资料。我的对面坐着一个父亲和他的女儿,她大概读小学二年级。父亲先是翻了一下女儿的语文书,然后给女儿说,那篇课文好,要深读,那篇课文不好,了解就好。 然后,父亲给女儿说,他9月份要去出差。接着父亲开始给女儿展示上次出差时的旅行经历 阅读全文
posted @ 2016-09-04 21:15 涵树 阅读(175) 评论(0) 推荐(0) 编辑
摘要: #星际迷航3# 未来之城以奇妙的引力系统,将湖水固定在天上,使人们能够抬头看到另一个地面。未来高科技将引力的应用展现在我们面前的同时,这部电影还为我们展现了另外一种引力,它来至于三位父亲。 这三位父亲并没有出现在电影里,但正如引力一样,没有出现并不等于不存在。三意味着许多,其中也应该包括我们的父亲。 阅读全文
posted @ 2016-09-04 20:51 涵树 阅读(204) 评论(0) 推荐(0) 编辑
  2015年12月7日
摘要: 在这次项目开发实践中,我又一次尝试用Python脚本生成C#代码,其效果让我很满意 -- 提高了代码质量,可维护性和工作效率;同时降低了出错率。看来事情在向好的方面发展。那么促成的因素是什么?我思考了一下,可能有以下2点:在用脚本生成代码方面积累的实践技术经验在运用第1点时,让我感受到了“数据建模”... 阅读全文
posted @ 2015-12-07 07:32 涵树 阅读(516) 评论(0) 推荐(0) 编辑
  2015年5月24日
摘要: 最近又用Python写了一个小工具,结合自己在C#上已有的一点重构经验,让我又经历了一次不一样的旅行。 当我开始写这个工具的时候,我决定不做任何设计,来一次“任性”的编码,看最终会是什么样子。 阅读全文
posted @ 2015-05-24 23:22 涵树 阅读(586) 评论(1) 推荐(1) 编辑
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示