【编码规范】从代码之丑聊代码规范

最近看了代码之丑,就打算整理下,总结一下。

代码命名

首先从命名来说的话,其实对于大多数程序员来说,可能基本都是翻译软件翻译下,然后就直接改成对应的类名、参数名、函数名等。其实仔细一想,命名其实是很重要的。作用要做到简明之意。比如说针对一块三方数据调用的逻辑,那么就可以记性抽象化,然后callXXXThirdApi(),或者工具包的时候,要起到别人不看内部细节,就大概可以知道具体的作用。

好的命名,是体现业务含义的命名

重复代码

重复代码其实在项目中可能随处可见,写代码要想做到 DRY,一个关键点是能够发现重复。而不要重复是一个非常重要的软件设计原则,我们需要善于发现重复的代码将其改造成一个可以复用的代码逻辑。
比如针对于三方调用,对于接口超时重试机制,就可以进行封装成一个类。供系统内部所有调用外部系统使用。
不要重复自己,不要复制粘贴。DRY (Don’t Repeat Yourself)

长函数

长函数主要就是针对一个100多行的代码处理的功能过多,导致所有业务都冗余在一起,这种情况下,我们需要按照单一职责进行划分,按照不同的功能模块进行抽取出来。提取函数。
函数写短,越短越好

大类

大类其实和上面的长函数是同样的原因,就是职责划分不清楚,一般来说,一个类的也只应该负责一件事情,即便是通过继承和组装的方式。
把类写小,越小越好

长参数列表

减少参数列表的,如果过多就进行抽取出来形成一个类,然后进行传输。并且对于程序中 出现标记的行为 一般也不建议。

滥用控制语句

if\else 循环语句,可能有时候会导致代码层级太深,容易出现逻辑问题,所以针对这种情况,if情况不要多层判断,而要通过直接返回不符合的条件。直接return/。

缺乏封装

封装和抽象还是很重要的,如果一个业务功能都是由面条式的代码进行构建,那么无论在代码构件上还是业务逻辑以及后期的维护阶段成本都是显著增加的。一般可以运用迪米特法则。构建模型,封装散落代码。

依赖混乱

在面向对象中有一句话,那就是面向接口编程,高层依赖抽象,细节依赖于抽象。高层->抽象->细节。这样的架构是比较稳定的。

CR

CR的过程 可以尽可能暴露问题,以及可以提升自己的技术,本质上就是将自己的对代码的理解进行复述出来,然后其他人针对代码细节进行输出自己的建议。1.可以发现业务流程上的BUG 2.代码技术实现上的差异 3.代码的不规范地方。

最近感悟越来越深了,那就是好的编码习惯可以从一定程度上减少BUG数。并且前期的设计考虑的越多,后期出现的问题就越少。所以作为程序员 我们在实现需求的时候,不能仅仅是实现需求,需要从多个角度去考虑需求的合理性、需求的可实现性、以及在功能实现上的具体方案和细节、编码、测试、上线、监控等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/54064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3.0极速入门- 目录和文件说明

目录结构 以下文件均为npm create helloworld自动生成的文件目录结构 目录截图 目录说明 目录/文件说明node_modulesnpm 加载的项目依赖模块src这里是我们要开发的目录,基本上要做的事情都在这个目录里assets放置一些图片,如logo等。componentsvue组件…

SFM structure from motion

struction就是空间三维点的位置 motion 就是相机每帧的位移 https://www.youtube.com/watch?vUhkb8Zq-dnM&listPL2zRqk16wsdoYzrWStffqBAoUY8XdvatV&index9

Spark写数据到Doris报错node and exceeded the max retry times

用spark dataframe向doris写数据时,报下面错误: Failed to load data on BE: http://192.168.50.10:18040/api/mydb/dwd_virtual_table/_stream_load? node and exceeded the max retry times. 发现表没写入成功。刚开始很困惑,后来发现是…

西部AI小镇-构建自主虚拟世界

背景 未来曜文有接入市场上所有面向chatGPT开发的应用,例如开源聊天组件,西部小镇等 内容介绍 生成代理起床,做早餐,然后去上班;艺术家作画,作家写作;他们形成意见、互相关注并发起对话&…

Linux线程 --- 生产者消费者模型(C语言)

在学习完线程相关的概念之后,本节来认识一下Linux多线程相关的一个重要模型----“ 生产者消费者模型” 本文参考: Linux多线程生产者与消费者_红娃子的博客-CSDN博客 Linux多线程——生产者消费者模型_linux多线程生产者与消费者_两片空白的博客-CSDN博客…

