敏捷开发“松结对编程”实践之五:代码检查篇(大型研发团队,学习型团队,139团队,师徒制度,代码审查)我的一天

代码检查的基本原理就是相信人脑(而非人眼)是判断代码好坏的最好工具,比如如果代码中有一行:if(i==1001)returndie()的错误或非法代码,几乎无法经由测试包括自动测试发现,但肉眼却一目了然。

笔者曾编写过一个“复杂而彻底”的代码检查培训教材,但后来发现过于复杂而且还不彻底,所以作罢。下面将要介绍的是一种业余但却有效的代码审查方法。

-----------------------------------------------------------------------

程序员的质量观

有人曾把程序员分为四级:编写可用软件(大致是大学在校生的状态),编写可靠软件(大致是好一些的职业程序员的状态),编写精美软件(在简单性/可维护性/可复用性上有所突破),编写思想深邃软件(设计模式、MVC、JQuery及早期OLE、RPC等创始者所做的事情)。

但在现实中,却往往发现很多程序员停留在第一层次:“你测吧,测出缺陷来我改”“这个不用改也能运行”“这么编就是难读点而已”,师徒间的代码检查,就是把程序员从第一级别向上提高的过程。

第一段提到的25个程序员+1个测试人员的团队是01年我们所在的团队,当时保持了良好的质量风气。尤其由于大家知道没有测试人员擦屁股,留下缺陷相当于给自己找麻烦,所以大家不得不习惯自己动手防患于未然。这个产品后来发展势头很好,07年曾占据市场60%(之后不详)。

怎样检查

一般而言,大致每天高手能编写100多行有效代码(按分号计数),新手会多一些但也不超过200(他们编写代码比较费),也就是10个屏幕以内。有经验的人一定知道:高手看新手的软件,5秒钟就能发现问题。

常存在的一种情况是高手“看不懂”新手的代码,当然不是因为技术太精妙了,而是写得太乱了。但在松结对编程里边不存在,由于师傅徒弟天天在一起,这200行代码可谓一目十行,如果以往一直每天检查代码,那么里边存在的问题应该不会很多。

检查什么

这个是重点,整体包括:

1.结构问题

代码最大的问题,不是一两个地方有技术缺陷,也不是业务逻辑错误,而是整个软件编写的不好。前两者都可以通过测试或使用来发现和更正,但后者就不同了。如果回想一下自己见过的各种烂摊子,是不是有同感?具体哪里有问题怎么改说不上来,就是整个软件看上去混乱无章,无从下手。

具体结构问题包括:重复拷贝代码(不封装函数,不用Template/泛型……),函数过长(超过一屏幕就叫过长),错误封装(不恰当的public/不用Interface/不内聚/强耦合/在类中封装了无关方法……),内容错误(多个无关类置于一个文件/不恰当的命名……)等等。

改正结构问题,是从编写可靠软件向编写精美软件迈进的重要方法。

2.业务逻辑问题

就是软件是否与需求的要求符合的问题。师傅和徒弟经常对业务需求的理解有差异,借此机会同步一下,必要时引入PO(产品经理/策划人员……)。

有人会说业务逻辑问题不是一测试就知道了吗?可是测试一般发生在很久以后,有些逻辑测试还需要一定的触发条件,而且测试只会发现失效(failure,与预期不符)而不能发现缺陷(defect,具体哪里出了错),等积累长了,谁也找不到原因了。

3.编程素养问题

很多问题属于那种“这样也行那样也行”的状态,比如命名/初始值/缩进/断行……但是高手的做法总是比新手好一些。

比如boolresult=true;这句话就有问题,刚初始化就先宣布成功,必有隐患。这是一个真实案例,而下面也的确有一个分支错误地返回了这个true(实际案例是个HRESULT)。而发现这个问题,不是测试而是代码检查。实际上测试几乎发现不了这些问题,比如上面那段代码会在某文件打不开的时候错误地返回这个true,而在测试中几乎不会故事破坏那个文件来测试其结果。

实际使用时,不用拉太长的清单,师傅能想到的看到的告诉徒弟就行。

徒弟不需要学到天上去,只要能学到师傅那么好就可以了。之前在做CMMI咨询的时候我弄过一些检查表,推广均以失败而告终。那些表都是为了顶级安全性的软件考虑的,在普通项目里边使用是个灾难。

几个问题

1.师傅天天检查,会不会很累?

2.不会饿死师傅吗?

会,也不会。如果师傅止步不前,即使他不教别人,也迟早被人超越;师傅也是需要学习的。事实是会教徒弟的师傅才会学习,而会学习的师傅才会教徒弟。

3.师傅跟谁学?

