首页 / 知识
关于c ++:改进代码的准则
2023-04-15 05:27:00

Guidelines to improve your code
您遵循什么准则来提高代码的总体质量?许多人都有关于如何编写C ++代码的规则,这些规则(据说)会使出错更加困难。我见过人们坚持认为,每个 我对其他人遵循的准则以及背后的原因感兴趣。我对您认为是垃圾但普遍使用的准则也很感兴趣。有人可以建议一些吗? 为了使事情顺利进行,我将首先介绍一些:
但是,如果使用括号,它将按预期工作。
现在交给您。 我个人的一些最爱: 努力编写const正确的代码。您将邀请编译器帮助您清除容易修复但有时很痛苦的错误。您的代码还将讲述您编写代码时的想法-一旦您离开,对于新手或维护者来说都是有价值的。
退出内存管理业务。学习使用智能指针: 您可能会使用标准模板库。阅读Josuttis书。不要仅仅在关于容器的前几章之后停下来,以为您知道STL。深入研究好东西:算法和函数对象。 就这些。
打开您可以在编译器中看到的所有警告(gcc:
其中一个答案中提到的Google风格指南非常扎实。其中有一些毫无意义的东西,但它总有好有坏。 Sutter和Alexandrescu在这方面写了一本不错的书,叫做C ++编码标准。 这里有一些来自lil'ole me的一般提示: 您的缩进和包围样式都是错误的。其他人也一样。因此,请遵循该项目的标准。吞下自豪感并设置您的编辑器,以使所有内容与其余代码库尽可能保持一致。不得不阅读不一致缩进的代码真的很烦人。就是说,括号和缩进与"改进代码"没有任何关系。这更多地是关于提高与他人合作的能力。 好的评论。这是非常主观的,但是总的来说,写注释说明代码为什么会按其方式工作总是好事,而不是解释其工作方式。当然,对于复杂的代码,对可能不熟悉算法或代码的程序员也有一个很好的想法也很有益。非常欢迎链接到所用算法的描述。 以尽可能简单的方式表达逻辑。具有讽刺意味的是,诸如"在比较左侧放置常量"之类的建议在这里出错了。它们非常受欢迎,但是对于讲英语的人,他们经常破坏程序对那些阅读者的逻辑流程。如果您不信任自己(或您的编译器)正确编写相等比较,那么请务必使用此类技巧。但是,这样做时您会牺牲清晰度。诸如此类的事情也属于这一类:"我的逻辑是否具有3个缩进级别?会更简单吗?"并将类似的代码滚动到函数中。甚至拆分功能。编写优雅地表达底层逻辑的代码需要经验,但值得一试。 那些很一般。对于特定的提示,我无法比Sutter和Alexandrescu做得更好。 在if语句中,将常量放在左侧,即
不
因为如果您错过键入" =",那么它将成为赋值。在最高版本中,编译器说这是不可能的,在后者中它会运行并且if始终为true。 每当它们不在同一行时,我都会用大括号表示。
打开和关闭大括号总是有自己的特点。但这当然是个人习惯。 仅在仅需要解释代码的功能时才发表评论,而在阅读代码的过程中并不能告诉您相同的内容。 不要注释掉不再使用的代码。如果要恢复旧代码,请使用源代码控制系统。注释掉代码只会使事情看起来混乱,并使实际上很重要的注释逐渐淡入注释代码的背景。 Google内部还使用了不错的C ++样式指南,其中包括此处提到的大多数规则。 开始写很多评论-但要以此为契机重构代码,以使其易于说明。 即:
应该更像
同样,您可能会在这里找到一些有用的建议:如何使错误的代码看起来不正确?您使用什么模式来避免语义错误?
六个月后再看 如果可以,请使用前增量而不是后增量。 我在C ++项目上使用PC-Lint,尤其喜欢它引用现有出版物的方式,例如MISRA准则或Scott Meyers的"有效C ++"和"更有效的C ++"。即使您打算为静态分析工具检查的每个规则编写非常详细的说明,也要指出用户信任的已建立出版物是一个好主意。 这是我由C ++专家提供的最重要的建议,它在一些关键情况下帮助我在代码中查找错误:
使用这两个规则,编译器将免费告诉您代码中逻辑存在缺陷的地方! 另外,对于某些好的技巧,您可以关注Google的博客"马桶上的测试"。 确保您正确缩进 智能指针具有一种非常清晰地指示所有权的好方法。如果您是类或函数:
我发现auto_ptr的情况特别强烈:在设计中,如果看到auto_ptr,我立即知道该对象将从系统的一部分"漫游"到另一部分。 至少这是我在宠物项目中使用的逻辑。我不确定该主题可以有多少种变化,但是直到现在,这个规则集对我还是很有帮助。 嗯-我可能应该更具体一些。 我并不是在为自己寻找建议-我正在编写一个静态代码分析工具(当前的商业产品还不足以满足我的需求),我正在寻找插件的想法以突出可能的方法代码中的错误。 一些人提到了const正确性和使用智能指针之类的东西-我可以检查这种想法。检查缩进和注释有点困难(无论从编程角度来看)。 |
最新内容
相关内容
linux克隆代码命令?
linux克隆代码命令?,系统,代码,文件,命令,目录,源文件,文件夹,路径,目标,表示,Linux文件拷贝命令?linux系统使用cp命令即可将一个文件夹里面的linux命令行调试代码?
linux命令行调试代码?,环境,代码,信息,平台,程序,编辑,版本,步骤,体系结构,处理器,linux怎么调试pythonLinux中如何安装Python?安装pycharmPych写5条linux命令语句?
写5条linux命令语句?,工作,地址,系统,信息,目录,命令,管理,标准,功能,文件,linux常用的命令有哪些1、linux系统常用操作命令如下:ls:全拼list,功linux编译源代码命令?
linux编译源代码命令?,工具,代码,百度,最新,环境,项目,系统,电脑,密码,内核,linux怎样编译git源码包1、linux的源码是在/usr/src这个目录下,此linux命令提交代码?
linux命令提交代码?,工作,系统,地址,代码,命令,数据,信息,目录,标准,发行,求助:LINUX常用SHELL命令你可以通过打开Linux的terminal(终端)来执行Slinux命令语句规律?
linux命令语句规律?,系统,管理,基础,网络,信息,命令,服务,简介,工具,标准,linux必学的命令是什么?1、Linux常用的命令可以分为以下几类:安装和linux代码同步命令?
linux代码同步命令?,时间,服务,系统,地址,代码,网络,通信,图片,风险,管理,linux系统时钟同步命令1、因此使用ntpdate同步可能会引发风险,因此该linux命令错误代码?
linux命令错误代码?,系统,密码,电脑,网络,手机,网址,软件,代码,设备,老板,Linux管理常见错误1、检查权限:使用文件浏览器和终端,检查文件的访问linux同步代码命令?
linux同步代码命令?,时间,系统,通信,网络,标准,图片,服务,代码,线程,单位,Linux下线程同步的几种方法1、线程同步的方式包括:互斥锁、读写锁、linux拉取代码命令?
linux拉取代码命令?,代码,工作,地址,命令,数据,系统,单位,生产,软件,目录,linux下wsdl2java获取源码命令首先,连接相应linux主机,进入到linux命linux代码对齐命令?
linux代码对齐命令?,系统,地址,标准,信息,对比,名称,代码,命令,文件,工作,linux命令大全之diff命令详解diff[参数][文件1或目录1][文件2或目录linux命令运行代码?
linux命令运行代码?,代码,单位,系统,环境,连续,保险,工具,命令,文件,音乐,Linux中,运行一个C语言程序如何运行1、编译。由.c文件生成.o文件,写