代码日常规范

1、编写代码的七大原则

其实在日常生活中的代码只要贯彻这七大原则,然后在这基础上提高编译执行的效率就好

1.1 可读性

可读性是编写代码的关键,它可以让代码更容易理解,更容易维护和修改。可读性可以通过缩进、换行、注释和提示信息等方式来实现。

1.2 结构化:

结构化是指程序的结构要清晰明了,功能模块分明,可以让程序的结构更加清晰,易于理解和维护。

1.3 命名规范:

命名规范指的是编写代码时,变量名、函数名、类名等应该遵循一定的规范,这样可以让程序更容易理解。

1.4 代码复用:

代码复用是指在编写程序时,如果发现某些功能模块可以重复使用,就可以使用函数、类或模块等方式进行复用,以节省开发时间和维护成本。

1.5 代码风格:

代码风格是指编写代码时,语法、标点、变量命名等遵循一定的统一规范,以使代码更加美观,更加易读。

2、如何增加代码的可读性

其实可读性这个范围比较广,可以指整个代码的可读性也可以指变量的可读性。

  1. 使用有意义的变量和函数名:选择具有描述性的变量和函数名可以帮助其他人更好地理解代码的含义。避免使用单个字母或缩写作为变量名,而应该使用能够清晰表达用途的名称。

  2. 缩进和格式化:正确的缩进和格式化可以使代码结构更清晰,易于阅读。使用适当的缩进来表示代码块的层次结构,并根据约定的风格指南对代码进行格式化。

  3. 添加注释:在关键部分添加注释可以解释代码的用途和实现细节。注释应该简洁明了,描述清楚代码的意图和目的。

  4. 拆分长的代码块:长的代码块往往难以理解和维护。将长的代码块拆分成更小的函数或模块,每个函数只负责一个明确的任务。

  5. 遵循命名约定:根据编程语言的命名约定,一致地命名变量、函数、类等。这样做可以使代码更易于阅读和理解。

  6. 减少嵌套和条件语句:过多的嵌套和复杂的条件语句会增加代码的复杂性。尽量将嵌套层级保持较少,并考虑使用其他方式来简化条件逻辑,如使用多态或设计模式。

  7. 使用空格和空行:正确地使用空格和空行可以增强代码的可读性。在运算符、逗号和分号周围添加空格,使用空行来分隔不同的代码段。

  8. 删除冗余代码:消除不必要的代码可以使代码更加简洁和易读。删除重复的代码块和无用的注释,保持代码的简洁性。

  9. 提供文档和说明:为代码提供适当的文档和说明,包括函数和类的用途、参数和返回值的解释等。这样做可以帮助其他人更好地理解和使用你的代码。

  10. 参考优秀的编程实践:学习和借鉴一些优秀的编程实践,如SOLID原则、设计模式等,可以提高代码的可读性和可维护性。

  11. 减少代码行长度:避免过长的代码行,通常建议不超过80个字符。将较长的代码行拆分成多行,以提高可读性。

  12. 使用空格对齐相关代码:对齐相关的代码行,如函数参数、赋值语句等,可以使代码结构更清晰。这样做可以让人更容易看出代码之间的关联性。

  13. 模块化和封装:将相关的功能模块化和封装成函数、类或模块,以提高代码的模块性和可读性。每个模块应该有清晰的功能和责任。

  14. 避免过度工程化:避免在不必要的地方引入过多的抽象和复杂性。简洁的代码往往更易于理解和维护。

  15. 使用合适的注释风格:选择一种适合的注释风格,并在代码中保持一致。常见的注释风格包括行内注释、块注释和文档注释等。

  16. 进行代码审查:通过代码审查,可以由其他开发人员检查你的代码并提供反馈。代码审查可以帮助发现潜在的问题并提供改进建议,从而提升代码的可读性。

  17. 使用合适的数据结构和算法:选择合适的数据结构和算法可以使代码更加简洁和高效。使用常见的数据结构和算法,可以让其他人更容易理解你的代码。

  18. 学习和遵循最佳实践:不断学习和探索编程领域的最佳实践,并应用到自己的代码中。了解业界推荐的编码规范和设计模式,可以帮助提高代码的可读性和质量。

  19. 使用合适的设计模式:了解常见的设计模式(如工厂模式、观察者模式、策略模式等),并在适当的场景下应用它们。设计模式可以帮助你更好地组织和架构代码,使其更易于理解和扩展。

  20. 提供良好的错误处理和日志记录:在代码中添加适当的错误处理机制和日志记录,以便在出现问题时能够更容易地进行故障排查和修复。

  21. 使用单元测试和集成测试:编写单元测试和集成测试可以确保代码的质量和稳定性。同时,这也可以作为文档来展示代码的使用方法和预期行为。

  22. 遵循编码规范和标准:遵循编程语言的编码规范和标准,比如PEP 8对于Python、Google Java编码风格指南等。这些规范旨在提高代码的一致性和可读性。

  23. 使用版本控制系统:将代码存储在版本控制系统中(如Git),并养成提交清晰注释和分支管理的良好习惯。这样可以更好地跟踪代码变化,以及协作开发和回滚代码。

  24. 关注性能优化和可伸缩性:在需要的情况下,对代码进行性能优化和可伸缩性考虑,以确保代码能够高效地运行并支持未来的需求。

  25. 团队间沟通和知识分享:与团队成员保持良好的沟通,并积极分享自己的编程经验和技巧。通过分享和交流,可以从他人的经验中学到更多,并不断改进自己的编码水平。

