首页 > 其他分享 >《代码大全2》阅读笔记01

《代码大全2》阅读笔记01

时间:2023-04-28 19:22:32浏览次数:33  
标签:01 开发人员 代码 笔记 注释 阅读 全局变量 大全

在我的软件开发经历中,我曾经遇到过编写代码时犯的一些错误,而这些错误在《代码大全2》这本书中都有提到。

其中一个问题是过度地注释代码。我过去常常使用很多注释,认为它们可以帮助我自己和其他人更好地理解代码。

但是,在阅读这本书之后,我了解到这种做法可能会带来一些负面影响,并会让代码更难以阅读。

首先,注释有时候会过时,这意味着即使有注释,开发人员也可能难以理解代码的意图或修改过程。

而且,重复的注释会增加代码的复杂性,并在维护代码时造成不必要的负担。最重要的是,注释可能会误导读者,

让他们产生错误的理解或期待。为了解决这个问题,书中提供了一些解决方案。

首先是通过重构代码来提高代码的自我说明性,这样可以减少注释的需要。

其次是使用自然语言生成工具,如Doxygen和Javadoc等等,自动生成可读性强的注释和文档。

这些工具不仅可以减少手动编写注释的工作量,而且可以提供丰富的文档和关键词,帮助开发人员理解代码的意图和功能。

另一个问题是全局变量的滥用。在我的开发项目中,我曾经使用过很多全局变量,认为它们可以方便地共享数据。

然而,在阅读此书时,我发现全局变量的使用不仅会让代码更难读懂,还会增加代码的副作用并带来不必要的风险。

全局变量会对代码的可维护性和可读性造成负面影响。它们可能被意外地修改或用于不正确的操作,

并且全局变量很难被封装或设计成独立的组件。为了解决这个问题,书中提出了一些建议。

首先是尽可能避免全局变量的使用,并使用本地局部变量或者函数参数进行数据传递。

其次是封装全局变量的访问权限,并将它们作为对象或者组件的一部分来处理。

总的来说,阅读《代码大全2》让我意识到代码质量对软件开发的重要性,并帮助我培养了更好的编程习惯。

这本书提供了很多代码质量的最佳实践,并与那些犯过相同错误的软件开发人员分享他们的经验和教训。

 

标签:01,开发人员,代码,笔记,注释,阅读,全局变量,大全
From: https://www.cnblogs.com/sgle0722/p/17362981.html

相关文章

  • CSSE1001/CSSE7030 卡片游戏
    CSSE1001/CSSE7030Duedate:28thApril202316:00GMT+101IntroductionSlaytheSpireisarogue-likedeckbuildingcardgameinwhichaplayermustbuildadeckofcards,whichtheyuseduringencounterswithmonsters.DetailsoftheoriginalSlaytheSpire......
  • 读书笔记-《人件集》-3
    《人件集》是由TomDeMarco于1978年撰写的一部关于软件开发项目管理的著作。该书的主要观点是,成功的软件开发项目需要考虑到人因素,即处理好项目中的人员关系、个人动机以及人员互动等等。以下是该书的大纲概述:第一部分:绪论1.软件开发的难点2.软件开发管理3.人因素第二部分:管......
  • P4681 [THUSC2015]平方运算 题解
    题面链接简要题意给定一个序列,区间.map([](intx){x=x*x%p;});,区间求和。p给定,为小质数。\(N,M\le10^5\)。题解而把一个数看作一个点,向其平方取模连一条边,则最终必然构成一个基环森林,注意到\(P\)很小,每个数经过\(11\)次迭代之后就会进入环中。对于一个区间,如......
  • Fuzzing101-Exercise2 fuzz CVE-2009-3895和CVE-2012-2836
    autohr:cxingdate:2023年4月28日我们将对libexif0.6.14进行fuzz,目标是复现CVE-2009-3895和CVE-2012-2836两个漏洞。0x00准备工作我们先了解一下libexif这个库和两个CVE漏洞。关于libexif的信息如下:isalibrarywritteninpureportableC.readsandwritesEXI......
  • 校验日期格式2008-01-01
    校验日期格式2008-01-01functionIsValidDate(dateStr){vardatePat=/^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;varmatchArray=dateStr.match(datePat);if(matchArray==null){returnfalse;}year=matchArray[1];month=match......
  • Fuzzing101-Exercise1 fuzz xpdf CVE-2019-13288
    author:cxingdate:2023年4月28日0x00前期准备第一个exercise是复现xpdf的CVE-2019-13288,在正式进入fuzz之前我们需要了解xpdf和CVE-2019-13288。找到xpdf的官网,上面有一句简短的介绍。XpdfisafreePDFviewerandtoolkit,includingatextextractor,imagecon......
  • VS2010创建Webservice程序
    VisualStudio2010中已经找不到直接创建WebService的模板方式了,但下面的方法可心实现:  在VisualStudio2010的新建Web应用程序或者Web网站窗口中,如果你选择.NET4.0,会发现缺少了ASP.NETWebServices模板。你可能会怀疑VS2010是不是不支持ASP.NETWebServices......
  • 工具适配新系统平台笔记
    适配过程中需要安装的东西(包括但不限于):yuminstall-ygcc-c++yuminstall-yboost-develyuminstall-ylibaio-devel适配过程遇到的问题:默认snappy版本较新(使用了c++11的语法),gcc编译器无法编译(指定了-std=gnu++98)解决方法:将snappy1.1.7版本的devel和lib的rpm(老版本)......
  • [SDOI2016]征途
    又来水博客了[SDOI2016]征途推一下柿子就会发现,我们要求最小值的部分是将整个序列分为来m段,然后每段和的平方相加最小。\(f[i][j]=f[k][j-1]+(s[i]-s[k])^2\),然后用滚动数组优化一下。\(g[i]=f[k]+s[i]^2-2s[i]s[k]+s[k]^2\)\(f[k]+s[k]^2=g[i]-s[i]^2+2s[i]s[k]\)将决策看......
  • 01 Recap of CG Basic
    Real-timeHighqualityRendering1.GraphicsPipeline渲染管线2.OpenGL物体摆放视图变换画架画布生成片段片段着色3.GLSL(OpenGLShadingLanguage)4.DebuggingShaders5.RenderingEquation6.Calculus......