师傅作为高级技术人员,还享有机会外出培训/采购图书等待遇。

师傅自学也很重要,经验更是不可取代的。前事不忘后事之师,要把自己的经历和别人的经历都当作经验来看待。

4.师傅努力编好自己的软件不久已经有很大贡献了,为何要帮助徒弟?

软件整体是一个串联系统,一个环节出了问题整个软件崩溃(Web软件好一些)。因此软件质量取决于最差的部分,而不是最好的部分。

------------------------------------------------------------

从工作层面讲,代码检查使得代码的质量尤其是结构质量,整体上保持在师傅可能达到的水平,从而保证了项目的成功。

至此所有实践层面的内容基本上都写完了,下一篇将提到一些“139团队”的问题,所谓“139团队”就是一个使用松结对编程工作方式的大型团队。

THE END
1.网上课程免费学软件排行榜前十名偏玩手游盒子分享十大网上课程免费学软件排行榜前十名手机应用,编辑为您推荐手机网上课程免费学软件排行榜第一名到前5名到前十名的应用。找网上课程免费学软件有哪些、网上课程免费学软件哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-2528910
2.2024年十大学习软件app教育app哪个好十大品牌网CNPP重磅推出2024学习软件十大品牌排行榜,学习软件品牌排行榜前十名有作业帮、有道、学习通、小猿搜题、百度文库、百词斩、流利说、斑马APP、中国大学MOOC、知到。十大学习软件品牌由品牌数据部门通过收集整理大数据分析研究得出,旨在告诉消费者学习软件什么牌https://www.cnpp.cn/china/list_6278.html
3.小学教育靠家长?老师精力有限!5个免费学习APP来帮忙!学习方法家长必顶部 首页首页 小学教育靠家长?老师精力有限!5个免费学习APP来帮忙!学习方法 家长必读 学霸秘籍 2024-12-19 00:00 · 0次播放 发布于:江西省 拳击那点事 +订阅 +1 评论 全部 还没有人评论过,快来抢首评 写评论相关推荐 查看更多精彩内容 https://m.sohu.com/a/839255167_100114195
4.2024年,每个人都应该知道的10个免费学习资源网站在这个数字化的时代,有着许多宝贵的网络资源,提供了无限的学习机会,为每个人敞开了免费获取知识的大门。但很多人不知道它们的存在。今天分享10个免费且丰富的学习资源网站,希望对大家所有帮助。 freeCodeCamp 您可以免费学习编码、构建项目并获得认证。 您可以获得以下方面的认证: https://zhuanlan.zhihu.com/p/679844854
5.高中免费学习软件视频钉钉在哪里学习钉钉帮助中心为您提供高中免费学习软件视频相关问题的回答,更多高中免费学习软件视频问题相关解答可以注册咨询钉钉人工客服。https://www.dingtalk.com/qidian/help-keyword-60434.html
6.学习知识的app哪个好免费学习知识的app今天小编就给各位玩家推荐知识学习软件合集。知识软件提供了各种各样的功能,包括在线课程、练习、测试、讨论、社交互动等等。这些功能旨在为用户提供一个全面的学习体验,并帮助他们尽可能地提高自己的技能和知识水平。软件不仅提供多种语言学习的课程,而且使用游戏化的方https://www.7k7k7.com.cn/hj/zsxxrjhj.html
7.自习app有哪些?自习软件下载专门自习的免费app自习app有哪些?自习软件下载-专门自习的免费app自习app主要有什么?自习app有哪些?自习是学生时代一个非常常见的学习方式,在考试前,老师有事的时候,学生就需要进行自习,那么小编今天就为大家整理了一些可以在手机上自习的软件,如costudy、移动自习室、柠檬自习室、tourcafe、番鱼、一起自习、自习僧、自习君、自习助手、http://www.downcc.com/k/zixiapp/
8.我要自学网我要自学网-免费视频教程,提供全方位软件学习,有3D教程,平面教程,多媒体制作教程,办公信息化教程,机械设计教程,网站制作教程,电脑培训https://www.51zxw.net/
9.推荐10个免费实用的资源网站,值得收藏8.免费学习资源网站-哔哩哔哩 对于爱学习的同学一定要知道哔哩哔哩不仅是一个视频网站,还是是一个免费学习教程资源丰富的在线学习网站。哔哩哔哩上面有热心网友们上传的各类学习教程,不管你是想学习什么课程搜索一下就可以找到。 9.苹果软件限免分享网站-GoFans https://blog.csdn.net/ITdgr/article/details/129650671
10.网上学习软件有哪些APP推荐网上学习软件有哪些下载好用的学习软件有哪些你知道吗,学习软件可以帮助大家免去了带着厚重的书本的烦恼,让你变得更加轻松,快来看看相关推荐吧。1、《网易公开课》 无论你想学习知识还是增长视野,这款软 09-24 网上课程免费学软件有哪些 受欢迎的课程学习APP合集 11-16https://www.wandoujia.com/bangdan/1248204/
11.101种最热门的EdTech工具GoBoard是一个免费的在线工具,它结合了视频聊天和交互式画布。学生可以简单地在网站上创建一个GoBoard,与朋友分享链接并开始学习。GoBoard 帮助学生在任何主题,进行远程一对一的合作。全部在浏览器中进行,无需下载软件。 “由于没有可下载的软件,任何人都可以在不到60秒的时间内启动和启动会话。专业版提供了额外的https://36kr.com/p/829435155242882
12.教学软件有哪些教师助手下载PC学习软件这里小编整理了一批教学软件。它可以帮助老师们更清晰的分析知识点,安排教学进度,提高教学质量。也可以帮孩子们提前预习、课后复习。总而言之,有了这些教学软件,无论是学生还是老师,都会是非常得力的助手。也可以看看: 教育平台 | 安卓教学软件 | Mac学习软件https://www.qqtn.com/qqkey/study/
13.在线英语听力室在线英语听力室是一个免费在线英语听力学习网站,提供经典英语听力教程、英语MP3听力下载、新概念、VOA、少儿英语、四六级英语考试听力等大量英语听力学习资源,网站内英语辅导资料齐全,有效帮助广大英语爱好者完成英语自学课程,突破英语听力障碍!http://www.tingroom.com/
14.瑞鑫点教在线app免费下载瑞鑫点教在线安卓最新版v1.2.8下载点教在线app是一款由瑞鑫点教官方网为高中学生们提前准备的移动英语学习手机软件,此软件适用英语听写双向学习,随时随地开展英语听力训练,方式考试在线智能化改错,英文学习內容详尽分析,名师讲堂,协助迅速提高英语口语,必须的能够下载点教在线app应用! 软件特色 https://www.duote.com/android/872469.html
15.pr新手小白疑惑解答,你想知道的都在这里!4.资源丰富: Premiere有大量的在线教程、社区资源和插件支持,可以帮助你更轻松地学习和使用该软件。 总之,学习Premiere可以为你的职业发展和创作提供很多帮助,让你更高效地完成视频制作任务,并实现更具创意性的视频编辑。 premiere软件可以去哪里下载 Premiere软件可以从Adobe官方网站(https://www.adobe.com/products/prehttps://www.yutu.cn/news_51950.html
16.快对品牌介绍快对教育APP·学习软件网课1.新覆盖职高、中专、大学等教辅教材解析,哪里不会查哪里。 2.检查作业方便:学习遇到难题、家长不知作业对错时,来快对一键检查,智能批改,对错解析应有尽有。 3.智能错题本:对作业本、练习册、试卷上的错题拍照,即可自动擦除手写笔迹,还原空白题目、保存错题、收集到“快对错题本”。支持一键连接打印机;或生https://www.maigoo.com/brand/118670.html
17.2024年Pytho怎样自学Linux工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。 2.软件开发学习路线 两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并非中庸之道,而是找寻学习软件开发的正确路线与规律。https://win7sp.com/post/33390.html
18.听课软件有哪些?可以免费听课的软件听课app下载听课软件有哪些?现在很多人都喜欢在网上进行听课学习,很多平台都是需要收费才能够学到高深的知识,为此,本站特意为大家提供了免费听课软件给大家,让各位用户能够学到更多的知识,支持电脑端和手机端在线听,有需要的可以前来下载体验!http://www.downyi.com/key/tingkeruanjian/
19.终身教育学习平台软件通 剪映 专业版 短视频制作 软件通 Photoshop CC 人像修图 软件通 中华茶道 国家开放大学 走进心理学,走进生活 北京心灵通科技有限公司 演讲与口才 国家开放大学 手机摄影—开启银龄美好时光 衢州职业技术学院 中国文化县志 国家开放大学 社会主义核心价值观 https://le.ouchn.cn/
20.2024最全澳洲报税攻略(报税时间+流程+个税计算+免税额+报税软件ATO:澳大利亚税务局有自己的Android和iOS智能手机应用。它可以免费下载和使用。这款应用的myDeductions功针对纳税时间,帮助用户记录支出、与工作相关的出行记录、个人贸易收入和收据。然后,当你准备好提交申请时,该软件可以用这些信息预先填写你的纳税申报单,或者,如果你使用的是代理,可以将它们全部发送给负责你纳税的人。https://www.extrabux.cn/chs/guide/5374952