最近领导不知道抽哪门子风,突然要求我们注重代码质量,每天都进行代码评审. 让我们感觉突然一下子代码质量完全主宰了我们的声明似地,搞的一惊一乍的.
当然近期也在领导“辛勤的辅导下”了解了很多谢代码应该注意的规范.
1:写的代码不能有明显的错误
第一次听说“写明显没有什么错误的代码”时,我觉得这个说法很新鲜,让我记忆深刻。其他的很多观点听得我耳朵生茧,基本都是左耳进右耳出。明显没有什么错了的代码肯定是思路清晰、很容易理解的。而要做到这点很难,牛人才能写出牛叉的代码,要做到这一点要有足够的阅历和实战,只能当做目标啦,哪天也和云风一样:今天完成了XX功能,代码明显没有什么错误。现在还不知道明显没有什么错误的代码是怎么样的,但我知道很多代码让我半天不知所云。如从类名和方法名看不出其职能;变量命名让人蛋疼;不对参数做任何验证;参数到处都是都是基本类型;方法参数十几个;一个方法几屏;不能适应半点变化的方法;要么没有注释,要么一堆废话;排版稀烂。这些都是不好理解,半天找不到问题的代码,也是容易出错的代码。
2:写容易查错的代码
一直想写很干净的代码,代码除了功能没有多余的代码,但是代码必须有日志,如果代码没有日志,要是出错了,查错肯定很麻烦,有时候真的是无从下手,一个功能涉及到一堆的模块,要想很快的定位错误,就必须记好日志。越清楚越好,程序执行到哪一步,当前的状态最好都要记下来,日志不在多,清楚记录有效的日志非常重要,过多无效的日志不方便查看,而且对于快速定位错误的位置没有任何帮助。如果日志都记录在文本文件中,最好能写一个分析日志的工具。可能是我写的和维护的代码太容易出错了,个人觉得记好日志真他妈重要。一看到日志就能知道出了什么问题那不是一般的爽,当然听说又出问题了让人郁闷。我以前所在的一家公司记录日志的方式是在很多类中都定义一个int类型的成员变量,每隔几行让它自增1,将这个值记录起来,当出错了就能大致估计是哪几行出错了。这种方法虽然有点蹩脚,代码中到处是这个变量,但的确能帮助我们快速定位错误的位置,日志的作用就是保存案发现场,只有记录犯罪分子作案的过程才能更好的抓住它。
3:写扩展性好的代码
“今天说要这样,明天说要那样,在上线的前一天说:还是觉得开始的做法是最好的”。而我们程序员总是为这种人2B的想法买单。写扩展性好的代码真的就是不仅要满足需求还要超越需求。我们到处可以听到这样的口号,当然很多情况下是这样的人自己都不知道需求是什么。最让人无语的是菜鸟提需求,我来实现。杀了我吧。但现实是杀了我之前我先要满足他的需求。当这种需求像滔滔江水绵延不绝的袭来时,我想到了四个字:生不如死。既然死不了,生活还得继续。代码还是要做到超越需求(你说这世界对程序员要求怎么就这么高呢),要做到这点难啊,我们是帮别人实现梦想的开拓者。前途是光明的,道路是坎坷的,现实是残酷的,代码必须是扩展性好的。当然这里所说都是人为因素。
还有就是项目的需求本来就是变化的,或者说你现在完成的是一期,还有二期,三期......,你在做的时候就必须考虑这些情况,不要把代码写死。我以前总是想:这个可能以后不会变化,可以写死,少一个参数,少一个变量性能会更好写。其实性能的提升相当于一个千万富翁突然多了几毛钱。但是要是以后需求变了,你就得改写代码,还得担心是否会出问题。有时候我就有点怕重构,就怕一个好的功能,被重构坏了,当然也和时间紧,测试不专业有关。写扩展性好的代码别在乎所谓的那点性能,那真的就是九牛一毛不值一提。一个项目维护时间久了,发现那些本来看是不变的很多都变了,而代码也被改了很多次,每一次修改就要做一堆本来没有必要的事情(修改代码,写测试说明,送测,协调上线,而这些沟通时间也不少,真叫一个低效浪费时间),如果能考虑到可能发生的变化,写好代码,效率会高很多,这一点就能体现高手和菜鸟的区别。
4:写高性能的代码
这是我一直渴望的(我当然也会说是我还没有做到的)。我觉得要写出高效的代码首先要非常明白你要实现的功能,将功能分析得很透彻,你找到了解决方案,回想你的实现,如果你的思路非常清晰,你就大致知道每一步是否够好,大致知道你的代码是否高效,或者更进一步说,你确定这就是最优解;如果功能实现了,但是你对自己实现的功能不是很了解,记忆模糊,那肯定不是最优解,你肯定会对自己不是很清楚的代码不放心(我经常是这样),就别谈性能,是否正确都待定。很多高效的代码都很简洁,容易理解,而有些代码总让人看起来很郁闷,如一堆看起来类似的代码实现一个很简单的功能。用数组和一个循环经常能将这样的代码简化,让你轻松实现简洁容易理解的代码,或许它不是最高效的。82法则告诉我们,我们应该对影响系统性能的20%的代码进行优化,而不应对其他的80%的代码耿耿于怀。20%影响性能的代码应注重性能进行优化,而其他80%则更多应该考虑理解性,扩展性等。
分享到:
相关推荐
本示例代码着重于C#与ID卡识别硬件的交互,这在身份验证、门禁系统、会员管理等多个场景中都有重要应用。ID卡通常采用RFID(Radio Frequency Identification)技术,通过无线电信号读取和写入数据,而C#提供了一些库...
今天让 GPT 帮我写心形表白代码。 请以初学C语言的身份,帮我写个简易版的心形代码,要求不超过 30 行代码,并且有注释。 GPT:好的,以下是一个简单版的心形代码,代码行数不超过30行,并且带有注释。 代码如下,...
因为我从 2020 年开始已经再也没有写过代码,重新回看这些论文也很吃力,但是现在的思考角度会更偏向业务人员,所以我想,写出来的内容对于技术小白来说应该更好懂。 从循环神经网络 RNN 开始 我们把时间拉回到最早...
VSCode模拟写代码,划水,摸鱼神器。代码写的快,提早完工被压榨怎么办?你需要一个模拟写代码工具,让代码自己重写一遍。当然也可以用来CodeReview做酷炫的效果让团队其他人猜猜后面的代码如何写。 安装方法 在...
左面板是一个表单 是做停靠 ,在表单的 ACTIVATE 事件写了停靠代码 这样可以解决 用户用鼠标推动表单 上面的《表单切换栏》 是一个普通表单 宽度为3000 去掉了标题栏 设置属性防止其他表单遮挡 其他打开的表单 在 ...
我虽然已经有多年不写代码了,但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令,对系统的每个部分都了如指掌。 黑客(hacker)实际是褒义词,维基百科的解释是...
我虽然已经有多年不写代码了,但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令,对系统的每个部分都了如指掌。 黑客(hacker)实际是褒义词,维基百科的解释是...
1、代码录入模块,可以快捷键进行,其实按照“代码语言”“代码分类”和“关键字”三类就可以区分代码; 2、代码查阅模块,可以查看“最近入库”的和“最近使用”数据,并且数据的查阅方法,非常好。 3、广告,可以...
超人气表单重复代码生成器帮助,给各位web程序猿、攻城狮好东东,大家都被重复的代码折磨的不成样子。特别是在写表单的时候,接收表单数据的时候,大量 的重复输入让我们很痛苦。有了超人气表单重复代码生成器,大家...
是我在上java课程时候的一个小练习,比较简单,主要是为了锻炼逻辑思维能力,一点点小的体会:做程序的时候 或许没有思路,但是可以先架设大的框架,有一个大概要做成的样子要在大脑中形成,就可以去写了。...
python是个很好玩的东西?好吧我随口说的,反正因为各种原因(其实到底是啥我也不知道),简单的学习了下python,然后...大概就是这个样子,哦了,丢代码丢代码 #!/usr/bin/env python3 # -*- coding: utf-8 -*- impo
cpu执行的代码和程序中我们写的的代码肯定不一样,她是什么样子的?又是如何从我们写的代码变成cpu能执行的代码的?程序运行时代码是在什么地方?她们是如何组织的?程序中的变量存储在什么地方?函数调用是怎样实现...
"5、写边框日志.jpg"可能展示了带有边框的日志示例,或者是在编辑过程中显示边框效果的截图,让用户知道最终结果会是什么样子。 "6、运用代码.jpg"可能是展示了一些实际的HTML代码片段,这些代码可以被复制粘贴到...
那个时候的代码写的很烂,大家看的话看控制的方法就好了,可以优化的自己优化! 调试时候先用窗口助手调试啊,没试过一台电脑用两个串口助手的。。可以用两台电脑啊! 先确保8266能够通过串口助手发送的信息按照你...
因为机器人女朋友应该是万能的,并不仅仅只会发报表,于是又对她重新进行了设计,几经波折,就成了现在这样子 : ) ## 安装 安装要求: * python 2.7,其余Python版本目前尚未测试和做兼容处理 * 操作系统目前只...
你有没有经历过这样的场景:在编缉别人的模版时发现那些语意不明的标签,你的感觉是什么样子的.学完这个教程后你会发现规范的代码不仅仅为你以后修改代码省下时间,特别是当你调试一个大的项目时你会发现,原来规范代码...
《如果海明威写JavaScript》这本书提出了一种非常有趣的观点,它想象了如果著名作家如海明威、莎士比亚和简·奥斯汀等人去写JavaScript代码会是什么样子。作者Angus Croll通过这个有趣的假设,展示了一些简短的...
总体来说样子还过得去,不足的地方还是很多的,像Fragment和activity各种乱用了,还有些bug自己也懒修了,特别是在Tabhost的第二个tab,因为嵌套了viewpage,viewpage里面还加了tablayout导致第一次显示居然没有标题...
为了避免ASP程序和HTML代码混写造成维护困难的情况,本文介绍了一种方法,利用模板来分离程序和页面,使程序设计更加轻松。 在使用ASP制作一个站点的时候,常常会出现一个ASP文件中,程序代码和HTML代码混合的情况。...
通常的撰写习惯是将代码不加分号写到脚本里,调试时用选中注释: Ctrl+R;解除注释: Ctrl+T,新建脚本: Ctrl+N,结果在右下角的命令行窗口显示,变量的值在右上角的工作区查看,不想要脚本中的语句立刻执行就加...