代码走读的意义

代码走读测试案例分享 随着软件规模的逐渐膨胀,代码走读应该成为测试的必备技能。它可以上真正的测试用例大幅度减少,更加聚焦软件本身的质量。 阅读详情

 
 代码走读的意义
1.除BUG,代码走读还能发现许多存在但还没出现的BUG。
2.提高编程能力,总结方法。
 
 代码走读方法
 代码走读常用的方式是同行走读甚至是结对编程。我认为自我走读也是非常重要的。编程说白了也就是一种表达能力,用一种程序语言和计算机对话,让他能准确的执行我们的想法。所以编程和写作有很多相通之处,学校里老师教的写作方法也是适合编程的。
 
1。反复推敲
   同一个逻辑可以很多方式描述,但用那个更好更合适可以在走读时细细体会,推敲的标准是1.高内聚低耦合 2.接口优先 3.好看好理解 4.高效,运行速度快。
  
 2.过段时间复读
   文章放段时间再拿出来看能发现很多问题,代码一样,一段时间后人的思维惯性没那么强了,改代码的抵触心理也会少很多,更容易发现问题。

 

附【转贴】:

 

正如我在上一篇博客中提到的(现在可以明确地告诉大家),我已经离开Google了。虽然我已经收到了很多不错的offer,但是还没有决定去哪里。在这段时间里从技术角度上说我不受雇于任何人,虽然也许这会让我和(前)同事或者老板关系有点紧张,但我觉得应该写一些关于技术上的有趣的事情。

