建昌县城乡规划建设局网站36kr源码WordPress

张小明 2026/3/13 3:51:55
建昌县城乡规划建设局网站,36kr源码WordPress,网页打包成app免费,公司方案策划书为什么会有防御式编程呢#xff1f;其实防御式编程的概念来源于防御式驾驶思维#xff0c;因为你不知道也无法确定司机下一步要做什么#xff0c;那怎么样才能保证司机在做出危险动作的时候自己不会受到伤害呢#xff1f;这个时候就需要自己承担自我保护责任#xff0c;就…为什么会有防御式编程呢其实防御式编程的概念来源于防御式驾驶思维因为你不知道也无法确定司机下一步要做什么那怎么样才能保证司机在做出危险动作的时候自己不会受到伤害呢这个时候就需要自己承担自我保护责任就算是他人过错所以防御式编程的主要思想就是不能因外部的错误数据而破坏程序的正常运行。另外防御式编程其实也算一种软件开发的方法通过预判和处理潜在错误来防止程序崩溃或者产生不可预知的行为从而达到提高代码安全性和健壮性的目的。那到底都有哪些防御式编程的代码操作呢我们一起来看看吧1、函数入参验证在定义和编写函数时会经常接触到函数形参有时候函数形参或者形参之间会有值范围和一些特殊性存在有些实参值是不能作为形参输入的一旦输入错误数据那可能就会出现问题。比如自定义了一个有符号数的除法运算函数形参1为被除数dividend形参2为除数divisor形参3为商quotient输出结果。最简单的代码实现就是如下复制void divide(int dividend, int divisor, int *quotient){*quotient dividend / divisor;}那如何增加防御式代码呢大家都知道除数不能为0要对除数执行非零判断如下所示复制int divide(int dividend, int divisor, int *quotient){// 检查除数是否为0if (0 divisor){return -1; // 错误代码}*quotient dividend / divisor;return 0; // 成功}2、指针安全检查自定义函数时函数入参类型用指针类型是非常常见的操作但是相比其他基本数据类型而言指针又是最容易出问题的包括空指针和野指针在内往往都是导致程序崩溃的罪魁祸首。因此函数入参使用指针类型时一定要先进行指针的安全性检查。如下代码先检查指针变量dest和src是否为NULL空如果为NULL则直接返回不执行拷贝操作。复制void copy(char *dest, const char *src, size_t dest_size){// 检查指针是否为NULLif (NULL dest || NULL src){return;}// 确保目标缓冲区足够大size_t src_len strlen(src);if (src_len dest_size){src_len dest_size - 1;}// 安全拷贝strncpy(dest, src, src_len);dest[src_len] \0; // 确保字符串终止}3、边界检查有时候我们定义的函数的入参是有特殊的实际意义的比如阈值范围、数组长度和协议命令码等如果实际输入的数值不在合理范围内即超出了边界那就要执行异常返回处理。比如一个根据ADC数据计算电量的函数ADC的正常范围是100~2000那我们就可以按如下方式增加防御式编程以避免输出异常的电量数据复制#define ADC_VALUE_MIN (100)#define ADC_VALUE_MAX (2000)int cal_volatge(unsigned int adc_data){//判断ADC数据是否在合理范围内if((adc_data ADC_VALUE_MIN) || (adc_data ADC_VALUE_MAX)){return -1;}//计算电压return 0;}4、断言处理断言assertion是一种在程序中的一阶逻辑如一个结果为真或假的逻辑判断式目的是为了表示与验证软件开发者预期的结果。断言处理在STM32的固件库里其实是非常常见的会对一些入参进行检查当程序执行到断言的位置时对应的断言应该为真。若断言不为真时程序会中止执行并给出错误信息。C标准库里有一个assert.h头文件该头文件常用于防御式编程其中提供了一个assert宏它只带一个参数通过布尔表达式的方式描述一些非预期错误包括空指针、输入输出参数值不在合理范围及数组越界等。比如下面的代码通过断言判断指针是否为NULL复制void set_int_array_value(IntArray *arr, size_t index, int value){//使用断言检查内部不变式assert(arr ! NULL);// 运行时检查if (index arr-size){return;}arr-data[index] value;}以上通过几个实际的常用的代码demo介绍了防御式编程的基本内容其实防御式编程还涉及其他内容简单总结如下验证所有输入包括用户输入、文件内容和函数参数等检查返回值特别是内存分配、文件操作等可能失败的调用使用断言验证程序内部不变式初始化变量特别是指针和敏感数据边界检查数组访问、循环条件等资源管理确保分配的资源最终被释放原则就是谁申请谁释放错误处理提供有意义的错误信息并处理错误代码审查代码走查代码走读多人检查代码中的潜在问题静态分析使用工具检测潜在问题包括语法错误等。通过以上这些防御式编程的操作和实践将会显著提高代码的安全性和健壮性有望彻底告别软件死机问题。。---------------------作者dffzh链接https://bbs.21ic.com/forum.php?modviewthreadtid3458784来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

电脑编程网站wordpress 菜单 消失

微服务灰度发布实战:从理论到落地的完整解决方案 【免费下载链接】pig 项目地址: https://gitcode.com/gh_mirrors/pig/pig 在微服务架构日益普及的今天,如何安全、平滑地发布新版本功能成为每个技术团队必须面对的挑战。灰度发布作为降低发布风…

张小明 2026/3/5 3:16:35 网站建设

盘锦建设信息网站动易学校网站模板

文章深入解析了AI智能体工作流的核心原理与应用。详细介绍了智能体的三大组成(推理、工具、记忆),工作流的特征与模式(规划、工具使用、反思),以及在智能RAG、研究助手和编码等领域的实际应用。同时分析了智…

张小明 2026/3/5 3:16:36 网站建设

用动易建设网站做写字楼用哪个网站更好

动态弹窗实时数据展示:lay/layer组件的高效实现方案 【免费下载链接】layer 项目地址: https://gitcode.com/gh_mirrors/lay/layer 在现代Web应用中,动态弹窗的实时数据展示能力已经成为提升用户体验的关键要素。当我们面对需要频繁更新的监控数…

张小明 2026/3/6 22:02:53 网站建设

贵阳做网站开发的公司陕西省住建厅官网

人类历史有这么几个关于人的本质的认识,我摘录出来,方便大家去思考。1. 意识主义意识主义认为,人的本质在于他们的意识或思想。这种学说强调人的思维、感知和情感等心理方面的特点是人类的本质属性。例如,德国哲学家黑格尔认为&am…

张小明 2026/3/5 3:16:39 网站建设

如何上传网站源码增加网站外链

时间序列数据增强实战指南:五步提升预测模型性能 【免费下载链接】Time-Series-Library A Library for Advanced Deep Time Series Models. 项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library 还在为时间序列数据样本不足而苦恼吗&…

张小明 2026/3/5 3:16:40 网站建设

网站后台管理界面代码湖北三丰建设集团股份网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个适合Node.js新手的教学项目,演示nodemon的基本使用。要求:1) 最简单的Express服务器返回Hello World;2) 分步骤的README文件&#xff0c…

张小明 2026/3/12 20:45:07 网站建设