在这篇文章里,我们可以见到许多有意思的编程风格,又没有精神为之一振的感觉,仿佛里面的例子就在自己身上,或者离自己很近。其实,对于文档、代码的评审,也是有诸多风格可言的,我这里列举一些有意思的典型:
一坨屎型评审
阅读文档、代码的时候,这些东西在自己眼里就是一坨屎:“我这么高智商的人都看不懂,明显是你有问题!”。
这样的人有一个他自己相当认可的世界观,凡是和这个世界观相冲突的无论对错的事务,必须强力排斥。这样的人眼中容不下复杂的东西,复杂对他的智商而言是一种侮辱,他会选择下结论的方式来拒绝自己对文档或代码的进一步阅读;对于和自己预期不一致的设计和实现,必须升级为人身攻击,挥舞狼牙棒子痛骂一顿,最后得出的结论就是,“很明显,这个人创造的东西是一坨屎,这个人也是一坨屎。”
这样的评审表述有:
“这里体现了一个问题,你考虑问题太缺乏全面性和深入性”
“这里写的太烂了,请重写”
“这是什么,我看不懂,和我的实现方式不一样,请改到我的那种实现方式上去”
“我没法再看下去了,到处是问题,以至于我没给你写几条评审意见,请好好阅读XXX规范文档!”
……
到处放炮型评审
这些评审者思考一个问题的时候,想得非常全面,全面到病态,但是非常浅层次,他们像领导一样指出你的文档或者代码到处都布满了你少考虑到的东西,但是只给你看的时候,一律点到即止,绝不深入展开。相信你一边自惭形秽,一边会对他们崇敬有加:“领导就是领导(老员工就是老员工),就是见多识广”。
譬如,你设计了这样一个方法:
1
|
public void storeAsFile(Data data, String path)
|
他会给瞬间抛出无数个问题:
把数据存储为文件,磁盘已经满了怎么办?没有权限怎么办?存储到一半的时候发生故障了怎么办?写文件的时候断电了怎么办?写文件写到一半的时候突然发现磁盘不够用了怎么办?写的时候性能怎么样?大家都在写文件,文件会不会有很多碎片?路径过长怎么办?一个文件夹下文件过多怎么办?文件名有操作系统不接受的字符怎么办?……
OMG,这个世界太复杂,我的大脑太简单。或许,大师你的设计文档可以写到辞海那么厚。
只捡芝麻型评审
这类评审人员有一个共同的特点,不深入代码或文档,显著的、设计上的问题、深入的和充满意义的问题一律不关注(事实上,他们也挑不出那样的问题),只看那些拼写、语法、格式之类的问题。这些问题严格来说都可以列为问题,但是这些问题的一个共同特点就是,都是一些非常简单和鸡肋、次要的问题,或者是公司或团队某些无良人士自己定义的某些无聊规范上的问题,并且是不深入业务、设计和实现,完全可以找出来充数的问题。
有一些领导远离了技术很多年,但他们依然可以用如此方式的评审来证明自己:“瞧,别看我现在不设计编码了,但是我掌握的技能依然炉火纯青,我依然可以挑出你代码里面几百个毛病来!”,于是他们一样让你崇敬有加:“领导就是领导(老员工就是老员工),就是做事细致”。这些问题包括:
“这个单词的一个字母大小写错误”,“这个tab格式要换成四个空格”,“这行注释上面为什么多空了一行?”,“这个地方的注释语句少了句号!”,“这个变量名还不够清晰”,“这个包下面没有增加一个包说明文件”,“这个类的注释量太少,需要增加到XX%”,“这个for循环可以改写成while循环,代码看起来会更简单”,“这里final和static关键字的顺序写错了”……
好吧,看起来,一个再简单的实现,你也可以被批得体无完肤。
吞吞吐吐型评审
他们在思考问题的时候,确实有自己的想法,但是碍于关系、面子、资历、辈分,无法充分和一针见血地表达自己的态度和观点,而是选取了一种话说一半、唯唯诺诺的方式:
“可能是我的见识短浅,我觉得这里似乎可以考虑一下文件不存在的场景,您看是否可以?”,
“此处仿佛存在一个未曾考虑到的场景,请指教”
“建议此处考虑存在的空指针异常”
……
这样的评审意见其实相对于之前说到的几种,要显得实际和有效,但是有一种让人起鸡皮疙瘩的感觉,而且由于评审时过于谨慎和惶恐,评审效率和表述深度都很难保证,评审意见中堆砌了大量的客套话。
对于代码和文档的评审,我有这样的几个建议:
1、评审是一个交流和学习的过程,大家都是平等的,不要鄙视别人,更不要鄙视自己。
2、有不合理、欠考虑的地方要指出,精彩的设计、优秀的想法也要鼓励,评审不是只挑毛病。
3、不要担心和害怕犯错!所有的软件过程都是带来产品和团队进步的过程,为了担心一个可能的错误,扼杀了自己的思维火花,就太不值得了。
4、就事论事,争论是值得鼓励的,但是不可以上升到人的层面上来。
你还见识过什么样的牛叉的评审风格,你还有什么想法,和我分享一下如何?
相关推荐
什么是软件评审(review)、审查(inspection)、走查(walkthrough)? 需要化多少时间?我的项目进度太紧了,无法安排评审. 如何提高评审的有效性? 评审过程如何进行?评审员越多越好吗? 可以用评审结果来评估...
【小组评审表1:小组组内交叉评审表1】是一个用于团队协作中,尤其是在IT项目管理中的工具,它主要用于在项目不同阶段或里程碑之间进行内部评估和反馈。这个表格的设计目的是促进团队成员间的互相评审,确保项目的...
计划评审方法中项目工期估计的一种方法,学习工程项目管理的使用
【标题】: "论文评审模版--如何评审论文" 【描述】: 论文评审是学术界的关键环节,旨在确保发表的研究质量。评审时需要综合评估论文的原创性、质量、相关性和呈现方式,以此来判断论文是否适合发表。 【标签】: ...
在IT行业中,软件方案评审是项目管理中的关键环节,它涉及到对拟实施的软件解决方案进行全面、深入的评估,以确保其符合...同时,这也是一种有效的沟通工具,确保所有利益相关者对方案的理解一致,推动项目的顺利进行。
《软件需求评审表单详解与应用》 在软件开发过程中,需求分析是至关重要的第一步,而软件...同时,这也是一种良好的团队沟通机制,促进开发者、管理者和用户之间的理解和协作,为高质量软件产品的诞生奠定坚实基础。
预算评审方案是确保财政资金规范、安全和高效使用的关键步骤,尤其在IT行业中,涉及到大量技术设备采购、软件开发和运维成本时,预算评审显得尤为重要。以下是对预算评审方案的详细解析: 首先,预算评审的核心是对...
在软件工程中,评审与同行评审作为CMM(能力成熟度模型)中的一个重要关键域,是确保软件产品质量的关键环节之一。这一过程旨在通过一系列的形式化或非形式化的检查手段,及时发现并纠正软件开发过程中的错误,从而...
为了提升代码质量、加强团队之间的沟通与协作,并且确保项目能够顺利推进,代码评审(Code Review)作为一种重要的质量管理手段被广泛应用。通过定期组织代码评审会议,可以帮助团队成员识别潜在的问题、改进编程...
软件评审的角色和职能、软件评审的内容、软件评审的方法和技术 一、软件评审的角色和职能 软件评审是一个复杂的过程,需要不同的角色和职能来完成。这些角色和职能包括: * 评审员:负责对软件进行评审,检查软件...
一个有效的评审会议通知模板能帮助项目组高效组织评审流程,确保所有关键参与者了解会议目的、时间、地点以及各自的角色和责任。 #### 二、通知模板构成要素 **1. 评审名称**:明确指出此次评审的主题,如“项目...
软件需求分析评审记录表是软件开发过程中的一个关键步骤,它旨在确保软件需求的完整、准确、清晰和具体。下面是软件需求分析评审记录表的详细知识点: 一、评审日期、地点和主持人 软件需求分析评审记录表中需要...
### 需求评审意见表知识点详解 ...总之,需求评审意见表是软件项目管理中的一个重要工具,它不仅有助于确保需求的质量,还能够促进团队之间的沟通与协作,是提升软件开发效率和质量的关键步骤之一。
安全管理制度评审记录是企业或组织中的一种重要文件,旨在评估和改进安全管理制度的实施情况。下面是关于安全管理制度评审记录的详细知识点: 1. 安全管理制度评审记录的目的:安全管理制度评审记录的主要目的在于...
评审过程检查表是一种工具,用于系统地评估项目的各个阶段,确保所有必要的环节都得到了充分的关注和处理。以下是对评审过程检查表的详细说明: 1. **评审过程检查表**:这是一种结构化的文档,用于记录和追踪评审...
产品开发流程-技术评审一评审要素表 通过对产品开发流程的技术评审一评审要素表的分析,我们可以提炼出以下几个关键的知识点: 1. 产品开发流程的重要性:产品开发流程是将产品从概念到生产的整个过程,技术评审是...
本文主要介绍了需求分析评审记录表的知识点,包括需求分析评审的定义、评审日期、地点、主持人、参加部门及人员、评审内容、评审过程、评审结论、编制、审核、批准等。 一、 需求分析评审的定义 需求分析评审是指...
在这个阶段,需要评审总体方案评审,并确认各个工程要素整合能力的评审、研发成本预算评审、外协计划评审、资源投入计划评审、明确的进度计划等。这个阶段的评审要素包括总体方案评审、各个工程要素整合能力的评审、...
在软件开发领域,CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一种用于评估和提升组织软件开发过程成熟度的模型。CMMI的实施有助于提高软件产品的质量和可靠性,降低风险,并优化资源利用...
IPD(Integrated Product Development,集成产品开发)是一种高效的产品开发模式,它强调跨部门协作,通过多个决策评审点(DCP,Decision Control Point)确保产品开发过程的质量和效率。本文将深入解析IPD流程中的...