正如我在上一篇博客中提到的(现在可以明确地告诉大家),我已经离开Google了。虽然我已经收到了很多不错的offer,但是还没有决定去哪里。在这段时间里从技术角度上说我不受雇于任何人,虽然也许这会让我和(前)同事或者老板关系有点紧张,但我觉得应该写一些关于技术上的有趣的事情。

  Google确实是一家很酷的公司。不论是在公司内部或是外部,Google都做了很多让人赞叹的的事情。这里我想介绍一些不涉及商业机密,但鲜为外人所知的事情。

  Google的代码之所以优秀原因其实很简单:他们非常重视代码审查。代码审查并不是Google独有的,它被公认为是一个很好的(提高代码质量的)手段,很多人已经在日常开发中采用代码审查。但我还没有看到哪一家大公司(像Google这样)应用得如此广泛。在 Google,任何的产品或者项目代码在检入(代码仓库)之前都需要进行有效的审查。

  每个人都要参与代码审查,而且这里我指的不是非正式的审查:它是软件开发环节中非常重要而且通用的规则。不仅是产品代码,所有的代码都需要进行审查。审查代码不需要投入很多的精力,但是(与不做审查相比)产生的效果却是天壤之别。

  关于代码审查(code review),Jonathan Danylko 的看法是“代码要经常检查(包括自查和其他同事检查)。不要把别人的检查,看成是对代码风格的苛求。应该把它们看作是有建设性的批评。对个人来说,经常检查你的代码并且自问,“我怎样才能写得更好呢?” 这会加速你的成长,让你成为一个更优秀的程序员。”

  你能从代码审查中收获什么?

  事实显而易见,有另外一个人检查即将提交的代码,能够帮助找到bug。这是代码审查众所周知且经常被提及的好处。但依据我的经验,这是最没有价值的一个好处。人们确实可以在代码审查中找到bug。然而坦率地说,在代码审查中找到的bug绝大多数都是一些代码作者花上几分钟就能找到的小bug。那些真正需要花时间才能找到的bug在代码审查中是检查不到的。

  代码审查最大的好处在于它是一种社交的途径。如果你编程的时候就知道会有同事检查你的代码,那么你的程序会有所不同。你写的代码会更加整洁,有着较好的注释,结构也组织的不错——因为你知道会有人来检查你的代码,而且你很在意他们的意见。如果没有代码审查,你知道代码会在最后才会审查。因为不是马上就要检查,所以对你而言并不紧迫,因而你不会想着先自检一遍。

  代码审查还有一个更大的好处,就是可以分享知识。在很多的开发团队中,每个人都会负责并且专注于一个核心模块。除非别的同事负责的模块出现问题导致自己的代码不能运行,否则他们是不会去关注别人的工作。这样产生的结果是,每一个模块的代码只有一个人比较熟悉。假如事不凑巧,那位程序员正好休假或者离开了公司,那么没有人了解那些代码了。如果有代码审查的环节,那么至少会有两个人熟悉代码——代码的作者和审阅者。审阅者虽然没有作者对代码那么了解——但是他同样熟悉代码的设计和结构,这些信息是无价之宝。

  当然,没有什么事情是那么简单的。以我的的经验看来,要做好代码审查需要一段时间练习。我注意到经验不足的审阅者通常会落入一些代码审查的陷阱,这些陷阱往往会造成很多的麻烦,给那些希望尝试代码审查的人们留下了坏印象,成为了他们采纳代码审查的一个主要障碍。

  代码审查最重要规则是对即将提交的代码中查找问题——你需要做的就是确认代码是正确的。而通常会犯的一个错误,也是刚刚接触代码审查的新手容易犯的一个错误,即审阅者会判断这段代码是否按照自己思路来实现。

  当有一个问题需要解决时,通常会有几十种的办法。当选定一个解决方法时,会有百万种代码实现。因此,作为一个审阅者,你的工作不是确保代码是按照你的方式来编写的——因为这是不可能的事情。审阅者的工作是确保原作者编写的代码是正确的。如果你没有遵守这个规则,你可能会到处碰壁,审查结束时你的心情很糟糕,对你来说肯定不是一件好事情。

  问题在于这是不自觉就会犯的一个错误。假定你是一个程序员,当你在看一个问题的时候,你会得到一个自己的解决方案——并且你认为你看到的就是这个问题(应该采用的)解决办法。如果想要成为一名好的审查者,你需要知道这是不对的。

  第二个误区就是人们感觉一定要说点什么(才算是做了代码审查)。代码的作者花了很多的时间和精力来编写代码——你难道不应该说点什么吗?

  答案是:你不应该。

  如果只是说“哦,这看起来这不错!”,这永远没错。反之,如果你不断地去查找一些“问题”并加以指责,那么我肯定你的信誉会荡然无存。如果你不断地去制造一些事情来说些什么,那么代码的作者会认为,当你的言论只是为了避免冷场。从此,你的意见不会受到重视。

  第三个误区就是速度。你不应该匆忙完成一次代码审查——但是也不要拖延。你的同事在那里等着你的审查结果。如果你和同事不愿意抽出时间来做代码审查或者一直拖延,大家会对这次的审查感到厌烦,也会认为以后的代码审查也只会带来麻烦。看起来好像代码审查会打断你的工作,其实不必如此。你不必要在别人要求你审查的时候马上丢掉手头上的事情。但是在几个小时之内,当你工作中间休息的时候——喝杯茶,去一下洗手间或者聊聊天,散散步。当你再回来工作的时候,你可以开始并完成这个代码审查。如果你这么做了,没有人会站在你身边一直等着你给出审查结果。

 

如何在windows环境中进行kubernetes的代码走读 由于南哥带我们讲解代码的时候,直接用的是macbook,把Kubernetes源码clone之后就可以进行走读了。但是我在windows第一次把kubernetes源码git下来之后,就会发现一个非常要命的错误,在windows上面好多的k8s.io的包找不到,在cmd目录下有些函数根本就点不进去,windows的环境依赖问题难以做到和mac类似。 阅读详情

相关推荐

代码走读常规流程

  代码复查(Code Review),又叫“代码审查”,其基本思想就是,在开发人员编写完自己的代码后,由其他人来复查他写的代码,从而有效地发现代码中存在的缺陷。代码复查的一个基本理论就是,当我们越早发现代码存在的缺陷,我们解决缺陷的代价就越低。   代码复查一般包括代码风格,常规缺陷,重大缺陷,程序语言级别缺陷和业务逻辑级别的缺陷,以及设计逻辑和思路的审查等等,甚至也要包括代码性能的考虑。...

cantellow 3235

代码走读的重要性