3、如何贯彻代码的结构化

  1. 模块化:将代码划分为独立的模块或函数,每个模块都有特定的功能,并且相互之间的依赖关系尽可能低。这样可以降低代码的复杂度,提高代码的可维护性和可扩展性。

  2. 层次化:按照不同的功能或抽象层次划分代码,将相关的功能放在同一层次中。例如,可以将用户界面与业务逻辑分离,使得两者可以独立变更而不影响彼此。

  3. 控制流程:使用适当的控制结构(如条件语句、循环语句)来管理程序的执行流程。确保代码的逻辑清晰,易于理解和调试。

  4. 数据结构:选择合适的数据结构来组织和存储数据。根据程序的需求和性能要求选择数组、链表、栈、队列等数据结构,并合理使用数据结构的操作方法。

  5. 抽象化:通过定义抽象数据类型和接口,隐藏实现细节,使得代码的使用者只需关注接口暴露的功能而无需关心底层实现。这样可以提高代码的可重用性和可维护性。

  6. 一致性:在整个代码中保持一致的命名规范、缩进风格、注释格式等。这样可以使代码更易读,并且减少出错的可能性。

  7. 异常处理:合理地处理异常情况,避免程序崩溃或者出现未处理的错误。使用try-catch语句捕获异常,并根据具体情况进行适当的处理或者错误报告。

  8. 单一职责原则:确保每个模块或类只负责一个明确的功能。避免一个模块承担过多责任,这样可以使得代码更加清晰和易于维护。

  9. 开闭原则:对修改关闭,对扩展开放。通过使用接口、抽象类和设计模式等技术,使得代码在需求变更时能够灵活扩展,而不需要修改已有的代码。

  10. 封装性:将相关的数据和操作封装在一起,形成类或对象。通过封装,可以隐藏实现细节,提供简洁的接口,并且保护数据的完整性。

  11. 高内聚低耦合:模块内部的关联度应该高,模块之间的依赖关系应该尽量减少。高内聚意味着模块内部的功能相关性强,低耦合意味着模块之间的依赖关系弱化,使得代码更加可维护和可测试。

  12. 注释和文档:为代码添加清晰的注释,解释代码的作用、实现细节以及使用方法。此外,编写详细的文档说明代码库的整体结构、使用方法和设计思路,有助于新的开发人员理解和使用代码。

  13. 代码复用:避免重复编写相同或类似的代码,提高代码的复用性。通过抽象、继承、组合等技术,将通用功能封装为可复用的模块或库。

  14. 性能考虑:在编写代码时要注意性能问题,选择高效的算法和数据结构,并优化关键路径上的代码。这样可以提高代码的执行效率和响应速度。


 

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

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

相关文章

电子学会C/C++编程等级考试2022年06月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:小白鼠再排队 N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白…

React 之 airbnb - 项目实战

