写代码那些事之一:像喝茶一样品析代码

一.写代码那些事

关于如何成为一个更优秀的程序员这个问题,互联网上比比皆是。而答案大同小异:看书、同行评审、参与开源项目等等。但是,关于如何检测自己是不是真的进步了这个问题,却一直悬而未决。

我经常鼓励我的同行说,对于自己写的代码,无论是什么语言什么项目都应该不遗余力地尽可能长时间地保存下来,放到安全的地方(即 GIT/ SVN)。几年过去之后,再拿出来翻一翻。回过头来看自己的代码,会有一种神奇的喜剧效果,“OMG,这么狗屎的代码居然是我写的!!”,但是相信我,没有比重新纠正这些项目和游戏代码更有成就感的了。

今天早上看到自己写的源文件时,发现了这个函数:resize。尽管曾经的我对此不屑一顾,

resize(tmpImage,dstImage1,Size( tmpImage.cols/2, tmpImage.rows/2 ),(0,0),(0,0),3);

之前写了,但是发现并没有真正理解投,也许当初是为了赶项目,仅仅是为了完成任务,但是回过头来想想,要是当初多花一分钟理解就好了!

曾经的代码代表了曾经的我们,蕴含了曾经的我们是如何艰辛创作的历程,展现了我们的缺陷,我们的优势,我们的发展和进步。它们能敦促你对其他程序员时刻保持谦虚和耐心。

然后经典代码最好经常拿出来品析,像喝茶一样品析代码!

二.我是怎么读源代码的(58沈剑)

很多有追求的工程师,不满足于对于工具的使用: MySQL, Memcache, Redis, Kafka, 越来越多的工程师:

(1)希望了解底层原理;
(2)希望针对性制定调优方案;
(3)希望加入开源社区,成为一名代码贡献者;
(4)或者,仅仅为了阅读优秀的源码…

大部分人,有源码阅读障碍:

扫描二维码关注公众号,回复: 15743420 查看本文章

(1)源文件太多,不知道重点;
(2)源码量太大,无数次从开始到放弃;
(3)方法不对,遇到“技巧性”编码就蒙圈;
(4)不够体系化,不会将源文件归类阅读;

前段时间,有水友有留言说:

“能不能分享一些阅读底层源码的经验?”

这里简单的说几点。

第一,先读已有的文档。正规的开源软件,一般都有详尽的文档,即使一个简短的tutorial,读个大概也十分重要。搜一搜关键词,说不定有朋友写过源码解析。
画外音:大概率中文源码解析的文章,不是最新的版本,但读总比不读好。
如果英文过关,建议读官网文档。
画外音:论英语的重要性。

第二,先硬读一遍再说。不管理解了多少,整体先留一个印象。

第三,单步调试。跟随软件启动,跟随核心请求的处理,能够一步一步调试,那是最好的, watch 各个变量的变化,单步看流程,看主流程与分支流程。

第四,做笔记。最核心的流程,画简单流程图。

最后,第三步和第四步重复几遍。边调试边做笔记,很快就能“恍然大悟”。

当然,得心应手的工具是必须要有的,但毕竟是工具,因人而异:在Linux下,我基本上是用vim+ctags;在Windows下,我用的是Source Insight。
画外音:我的小师傅用的是这两个工具。

其实,阅读源码并不难,重点是掌握科学的方法,用最高效的方式,读最核心的代码。这是我读源码的经验,希望对大家有帮助。
————————————————
58沈剑 我是怎么读源代码的

三.如何写高质量的代码

3.1ChatGPT回答

编写高质量的代码是每个开发者都追求的目标。以下是一些提高代码质量的实践方法:

选择合适的编程语言和工具:根据项目需求选择适合的编程语言和相关工具,可以提高代码的可读性和易维护性。

遵循编码规范:遵循统一的编码规范能使代码更易读、易于理解和维护。可以采用行业标准的规范,如 Google 编码规范。

模块化和可重用性:将代码拆分成逻辑独立的模块,提高代码的可重用性和可测试性。

注释和文档:为代码添加适当的注释和文档,解释代码的目的、功能、输入输出等,方便他人理解和维护。

单元测试和自动化测试:编写单元测试和自动化测试用例,验证代码的正确性和稳定性,并确保在进行重构或修改时不会引入新的问题。

错误处理和异常处理:充分考虑边界条件和异常情况,并恰当处理错误信息,使代码更健壮和可靠。

版本控制和代码审查:使用版本控制系统(如Git)进行代码管理,并进行代码审查,以减少潜在的缺陷和提高代码质量。

性能优化:在代码编写时考虑性能问题,避免低效操作和资源浪费。

持续集成和持续交付:使用持续集成和持续交付工具,自动化构建、测试和部署流程,保证代码质量和可靠性。

不断学习和改进:定期学习新的编程技术和最佳实践,保持对代码质量持续改进的心态, 关注行业的发展和变化,及时更新和改进自己的代码。

通过以上的实践方法,可以提高代码质量,使代码更易于维护、扩展和重用,同时减少潜在的缺陷和错误。
同时,也要注意与团队成员的协作,遵守项目的开发流程和标准,共同保持代码质量的提高。

猜你喜欢

转载自blog.csdn.net/liuqingsongmsdn2014/article/details/131564837