刚开发完一个新的功能模块,之前因为很多代码没有走读过,产生了很多不应该有的bug,所以这次有时间就简单走读一下。不走读不要紧,一走读确实发现了一些问题。有些地方的处理有点随意、有点欠考虑,有些地方的处理有较大问题。以前有过很多的教训,但代码走读一直没重视起来,这次记录下来,督促进行后续开发的时候一定要将代码走读给做起来。

dvlinker的技术专栏 2398

疯壳AI开源无人机飞控整机代码走读、编译与烧写

一、代码架构 飞控的整体代码工程由8个工作组组成,分别是Ctrl、Driver、VL53L1X、STM32_LIB、USB、USB/Lib、StartUP以及Drv_Point,如下图所示。 各个组的具体的代码功能如下表所示。 组 功能 Ctrl 包含飞控控制类的代码、算法、数据处理等。 Driver 各模块底层驱动代码 VL53L1X 激光传

fengkesz的博客 2827

2023-07-05总结

Redis 事务是一系列 Redis 命令的有序执行集合,可以一次性、原子性地执行多个命令。在 Redis 事务中,一组命令会作为一个单独的操作执行,期间不会被其他客户端的命令中断。Redis 事务具有以下特性:原子性:Redis 事务中的所有命令要么全部执行成功,要么全部执行失败,保证了多个命令的原子性。隔离性:在事务执行期间,其他客户端发送的命令不会被插入到事务的命令序列中,保证了事务的隔离性。一致性:事务中的命令要么全部执行,要么全部不执行,不会导致数据不一致的情况。

qq_58369347的博客 736

TI单芯片毫米波雷达1642代码走读(〇)——总纲

前言 近年来,自动驾驶行业发展如火如荼,雷达技术也逐渐从军工封闭圈走向了开放的市场。 毫米波雷达具有全天候探测能力,特别是在雨雪雾天气以及夜间都能可靠工作,并且探测距离相对其他车载传感器非常远,对运动目标非常敏感,价格还低廉,这些特性都使其成为自动驾驶感知层面不可或缺的一环。 现如今的雷达已经不仅仅局限于测距测速测角等传统的功能,雷达技术正在从感知走向认知、从宽带走向超宽带、从二维走向三维四维、从相控阵走向数字阵列、从单通道走向MIMO、从独立工作走向分布式协同、从分立组件走向射频数字一体化。MIMO

3万+

代码走读[总结].pdf

代码走读[总结].pdf

谈谈代码走读

代码走读的重要性就不说了,我想谈谈对代码走读的总体认识。首先代码走读前,代码必须编译通过,强类型检查的语言(比如JAVA)自带的编译器就够了,如果是弱类型检查的语言(比如C/C++)应该用辅助的静态检查工具(比如lint)进行检查,毕竟机器发现问题的效率要比人眼和人脑要高的多,机器能做的事情让机器去做。检查完成后,把编译错误和告警消除,才可以进入代码走读。其次,代码走读前要在项目组内部统一走读的标

zhangbaolin的专栏 9528

生物信息学名词解释 | K-mer (长度为k的短序列)

K-mer 何谓K-mer 所谓Kmer,即为一段长度为k的DNA片段,是由测序reads剪切一部分得到的。k为一个奇数,k=几,就为几mer。 比如:我的测序reads长度为100bp,我将这100bp打断成17bp的短片段,打断后的17bp段片段就叫17mer,可以获得(100-17+1)条k-mer序列。 Table1 k-mers for GTAGAGCTGT. k k-mers 1 G,T,A,G,A,G,C,T,G,T 3 GTA,TAG,AGA,GAG,AGC,GCT,CT

qq_50637636的博客 2万+

7种提高代码阅读能力的方法

阅读源代码是软件开发人员的工作任务之一。但是,这种经历并不总是令人愉快的。不是每个人都想阅读其他人的代码,因为他们发现它很无聊,有时令人沮丧。有些情况下,当你开始阅读其他人的代码但最终会因为无法理解或代码写得不好而感到痛苦。大多数开发人员都希望专注于编码而不是阅读,并且意识不到阅读代码也是一项技能。 但是,阅读源代码具有多方面的好处。阅读代码的回报是巨大的。可以将编码与文献进行比较。你会看到,大...

夜深人静后的码农 1921