一、开发前言 1. 规范 2. 创建项目 node -v > 18.0.0 npm -v > 8.6.0 create-react-app star-airbnb 3. 项目基本配置 配置jsconfig.json {"compilerOptions": {"target": "es5","module": "esnext","ba…

kafka2.x常用命令:创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费

原创/朱季谦 接触kafka开发已经两年多&#xff0c;也看过关于kafka的一些书&#xff0c;但一直没有怎么对它做总结&#xff0c;借着最近正好在看《Apache Kafka实战》一书&#xff0c;同时自己又搭建了三台kafka服务器&#xff0c;正好可以做一些总结记录。 本文主要是记录如…

Spring --- 创建一个Spring项目

文章目录 创建一个Maven项目添加Spring框架支持添加启动类 创建一个Maven项目 注&#xff1a;我们需要使用 Maven 来管理依赖&#xff0c;所以需要创建一个Maven项目 添加Spring框架支持 注&#xff1a; 添加这两个依赖才能正确使用 Spring在添加依赖后记得刷新&#xff0c;把依…

windows安装 evo

1、widows先下载安装python 下载 &#xff0c;安装&#xff0c;设置系统环境变量 2、windows下安装pip 下载 &#xff0c;安装&#xff0c;设置系统环境变量 3、安装evo 二进制安装

【Nginx篇】Nginx轻松上手

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【运维】nginx中root和alias区别和作用是啥

文章目录 前言1、root指令2、alias指令总结&#xff1a; 前言 nginx指定文件路径有两种方式root和alias&#xff0c;这两者的用法区别&#xff0c;使用方法总结了下&#xff0c;方便大家在应用过程中&#xff0c;快速响应。root与alias主要区别在于nginx如何解释location后面的…

Unity2D-URP基于ShaderGraph创建带粒子特效的激光光束

文章目录 创建Shader新建Node: UV新建Node: Split......参数说明 基于Shader创建Material创建Line创建粒子系统StartVFX创建粒子材质更改粒子系统的材质设置透明模式设置粒子效果创建一个Beam设置EndVFX效果预览激光光束管理脚本最终预览 创建Shader Create --> Shader Gra…

零信任、SASE还在因不标准的身份系统难对接而无法发挥真正力量?这份标准化的解决方案助您一臂之力

身份安全是网络安全的一个重要领域&#xff0c;旨在确保用户的身份安全可信&#xff0c;防止未经授权的访问和数据泄漏等问题。目前主流的信息安全趋势强调可持续验证、多源信任评估、动态防护、可持续数据防护、一体化安全审计等&#xff0c;特别是零信任、SASE等技术均以身份…

macOS/Ubuntu - ftp 工具

文章目录 Ubuntu - FilezillamacOS - Termius Ubuntu - Filezilla 安装 sudo apt-get install filezilla查看版本 filezilla --version启动 filezilla你也可以下载安装包&#xff1a; https://filezilla-project.org/download.php 解压 FileZilla_3.66.1_x86_64-linux-gnu…

vue elementUI 自定义框组织树,选择select下拉组织树横行滑动条出现方法

背景&#xff1a;最近公司开发需要使用到组织树进行组织结构的选择&#xff0c;在开发途中遇到两个次组织树已超过外框&#xff0c;但超出部分不显示横向滑动条。 自定义组织树框代码如下&#xff1a; <el-row><el-col :span"20" style"padding: 0px…

《数据结构、算法与应用C++语言描述》-线索二叉树的定义与C++实现

_23Threaded BinaryTree 可编译运行代码见&#xff1a;GIithub::Data-Structures-Algorithms-and-Applications/_24Threaded_BinaryTree 线索二叉树定义 在普通二叉树中&#xff0c;有很多nullptr指针被浪费了&#xff0c;可以将其利用起来。 首先我们要来看看这空指针有多少…

Leetcode刷题之设计循环队列(C语言版)

Leetcode刷题之设计循环队列&#xff08;C语言版&#xff09; 一、题目描述二、题目示例三、题目解析Ⅰ、typedef structⅡ、MyCircularQueue* myCircularQueueCreate(int k)Ⅲ、bool myCircularQueueIsEmpty(MyCircularQueue* obj)Ⅳ、bool myCircularQueueIsFull(MyCircularQ…

Spring加载Bean的多种方式

文章目录 1. XML方式定义2. 使用Component ComponentScan3. 使用Configuration Bean4. 使用FactoryBean的方式加载bean5. Import方式6. Import ImportSelector7. Import ImportBeanDefinitionRegistrar8. 实现接口BeanDefinitionRegistryPostProcessor9. 实现接口BeanFacto…

P19 C++ 构造函数的成员初始化列表

目录 前言 01 如果不用成员列表如何初始化变量 02 成员列表初始化 03 为什么要使用成员列表初始化呢&#xff1f; 04 案例代码 前言 本期我们聊聊构造函数初始化列表。 你应该经常使用成员初始化列表&#xff0c;如果你不喜欢这种代码风格&#xff0c;建议你还是慢慢习惯吧…

MFC mysql 往数据库中写路径时,斜杠消失

写入时发现数据库中路径为&#xff1a; E:wokspacePROJECTThirdTrailInspectioncode_cttrmeasureBSVbinimage_guidipzjt-20231113145420_下行mdx-1-5_li339.44_1.jpg 因为转义字符的存在&#xff0c; 解决办法&#xff1a; MFC的在CString转string之前&#xff0c;将\\替换掉…

立即修复计算机显示msvcp110.dll丢失问题!4个快速解决方法大揭秘

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“msvcp110.dll丢失”。这个错误通常会导致某些程序无法正常运行&#xff0c;给用户带来诸多不便。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何进行修复呢&#xff1f;本文将…

搭建一个可以发送邮箱验证码的接口,内含前端处理 接口返回、请求处理

环境搭建 在node安装好的情况下&#xff08;一般vue环境有的node也有 没有可以使用winr回车输入node -v 有版本号则已经安装好 找一个空文件夹作为此项目文件夹 点击上面的地址栏输入cmd回车 输入npm init -y 再输入npm install nodemailer安装发送邮件的插件 环境配置 使用v…

oracle基础系统学习文章目录

oracle基础系统学习——点击标题可跳转对应文章 01.CentOS7静默安装oracle11g02.Oracle的启动过程03.从简单的sql开始04.Oracle的体系架构05.Oracle数据库对象06.Oracle数据备份与恢复07.用户和权限管理08.Oracle的表09.Oracle表的分区10.Oracle的同义词与序列11.Oracle的视图1…

vue3中toRef创建一个ref对象

为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的 区别ref: 拷贝了一份新的数据值单独操作, 更新时相互不影响 应用: 当要将 某个prop 的 ref 传递给复合函数时&#xff0c;toRef 很有用 父组件代码: <template><…