代码走读的意义

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

 
 代码走读的意义
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

【UE5】多用户协同编辑实战:从配置到实时协作

本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。

weixin_29001683的博客 268

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

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

夜深人静后的码农 1921

STM32G474片内运放实战:从独立模式到PGA与ADC采样链路

在嵌入式控制系统中,运放是连接模拟信号与数字处理的关键环节。传统方案依赖外部分立运放搭建放大电路,存在成本高、PCB布局敏感、一致性差等痛点。STM32G474在MCU内部集成多路可编程运放(OPAMP),支持独立模式、跟随器、PGA以及比较器模式,配合内部ADC和DMA可构成完整模拟采集链路。通过片内互联,信号路径大幅缩短,抗干扰性和通道一致性显著提升,尤其适用于电机电流采样、数字电源等场景。本文以STM32G474为例,详解从独立模式到PGA增益配置,再到ADC与DMA联动调试的完整过程,并给出采样时间

weixin_29194255的博客 247

NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)

NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导

qq_49979053的博客 5万+

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

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

hi_bigbai的博客 2771

告别手工AS91/AB01L:用BAPI_FIXEDASSET_OVRTAKE_CREATE实现SAP资产历史数据自动化迁移

本文详细解析了如何利用BAPI_FIXEDASSET_OVRTAKE_CREATE实现SAP资产历史数据的自动化迁移,替代传统手工操作如AS91/AB01L。通过核心参数解析、迁移逻辑说明及实战案例,帮助顾问团队提升资产和折旧数据迁移的效率与准确性,确保数据一致性并降低错误风险。

weixin_42524708的博客 420

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

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

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

深信服aCloud虚拟存储VS3.0实战:从数据分片到仲裁机制的全流程解析

本文深度解析了深信服aCloud虚拟存储VS3.0的核心架构与生产级实践。从数据分片、条带化写入、多副本机制到智能缓存分层,详细阐述了其如何实现高性能与高可靠性的平衡。同时,深入剖析了动态均衡、平滑扩容以及故障恢复与仲裁机制,为运维人员和技术决策者提供了在超融合基础架构(HCI)中部署和管理虚拟存储的实战指南。

net55的博客 588

浅谈Android MVI架构---大自然的搬运工~~~

浅谈 Android MVI架构

hong_world的博客 2158

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

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

狂客队长 4441

【MeshLib & VTK】MeshLib PK VTK

本文分享三维几何处理库MeshLib,并将其与VTK进行对比,希望对各位小伙伴有所帮助!

qq_40041064的博客 1076

Code Review体系与团队文化

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

weixin_34102807的博客 112

项目模块提取生成jar包上传到nexus供其他项目使用

项目场景: 微服务项目当中的某一个模块其他项目进行复用,资源管理搭建的有私服 nexus。 问题描述: 如果把功能用到其他项目,代码重复量太大,不想些重复的代码。 原因分析: 如果把这个模块单独提取出来进行复用,至于操作数据库的功能,使用远程调用进行数据库操作,这样就能解决相同模块重复编写的工作。量。 解决方案: 首先对模块代码进行封装提取,把一些用到的参数提取出来,以传参的形式来对参数进行传递。这个需要根据具体的情况进行代码提取,提取之后把这个模块的代码进行打包,打包可以借助开发工具进行打包(记得使用 d

lierjun 的专栏 451

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

砳缝的渴望 9156

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

如何快速走读新代码

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

qq_40036519的博客 1121

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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、付费专栏及课程。

余额充值