WSL2离线安装Ubuntu终极指南:绕过Microsoft Store慢速下载(附最新22.04 LTS离线包)

本文提供WSL2离线安装Ubuntu 22.04 LTS的完整指南,帮助开发者绕过Microsoft Store下载慢的问题。通过PowerShell命令配置环境、获取离线安装包并完成安装,同时包含初始配置、资源优化及常见问题解决方案,助您快速搭建高效的Linux开发环境。

c8d9e0f1的博客 900

实战指南:基于华为Ascend NPU的大模型W8A8量化调优与精度提升

本文提供了一份基于华为Ascend NPU进行大模型W8A8量化的实战调优指南。详细介绍了从环境搭建、使用msmodelslim框架进行基础量化,到通过离群值抑制、校准集优化和量化回退等关键技术提升精度的全流程。旨在帮助开发者在华为NPU硬件上实现模型推理的显著加速,同时有效控制精度损失。

weixin_29227425的博客 271

测试同学参与开发的代码走读,做code review有必要么?

现在很多大厂,都会要求测试同学参与迭代过程中开发代码的code review,面试时也会要求有代码走读能力。有的同学很疑惑,测试岗位做好自己的测试工作就好了,有必要参加code review么?

hi_bigbai的博客 2771

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 408

《NECO博士》期刊之《代码走读常见问题解答》(网摘)

 您知道代码走读可以分几个层次吗?您听说过不用读懂源代码也能找出程序中错误的方法吗?您想了解高效地找出程序错误的方法吗?本文从技术的层面,回答了代码走读中的常见问题,并提出了如何高效走读的崭新方法,希望祝您一臂之力!  (1) 代码走读都有哪些内容?代码走读根据目的的不同,可以分为四个层次:1、检查是否符合编程规范;2、寻找编译器中的设计陷阱;3、快速理解源代码,找出流程设计中的问题;4、对原

人体运动、生物特征、高性能移动计算、人性化智能交互 1080

SNN目标识别MNIST

总体来说这篇论文提出的方法用了多种更精密的细节,如LIF膜电位公式,三种STDP方法,但我觉得还可以有很大的改进,比如输入层全连接到兴奋层,兴奋层通过抑制层实现的侧向抑制,抑制层不参与学习等等。尤其是兴奋层通过抑制层实现侧向抑制这里,当神经元兴奋时,通过抑制层再倒回兴奋层,所抑制的已经经过一了一段时间的延迟。如有错误,请不吝赐教。

m0_74982304的博客 1263

【深度强化学习】(2) Double DQN 模型解析,附Pytorch完整代码

Double DQN 算法是 DQN 算法的改进版本,解决了 DQN 算法过估计行为价值的问题。Double DQN 算法不直接通过最大化的方式选取目标网络计算的所有可能 Q 值,而是首先通过估计网络选取最大 Q 值对应的动作。在 Double DQN 框架中存在两个神经网络模型,分别是训练网络与目标网络。这两个神经网络模型的结构完全相同,但是权重参数不同;每训练一段之间后,训练网络的权重参数才会复制给目标网络。

博观而约取,厚积而薄发 1万+

开源ext2read代码走读之--“\\\\.\\PhysicalDrive0”意义?

在ext2read中读取ext4文件系统的代码中,读取硬盘中的信息时,定义了以下的宏,那么这个宏是什么意思呢? #define DEVICE    "\\\\.\\PhysicalDrive0"是什么意思? 由于"\"是C/C+中转义符, "\\\\.\\"就相当于\\.\,那么以上的宏定义中的“\\\.\\PhysicalDrive0”就等价于“\\.\PhysicalDrive0”

狂客队长 4441

YOLOv8 TensorRT C++部署实战详解:从XMake构建到推理流水线

本项目实现了一个基于YOLOv8和TensorRT的高性能火灾烟雾检测系统,具有以下核心特点: 技术架构:采用TensorRT 8.6+进行GPU加速推理,结合CUDA 12.1和OpenCV 4.8+,实现高效计算机视觉处理。系统使用XMake替代CMake构建,配置更简洁高效。

hscing的博客 1065

Code Review体系与团队文化

