欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

程序员的自我修养

程序员文章站 2022-03-10 12:57:36
...
最近项目组为了提高代码质量,组队一起学习了代码精进之路课程,来提升代码质量,减少线上bug的产生。一部电影的好坏,一部分因素靠演员的自我修养,涉及到代码质量问题,同样要靠程序员的自我修养。
一、代码规范

(1)命名规范

平时在编码时,声明变量方法时,一定要规范,语义清晰。让阅读代码,评审代码时可读性强。记得之前学习Object-C语言时,那里面的方法名称就是特别长,但是只要能看懂英文,就知道方法是干什么用的。Python靠缩进就可以控制方法的开始与结束。
(2)注释规范

代码注释主要是常量,枚举等声明时,要解释一下使用的意义;方法注释主要是要说明方法的作用,参数以及返回值,作者以及时间;实体要加对应字段的注释,避免字段混淆;类注释主要描述类的作用以及版本信息。
(3)异常处理

编写代码要有正向思维,也要有逆向思维,这时候就需要考虑异常情况,需要进行异常处理,这样就可以提升代码的可用性以及健壮性。
(4)接口规范

每个公司都有自己的组织架构,业务组,业务中台,后台,架构等等,各个部门在业务协作的时候,就会有互相调用的情况,这时候就需要接口规范来控制。接口规范是协作合约,所以需要有一定的原则。
以下是接口规范的四个原则:
合约要成文,落地成文,避免甩锅。
合约要清晰,接口规范主要是用来描述接口的设计和功能,包括边界条件,指定参数范围以及极端情况,所以在清晰。
合约要稳定,部门协作,当然需要保障接口的稳定性。
变更要谨慎,由于业务不可能一成不变,所以接口在变更时,一定要谨慎。及时通知使用方,以及做好兼容性。
强调编码规范,因为代码规范有以下几点好处:
1、提高编码效率
2、提高编码质量
3、降低维护成本
4、扩大代码影响
代码的产生最好要经过以下五道关卡,通过层层关卡,来约束编码质量:

1、程序员编写
2、编译器编译
3、回归测试
4、代码评审
5、代码分析
在编码完成时,需要按照编码规范清单检查,如代码是否按照预期工作?文件目录是否合理?代码是否易于阅读,理解?是否遵守命名规范?异常处理是否准确,描述是否清晰?等等。这个规范有团队共同协商。
目前一般都会安装阿里巴巴编码规范插件,按照阿里巴巴的规范(规范是人定义的,只要合理就可以),在编码时,开启自动扫描,出现不规范时,会有警告提示。

二、代码经济

(1)避免需求膨胀,避免过度设计

识别最核心需求,持续交付,从0到1,从1到无穷。每次需要需要明确需求的范围,避免需求膨胀,管理好需求,是提高工作效率和软件效率最有效的路径。这可能不是程序员决定的,但是跟产品打交道的时候,最好还是明确需求。
设计是程序员必须要做的,过度设计导致过度复杂,复杂导致效率降低,性能降低,危险加剧。
(2)简单直观
乔布斯的苹果,张小龙的微信都体现出对极简主义的追求,编码也要追求简单直观,少就是多,一个接口尽量只做一件事,如果做不到,那就要减少依赖关系,并表明依赖关系。

(3)避免线程同步

线程的执行方式一般有同步与异步,如果必须要强一致性,只有同步,那就尽量减少线程同步时间,如果能异步处理,还是采用异步处理,响应快。比如日志记录等,可考虑异步记录。
(4)减少内存使用

程序的运行少不了内存,为了避免内存溢出,就要合理的利用内存,虽然Java有JVM自动回收机制,不用自己手动管理内存,但是为了性能,还是要减少实例数量,减少实例大小。延迟分配,延迟初始化,需要时再声明,需要时再分配原则。
(5)代码的可持续性

代码的可持续性主要体现在垂直扩张(纵向)和水平扩张(横向)两方面。代码应该具有可伸缩性,可拓展性。毕竟从1到无穷是一个漫长的过程。垂直扩张一般指同一个处理单元处理更多负载的能力。如增加硬盘,更换cpu,内存硬件方面,软件方面主要是算法优化等。水平扩张主要是增加更多的处理单元,来处理更多的负载。如增加服务器,分布式系统,负载均衡,集群等技术手段。水平扩张的时候需要考虑有状态数据和无状态数据。比如让微信官方给一面国旗的活动,活动太火爆,换头像的时候,服务就提示异常,这就需要水平扩展服务来支撑这么大的并发量。
编写经济的代码可以带来以下好处:
1、提升用户体验
2、降低研发成本
3、降低运营成本
4、防范可用性攻击
怎样编写经济代码,可参考以下规则:
1、避免过度设计
2、选择简单直观
3、超越线程同步
4、减少内存使用
5、避免性能陷阱
6、规模扩张能力
要做到经济代码,同样需要代码清单检查:

1、需求评审
2、设计评审
3、代码评审
三、代码安全

提到代码安全,一定会先想到黑客攻击,为什么被黑客攻击,就是代码存在安全漏洞。
掌握安全编码的技术,熟练修复软件漏洞的实践,需要有意识,知晓,看到。
(1)如何评估代码安全缺陷

关注用户感受,从用户感受出发,衡量软件缺陷两个最常用的指标,缺陷影响的广度和缺陷影响的深度。缺陷,需要从内向外看,有的缺陷用户感知不到,只有程序员内部知道情况,比如金额扣为负的情况。细化的优先级从高严重性、高可能性(P1)到低严重性、低可能性。优先级的灵活性,如果已经存在对应办法,优先级可下调,如果缺陷影响了重要的运营或者客户,优先级可上调,可以灵活调动。管理好自己的时间,人的时间总是有限的,一天工作的时间有限,所以就优先处理优先级高的缺陷。
(2)敏感信息的处理
敏感信息主要包括两方面:个人敏感信息和商业敏感信息。个人敏感信息主要是电话、地址、家庭等,商业敏感信息主要包含客户信息,商机信息等。要做好加密处理,避免数据泄露,被黑市交易利用等等。要做到特殊信息 需要特殊处理。
安全缺陷严重性,主要体现以下几点:

1、对私密性的影响
2、对完整性的影响
3、对可用性的影响
4、对授权范围的影响
安全缺陷的可能性:

1、安全攻击的路径
2、安全攻击的复杂度
3、安全攻击需要的授权
4、安全攻击是否需要用户参与
编写安全代码基本原则:

1、清楚调用接口的行为
2、跨界数据不要信任
3、最小授权原则
4、减少安全攻击面
5、深度防御原则
程序员的自我修养,要做好一个程序员,需要以下六个技能:

1、掌握一门编程语言(技能)
2、解决现实问题(目标)
3、发现关键问题(敏锐)
4、沉静的潜行者(妥协)
5、可以依赖的伙伴(队友)
6、时间管理者(时间)
关于健康

健康是一切的根基,没有健康,也就天方夜谭,平时要注意锻炼身体,养成健身的习惯。
关于生活

人活一生,还是要享受人生,享受生活,不给人生留遗憾。工作也是为生活服务的。要多陪伴自己的家人,因为一旦错过就不在。

关于工作

工作无贵贱之分,只要自己喜欢,开心就好。

关于学习

作为程序员,学习是不可少的,毕竟靠技术吃饭的,技术又更新替代的那么快,所以还是要不断的学习新的技术,来满足工作的需要,生活的需要。平时也可以读书,开拓一下自己职业的局限性,了解一下外面的世界,避免在圈内失业,颓废。
https://mp.weixin.qq.com/s/VcYOpMz6SLYFznSJ9S9eSQ