04 | 代码规范的价值:复盘苹果公司的GoToFail漏洞
该思维导图由 AI 生成,仅供参考
什么是编码规范?
规范的代码,可以降低代码出错的几率
- 深入了解
- 翻译
- 解释
- 总结
编码规范对软件开发至关重要,它能提高代码质量、降低出错几率、提高编码效率和降低软件维护成本。严格遵守规范可以使代码更简单、直观、逻辑清晰,从而降低出错几率,提高编码效率,节省时间和精力。在软件维护阶段,规范的代码能够提高代码的可读性,使参与者更容易理解和解决问题。文章还强调了编码规范的使用越多越高效的特点,类比了乘法口诀的例子,强调了养成编码规范的习惯对于提高工作效率的重要性。最后,通过一段代码示例,引导读者思考如何改进代码的规范性。整体而言,本文强调了编码规范对软件开发的重要性,以及遵守规范对提高工作效率和代码质量的积极影响。
《代码精进之路》,新⼈⾸单¥59
全部留言(30)
- 最新
- 精选
- Carlos置顶我感觉我就是一个有代码洁癖的人,写代码时有自己的原则和规范方法,其中做到易读和结构简洁是首要原则,这里面像命名,缩进,空行这种静态规则,有IDE的帮助还算比较容易做到。对于不少人来说比较难做到的可能是代码逻辑的组织。前几天刚看了个同事写的代码,关于视频课程管理的,表结构设计也是他做的。业务上要求课程需要属于某个等级,等级属于类别,类别属于厂商,为了做到同一个课程向不同客户展示不同的价格,又设计了个课程价格关系模型。这几个子项都有对应的业务模型和业务接口类。问题来了,添加课程时,在课程的某一个controller方法里,分别通过getparameter获取参数,构造数据对象,然后调用业务逻辑接口执行插入,最终完成多个业务模型的操作,有的是一对多再来个循环。一个方法里干这么多事情,我都接受了,居然把获取参数和给对象赋值无规律的穿插进行,偶尔还穿插来个参数校验,并且还在方法内部把获取过来的参数加个中文注释。删除课程数据时,需要把关联子模型数据也删除掉,他把各个子模型的删除方法都写到课程的service里。另外还存在A引用B,B又引用A,同时A又被其他好几个地方引用,不同引用之间通过不同参数走不同分支,并且有些参数在哪个场景下传过来的,他自己也弄不清了。带来这样问题就是写代码前,没把逻辑脉络梳理清楚,完全跟着感觉走,就一个简单的增删改查能写成这样,真怀疑要是把一个后端数据服务的代码给他写不知道能给写成啥样。
作者回复: 如果逻辑没有理清楚,就开始写代码,就有可能后面越改越乱。 我想起来前面有人说的小黄鸭的办法,把代码逻辑讲给小黄鸭听。能讲出来,逻辑就被梳理了一遍。 我在评审代码的时候,如果看到太复杂的代码,我就问作者问题,问为什么这样,问什么不那样做。几个问题下来,代码就会顺利些。
2019-01-1125 - 👽读烂代码就想抽人。 类似于new一堆对象。然后在几十行以后才使用 如果命名规范还好,如若不规范就要点回去看。 还有这样奇怪的代码,写了个循环便利集合,但是循环中只有 if(list.get(0)!=null){ return list.get(0); } 每次读这样的代码。全都要研究一下这个循环是干啥的。 还有这样的,解决异常。try包了一大串代码,找哪一行抛的异常很费劲。 还有实体类型字段,String state=“1”; 然后后面备注。1代表啥,2代表啥,3代表啥。 不老老实实写个枚举或者常量嘛? 还有代码里的无端空行。写一行,空一行......一个半屏幕滚动能看完的代码,硬是看了两个半屏幕。 关键是还没法去说,毕竟同事之间。只是默默祈祷,不要让自己维护他的代码就好。
作者回复: 😂我看这个留言,满是欢乐啊。 为什么没办法说呢? 一般这种问题,说了就是帮助他提高啊。 当然,我也理解有些公司文化不开放。 我替你想两个办法,一个是琢磨琢磨怎么说他会愉快滴接受,并且感谢你。或者,琢磨琢磨怎么搞个规范,让流程帮助他。 他变好了,你也工作轻松,心情愉快,对吧? 多赢! 这种事情,也能给你带来成就感,不信你就试一试😄。
2019-01-11213 - Y024阿里巴巴 java 开发规范,官方已提供了 idea、eclipse 插件,详情可以访问官方链接:https://github.com/alibaba/p3c/blob/master/README.md 此外还有FindBugs、PMDPlugin、CheckStyle 、JavaNCSS、sonarlint,可以多管齐下,为你保驾护航。
作者回复: 谢谢提供这么多资源🙏
2019-01-13210 - richey范老师,阿里的代码规约检查插件已经有了,还挺好用的
作者回复: 谢谢你! 我要记得下次把这个修订了。
2019-01-116 - cocoa1.属性明确加上private 2.泛型赋值的时候自动判断类型,不用显示加 3.if的第一个或条件不需要 4.if使用大括号 5.map一般用来转换,这块用迭代foreach就行了 6.不用使用顺序迭代,本来集合list就有顺序 7.toSring显示标明override
作者回复: > 1.属性明确加上private 如果是个公开类,需要使用private修饰符。 如果是内部类,使用缺省的修饰符也可以。 > 2.泛型赋值的时候自动判断类型,不用显示加 是的。 > 3.if的第一个或条件不需要 如果把缺省的无参构造函数补上,这个条件就明显地不需要了。 > 4.if使用大括号 对的。 > 5.map一般用来转换,这块用迭代foreach就行了 > 6.不用使用顺序迭代,本来集合list就有顺序 是的,foreach足以。 > 7.toSring显示标明override 是的,这是一个违反规范的地方。
2019-01-116 - 👽“我替你想两个办法,一个是琢磨琢磨怎么说他会愉快滴接受,并且感谢你。或者,琢磨琢磨怎么搞个规范,让流程帮助他。 他变好了,你也工作轻松,心情愉快,对吧? 多赢! 这种事情,也能给你带来成就感,不信你就试一试😄。” 为了看到规范代码。我做了以下的事: 1. 自己先更加严格要求自己的代码。 2. 参加了阿里巴巴代码规范的认证考试,并拿到了证书。 3. 把证书给领导看一眼(证明我自己是规范的),然后说规范很有用。 4.领导表示,嗯,他也觉得是这样。 5.领导在群里通知,建议大家考一下,费用公司报销。 5几个月过去了,我还是唯一一个我们单位执证上岗的。 6. 报了范老师的课程。无法要求别人,但是更不能停止精进自己!最起码不能让别人骂我的代码! 希望这段留言不会被我同事或者领导看到,紧张。 不过,被看到了,貌似也有好处,没准我们公司的代码明天就规范化了呢。
作者回复: 赞! 领导和同事看到你的留言也没问题的,规范是多赢的局面,大家都进步。规范这东西,用的人越多力量越大,效率越高。 同事们没有规范,大概率是还没有意识到规范的好处。前几篇文章我自己都觉得都有点啰嗦。但是我就是要把这些基本的理念,翻过来调过去的讲,从不同的角度讲。有了这些意识以后,技术的东西就都是小事了。我也建议你分享一下专栏的这几篇文章给同事们。 我想一想有什么形式,可以让三五个小伙伴组成一个小组,把代码规范就启动起来,还不增加大家的工作负担。也许后续我们可以写一个专题文章。专栏的小伙伴们,也帮着想想办法。
2019-01-142 - 槛外人希望能多点最佳实践,最近几期好像有点重复了
作者回复: 好的,以后多考虑加点实践。
2019-01-142 - Linuxer看自己的代码不顺眼,看别人的也是,开源代码很多就看着赏心悦目。总感觉那方面还需要加强,总是不得其法
作者回复: 我们这个专栏就是讨论怎么写好代码的。我们慢慢来。 讨论区有很多高手,多参与讨论,多做练手题。一定会有收获的。
2019-01-1222 - 秦凯分享两条简单、有价值的实践: 在编辑器中设置使用指定的空格数(一般四个)替换tab键; 范老师之前提到的,用if else 替换三目运算符,以及用 i += 1; 替换 ++i;等,可以让代码逻辑更易于理解,降低阅读成本。
作者回复: 好使😊,tab键,可以在IDE设置好,vi也可以设置,把tab换成四个空格。
2019-01-112 - 6点无痛早起学习的和尚这里想问老师一个问题:那金融业务编码规范又是什么呢?包含什么内容?
作者回复: 编码规范一般可能不分业务类型,找一个通用的编码规范就好。
2024-01-15归属地:北京