Code Review不只是一种管理方法,也是开发者特有的沟通方式,更是一种团队文化。Code Review机制是否健全是评价一个研发团队技术氛围好坏的重要参考。 Code Review的意义 交叉排查缺陷 - 绝大多数BUG都可以在代码层面被发现...

weixin_34102807的博客 112

基于DFT的滤波系列:加窗滤波的 Matlab 实现

在实际应用中,你可以尝试不同类型的窗函数(如汉宁窗、汉明窗等)以及不同的滤波参数来获得所需的滤波效果。此外,还可以进一步了解 DFT 和窗函数的原理,以及其他数字信号处理技术的应用。加窗滤波是一种常用的数字信号处理技术,它通过在频域上应用窗函数来改善信号的频谱特性。我们通过定义输入信号、应用窗函数、进行 DFT 和逆 DFT,实现了滤波过程,并通过绘图进行了可视化。在频域上进行加窗滤波的关键是将窗函数应用于 DFT 的结果。首先,我们需要定义一个输入信号,这里我们使用一个简单的正弦波作为示例。

m0_47037246的博客 463

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

关于软件测试的一些基本知识

软件测试方法:分为两类(1)静态测试:不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试(2)动态测试:通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程,特点如下:l 必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析l 测试质量依赖于测试数据l 生成测试数据,分析测试结果的工作量大,使开展测试

砳缝的渴望 9156

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

如何快速走读新代码

1、保持热爱和疑问2、no code first:技术简介-使用-原理-代码-实践的顺序从原理到代码从使用到代码3、走读代码思路模块框架图系统分层图(三明治结构,从两侧向中间层靠近)上下文线程关系,通信方式数据结构关系数据流关系核心代码流程,关键函数调用链:1、初始化 2、各上下文入口 3、事件处理入口、报文收发入口等。4、学习方法沙漏式学习法带着问题去学习,有目的去学习,借助LLM效率会有很大提升。海绵式学习法初期没有认知,需要建立认知需要海绵式学习法。

qq_40036519的博客 1121

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RxJava源码走读之map

RxJava源码走读之map在上一篇blogRxJava 源码走读之Observable.create()和subscribe()介绍了最基本的两个方法。下面我们看一下map方法。map的作用主要是将不同的对象进行变换,比如我们有一个需求,对于我们输入”a”,”b”,如果是”a”,则返回0,如果是”b”返回1,如果都不是则返回-1;如果有基础的可以很简单的写出代码。 Observable.crea

茅屋 1566

测试工程师如何进行代码走读

只要符合这个外部配置文件的规则,就不会有报错,如果不符合,在用该配置文件检查的时候会列出不符合的具体规则,不符合的条数以及具体位置。(最好是能进行线上评审,提交意见之后所有参加走读的人都能看到,对于之后代码走读的会议也会很有帮助)因为静态代码检查是通过外部配置文件来检查的, 可能有些地方没有检查到,所以需要人为走读。:把上次发布的版本,以及本次最新的代码版本发给需要参加代码走读的同事。在代码走读之后,开发人员修改会议提出的意见,并让提出意见的人进行验证。在我的工作过程中,公司要求参加代码走读。

qq_41086461的博客 1284

Linux内核 -- RNDIS 代码走读指南

确保下载包含 USB 和网络子系统支持的完整内核代码,可以从下载官方内核源码。

sz66cm 学习随笔 1836

微软代码走读Agent:Code Researcher论文解读

Code Researcher是一个专注于代码问题分析与修复的AI系统,其架构分为信息输入、分析、合成和验证四个阶段。系统以代码仓库和错误报告为输入,通过5种搜索工具进行代码走读,采用控制流/数据流追踪、模式识别和提交历史分析三种策略收集上下文。在合成阶段过滤无关信息后生成修复方案,并通过编译测试验证效果。实验表明,基于GPT-4o的Code Researcher在Linux内核问题上达到58%的解决率,显著优于传统方法。实践表明,系统提示词优化、工具设计简化(如用模糊搜索替代复杂正则)以及构建丰富的测试场

zclhit 918
上一篇: cpu占用率统计windows和linux平台有不同
下一篇: winxp平台的内置AEC(回声消除)和噪声抑制
marchbirdcode
博客等级 码龄17年 11粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值