基于Java+SpringBoot+Vue前后端分离党员教育和管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

ServiceManager接收APP的跨进程Binder通信流程分析

现在一起来分析Server端接收(来自APP端)Binder数据的整个过程,还是以ServiceManager这个Server为例进行分析,这是一个至下而上的分析过程。 在分析之前先思考ServiceManager是什么?它其实是一个独立的进程,由init解析i…

关于DDR协议的一些操作的理解3

1.ODT ODT操作的原因: DDR3中的ODT(On-die termination) - aerguqiuhui - 博客园 (cnblogs.com) 2.DDR中的差分信号 3.DDR中的write leaving

银河麒麟服务器、centos7服务器一键卸载mysql脚本

脚本 # 查看mysql相关的rpm包写到rmsql.sh文件中 rpm -aq | grep -i mysql >rmsql.sh # 修改文件为卸载mysql的脚本文件 sed -i -e s/^/yum remove -y / rmsql.sh # 修改文本权限 chmod 777 rmsql.sh # 全盘查找mysql相关文件,写到my.sh脚本中 find / -name mysq…

git及GitHub的使用

文章目录 git在本地仓库的使用github使用创建仓库https协议连接(不推荐,现在用起来比较麻烦)ssh连接(推荐)git分支操作冲突处理忽略文件 git在本地仓库的使用 1.在目标目录下右键打开git bash here 2.创建用户名和邮箱(注: 下载完…

UG/NX二次开发从业人员的职业规划

UG/NX二次开发是一项具有广泛应用和发展前景的技术领域,对于从业人员来说,制定合理的职业规划是实现个人职业发展和成就的关键。本文将探讨UG/NX二次开发从业人员的职业规划。 建立坚实的基础:作为UG/NX二次开发从业人员,首先要建…

框架(Git基础详解及Git在idea中集成步骤)

目录 基础: idea集成Git并添加项目到git仓库 1.idea集成git,集成.git.exe文件 2.初始化本地Git仓库项目 3. 将工作区代码添加到暂存区 4.将暂存区代码添加到本地仓库 5.Git本地库操作 Idea集成Gitee并提交代码到第三方库 1.setting里搜索gitee 2.添…

ASEMI快恢复二极管APT80DQ60BG特点应用

编辑-Z APT80DQ60BG参数描述: 型号:APT80DQ60BG 最大峰值反向电压(VRRM):600V 最大直流阻断电压VR(DC):600V 平均整流正向电流(IF):80A 非重复峰值浪涌电流(IFSM):600A 工作接点温度和储存温度(TJ, …

设计模式(11)观察者模式

一、概述: 1、定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 2、结构图: public interface S…

(三)行为模式:4、迭代器模式(Iterator Pattern)(C++示例)

目录 1、迭代器模式(Iterator Pattern)含义 2、迭代器模式的UML图学习 3、迭代器模式的应用场景 4、迭代器模式的优缺点 (1)优点 (2)缺点 5、C实现迭代器模式的实例 1、迭代器模式(Itera…

java学习-阻塞队列原理

JAVA 阻塞队列原理 阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况: 当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起)&#x…

通过双层负载均衡实现HTTPS代理的高并发处理和容错能力

在互联网应用中,HTTPS代理服务器是承担用户请求的重要角色。当网站面临高并发请求时,单一的服务器可能无法满足需求,会导致性能下降和容错能力不足。为了解决这个问题,我们可以通过双层负载均衡技术来实现高并发处理和容错能力的提…

4G数传方案(合宙cat1模块)

一. 合宙Cat1简介 合宙 Air724 模组推出的低功耗,超小体积,高性能嵌入式 4G Cat1 核心版,标准的 2.54 排针、最小成本的进项 2G、4G Cat4 切换;主要功能如下: 实际测试工作环境为-35℃-75℃; 支持 5-12V 供电或者 3.7…

嵌入性视角下的企业集成创新网络演化构成要素

嵌入性,是指一个群体的历史造成了成员间的惯例和稳定。Gmnovetter 将嵌 入性分为两类,即关系性嵌入与结构性嵌入。关系性嵌入是指单个行动者的经济行 为是嵌入于他与他人互动所形成的关系网络之中的,当下的人际关系网络中的某些 因素&…

【项目经验】:项目中下拉框数据太多造成页面卡顿(二)

一.项目需求 下拉框下拉列表数据是由后端返回的,而且他会变化,所以数据不是写死的而且数据量大。上一篇博客http://t.csdn.cn/sSNTa我们是用的数据懒加载的方式,这次我们使用远程搜索的方式解决这个问题。 二.用到的组件方法介绍 filterabl…