最近项目组为了提高代码质量,组队一起学习了代码精进之路课程,来提升代码质量,减少线上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
分享到:
相关推荐
"程序员的自我修养—链接、装载与库" 在计算机科学中,链接、装载和库是三个紧密相连的概念,它们都是程序员需要掌握的重要知识点。下面,我们将详细解释这些知识点。 一、链接 链接(Linking)是指将多个目标...
《程序员自我修养——链接装载与库》是计算机科学领域一本重要的技术书籍,主要探讨了程序在计算机系统中的构建、链接和装载过程,以及库在其中的关键作用。这本由Steve McConnel编著的著作深入浅出地讲解了底层编程...
以下是对不同层级程序员自我修养的一些具体建议: 1. **L1个别人贡献者**: - 明确工作目标,保持高效的工作交付。 - 有效的时间管理和优先级安排。 - 主动沟通,建立良好的团队协作关系。 - 不断学习新技能,...
根据给定的信息,我们可以整理出一系列关于计算机系统与编程的重要知识点。下面将对这些知识点进行详细解释和扩展。 ### 知识点一:CPU与I/O设备的关系 **原文描述**:“1.3Ϊؼ봦CPUڴI/OоƬ” ...
### 程序员的自我修养——运行库 #### 入口函数与程序初始化 在传统的认知中,人们普遍认为程序是从`main`函数开始执行的。然而实际上,`main`函数并非真正的入口函数,而是在一系列初始化操作之后才被调用的一个...
### 一个程序员的自我修养(编程修养) #### 1. 代码规范的重要性 - **背景**:在软件开发过程中,编写高质量、易于维护的代码至关重要。这不仅能够提高工作效率,还能减少错误的发生。 - **意义**:良好的编码...
在IT行业中,程序员的自我修养是决定项目质量与效率的关键因素。为了提升个人的专业素养,遵循一定的编程规约、进行有效的异常日志管理、实施单元测试、关注安全规约、优化数据库设计以及合理构建工程结构至关重要。...
《程序员的自我修养》是一本深受开发者喜爱的书籍,它深入浅出地讲解了软件开发中的许多关键概念。第十三章“MiniCRT实现代码”聚焦于C语言运行库(C Runtime Library,简称CRT),这是每个C程序运行的基础。C运行库...
A guide on how to be a Programmer - originally published by Robert L Read
《程序员的自我修养--链接、装载与库》是一本深入探讨程序构建过程的书籍,它涵盖了从源代码到可执行文件的关键步骤。阅读笔记主要围绕以下几个核心知识点展开: 1. **编译与链接**: - **编译**是将高级语言转化...
"程序员的自我修养链接、装载与库" 《程序员的自我修养链接、装载与库》是一本关于程序员技能修养的重要书籍,它从链接、装载和库的角度出发,深入浅出地介绍了程序员必备的核心知识和技能。本书介绍了程序员的自我...
作为一个程序员,自我修养是至关重要的,它涉及到技术能力、学习态度、团队合作和职业道德等多个方面。在Linux环境下,程序员的自我修养尤其显得重要,因为Linux系统是许多IT专业人士的首选平台,尤其对于服务器管理...
MiniCRT《程序员的自我修养》运行库:MiniCRT实现。编译:进入make目录,执行./make.sh,将会打印使用说明,其中target有minicrt、main以及clean三个选项:minicrt: 该项编译出minicrt.a静态库;main: 该项编译出运行...
读书笔记:程序员的自我修养
读书笔记:程序员的自我修养笔记
读书笔记:程序员的自我修养springboot
读书笔记:程序员的自我修养实验
读书笔记:关于程序员的自我修养
读书笔记:专业程序员的自我修养