《代码大全》第十五章读后感

news/2024/12/26 17:24:43/文章来源:https://www.cnblogs.com/guozichan/p/18633714

《代码大全(第 2 版)》第十五章主要聚焦于软件系统中的全局变量问题,以下是一篇可能的读后感:

一、对全局变量的新认识

在阅读第十五章之前,可能对全局变量的理解比较片面。这一章深入探讨了全局变量的优缺点,让我认识到全局变量并非一无是处,但也存在诸多潜在风险。

优点方面,在某些特定情况下,全局变量可以提供方便的信息共享方式,使得多个函数或模块能够快速访问共同的数据。例如在一些小型项目中,合理使用全局变量可以简化代码结构,减少参数传递的复杂性。

然而,其缺点更为明显。全局变量可能导致代码的可读性和可维护性降低。因为全局变量可以在任何地方被修改,很难确定数据的变化来源,这给调试和理解代码带来了很大的困难。

二、对软件设计的启示

  1. 谨慎使用全局变量
    在软件设计过程中,应尽量避免过度依赖全局变量。只有在确实必要且经过充分考虑的情况下才使用。比如,当多个不相关的模块都需要访问同一份配置信息时,可以考虑使用全局变量来存储配置数据,但同时要做好封装和保护措施。

  2. 强化封装和模块化设计
    为了减少全局变量带来的负面影响,应加强软件的封装性和模块化设计。通过将数据和操作封装在类或模块内部,限制数据的访问范围,提高代码的可维护性和可扩展性。这样可以避免全局变量的滥用,使代码更加清晰和易于管理。

  3. 考虑替代方案
    在很多情况下,可以使用其他设计模式或技术来替代全局变量。例如,可以使用参数传递、返回值或者依赖注入等方式来实现信息的传递和共享,而不是依赖全局变量。这样可以更好地控制数据的流动和变化,提高代码的可靠性。

三、对编程实践的指导

在实际编程中,要时刻警惕全局变量的使用。如果不得不使用全局变量,应该遵循一些最佳实践:

  1. 明确命名规范
    为全局变量取清晰、有意义的名称,以便在阅读代码时能够快速理解其用途。避免使用模糊或过于简短的名称,以免引起混淆。

  2. 提供文档说明
    对使用的全局变量进行详细的文档说明,包括其用途、初始值、可能的变化情况等。这样可以帮助其他开发人员更好地理解代码,减少错误的发生。

  3. 进行严格的访问控制
    通过使用访问修饰符(如 private、protected、public)等方式,限制对全局变量的访问范围。只在必要的地方提供读取和修改的接口,避免随意的访问和修改。

总之,《代码大全》第十五章让我对全局变量有了更深入的认识,在今后的软件设计和编程实践中,我将更加谨慎地使用全局变量,注重软件的封装性和模块化设计,以提高代码的质量和可维护性。

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

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

相关文章

【护网】IP WhitePass:IP过滤,白名单过滤,用于护网CDN、负载地址过滤等;

免责声明 由于传播、利用本公众号夜组安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号夜组安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!所有工具安全性自测!!!工具介绍 在护…

async/await 异步连接通讯设备

1. 在项目中遇到,获取上下两把扫码枪的结果,但是只有其中一把扫码枪能扫码,因为码可能在上面也可能在下面2. 起初我是用的同步的方法,先使用下面的扫码枪,再使用上面的扫码枪,扫码枪扫描超时为1秒,但是这样的缺点就是会浪费一把扫码枪扫描的时间3. 为了节约时间,将方法…

智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型

在现代数字世界中,图形用户界面(GUI)是人机交互的核心。然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-based GUI Agent。2023年12月,…

会话相关的常用查询

ORACLE常用的与会话相关的查询 目录ORACLE常用的与会话相关的查询查看当前锁的信息:查看当前正在执行的sqlORACLE的监听日志(listener.log)Listener log locationFor oracle 9i/10gFor oracle 11g/12c或者通过 lsnrctl status 也可以查看位置或者11g可以通过 adrci 命令List…

VMware——mac下设置虚拟机共享文件夹

前言 按着VMware软件给的提示,设置好共享文件夹之后,在linux目录下没有看到文件夹,就想到了可能是没挂载的原因。 内容 基本的操作直接参考官方的即可,这里不做描述,直接贴图了,官方给的教程缺少了比较关键的一步,不过可能认为这个是常识,就没有放在文档里吧。 基础步骤…

LVS(Linux Virtual Server)备忘录

(241226) 基础内容 LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构: 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器【多台LB IP】上执行,而client端认…

数字化工厂 制造业转型升级的必由之路 珠海先达

随着“工业4.0”理念的全球传播,制造业正经历着一场前所未有的变革。在这场变革中,数字化工厂作为通往智能制造的重要阶段,成为了众多企业竞相追逐的目标。数字化工厂不仅提升了生产效率,还优化了产品设计、生产流程和管理方式,为企业在激烈的市场竞争中赢得了先机。 一、…

适合小团队协作的开源在线项目管理系统推荐【任务管理与进度追踪】

对于小团队而言,高效协作是项目顺利推进的关键所在,而一款契合的开源在线项目管理系统,无疑能在任务管理与进度追踪方面发挥巨大作用,助力团队成员有条不紊地开展工作,提升整体效率。当下市场上有诸多此类优秀的开源工具可供选择,本文就将为小团队推荐几款,帮助大家找到…

Centos7创建LVM磁盘管理

Centos7创建LVM磁盘管理 2019-06-02阅读 3840 环境介绍 在centos7下需要挂载两个新的磁盘。为了方便后续的扩容方便,决定将这其设置为LVM管理的方式。 查看一下当前有哪些新增的数据盘,如下: [root@runsdata-test-0004 ~]# df -h Filesystem Size Used Avail Use% Mou…

iostat命令详解

iostat命令详解 简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 iostat可以提供更丰富的IO性能状态数据,i…

学习笔记(四十九):Text常用场景

1、设置文本断行及折行Text(this.content).fontSize(14).textAlign(TextAlign.End).textOverflow({ overflow: TextOverflow.Ellipsis }).wordBreak(WordBreak.BREAK_WORD).maxLines(this.contentMaxLine) 作者:听着music睡出处:http://www.cnblogs.com/xqxacm/Android交流群…

VS2022 + OpenSSL 3.0实现DES、AES、RSA加密

​ 一、DES加密 #include <openssl/des.h> #include <cstdio> #include <iostream> #include <cstdlib> #include <iomanip> #define MAX_LINE 1024 #pragma warning(disable : 4996)using namespace std;signed main() {const_DES_cblock key …