读《代码整洁之道》有感4000字
代码是我们用来表达需求的语言,而对于我们而言,代码将会是我们之后无法避免而且需要学好的一项技能,而对于基本的编写代码的整洁将会是提高我们之后编写和阅读修改的效率的一个很好的方法,其实对于我这个接触代码不多的初学者而言,编写代码一开始会有着许许多多的不规范的地方,对于基本的格式、命名等等有一定的针对性的要求的话,对于之后的编写和基本的习惯的养成会有很大的帮助。
编写的不规范常常源于不耐烦,或者说将就,“算了吧,能跑就行!”有时候这样的念头往往是糟糕的代码的开始,laterequalnever,还是需要养成一个好的习惯。混乱往往会制造混乱,降低效率。而相反,整洁的代码往往会减少人们修改的时间,会提高效率。相对地,代码的编写的时候需要注意一些细节,整洁的代码力求集中,每个函数、每个类和每个模块都全神贯注于一件事,完全不受四周细节的干扰和污染。另外还会有许多具体的要求,那么接下来我们将分为一些小的部分具体讲解。
命名在代码编写过程中是无法避免的,函数、变量等等都需要命名,一个好的命名能够让我们清楚地明白一个对象的功能等等。对于命名而言,最重要的就是名副其实,也就是说,我们需要关注的问题不在于代码的简洁度,而是在于代码的模糊度,在于代码对应的功能是否准确。在实际的命名过程中,我们也需要注意一些问题,首先我们需要避免误导,对于一些十分相似或者具有专门用途的名称尽量不要使用。另外,对于一个类别的命名,需要做到有意义的区分,而不是一些意义含混的废话。简单来说,要区分名称,就要以读者能鉴别不同之处的方式来区分。除此之外,我们还需要注意命名应该使用可以读的出来、可以收索的名字,避免使用编码和产生思维映射以及一些双关语和太过于专业的词语。言到意到,意到言到,这才是最完美的状态。最后,我们在命名的时候需要添加有意义的语境和避免添加一些无用的语境,常常我们在命名的时候会一串词一起命名,这个时候往往会忽视语境,由于有些词连在一起我们很容易想起它的意义,但是单独拎出来的时候往往会造成阅读的困难,于是我们需要添加一些必要的语境。
函数在我们的代码编写中有着极其重要的作用,函数的规则是要短小,另外,每个函数都应该一目了然,只说一件事。而且,每个函数都依序把你带到下一个函数。这样的函数能够让你很快的了解其对应的功能,而且具有很强的关联性,能够使得我们了解接下来的步骤。用文中的话来说,就是函数应该做一件事,做好这件事,只做这一件事。对于具体的函数的编写,也需要有一定的规范,首先,使用描述性的名称,对于一类别的函数,命名方式要保持一致,使用一脉相承的短语、名词和动词。关于函数参数,最理想的状态是没有参数,其次是一个参数、两个参数,尽量不要使用三个及以上的参数,参数的命名同样需要做到名副其实。由于函数应该做一件事,要么做什么事,要么回答什么事,所以我们需要将指令和询问分隔开来,另一方面,我们需要使用异常替代返回错误码,这样错误处理代码就能从主路径代码中分离出来。还有很重要的一点,千万不要重复。
注释仿佛成为我们阅读代码的一样神器,但是依靠注释的我们从一开始就是错误的,真正好的代码是不需要注释的。当然,适当的注释在一些场合也是需要的。但是注释只是一个缓解的作用,无法美化糟糕的代码。好的注释包括法律信息版权、提供信息、意图的注释、警示等等,坏的注释往往会提供多余、误导的信息,或者信息过多,联系不紧密导致我们阅读的过程中花费过多的时间在注释上,而完全忽略了代码本身,还有就是我们经常做的一个行为,注释掉代码,我们往往为了图方便,常常会注释掉代码,但是其实有一些我们以及更新了一个版本,但是旧的代码依旧存留着,没有删除,这样反而照成了一定的阻碍。
代码格式很重要,需要我们严肃对待。主要分为两种,一是垂直格式、二是横向格式。关于垂直格式,我们主要需要关注的是区隔、距离和顺序,具体来讲,我们需要注意我们编写代码的顺序和每个区域的间隔和距离,这对于我而言还是比较使用的,由于VHDL是并行的语句,所以在编写的过程的顺序和距离对于我们阅读代码会具有很大的帮助,读后感www.simayi.net如果按照一定的流程顺序写下来,我们便能够按照流程了解各个部分的功能和实际的输入输出和具体的实际信号的连接。至于横向格式,我么需要注意水平对齐、缩进和空范围,这对于我们编写过程中每个层次会看的很清楚。另外,如果处于一个团队中,需要制定一个团队规则,这样大家编写的代码更加容易互相阅读和互通。
关于对象和数据结构,两者都有优缺点,根据我们具体的使用来变化。对象曝露行为,隐藏数据,便于添加新对象类型而无需修改既有行为,同时也难以在既有对象中添加新行为。数据结构曝露数据,没有明显的行为。便于向既有数据结构添加新行为,同时也难以向既有函数添加新数据结构。两者之间存在着反对称性,并没有优劣之分,只是根据使用场合灵活转变就可。
一个完整的程序考虑全部情况的话,往往需要考虑错误处理,错误处理是在程序的基础上的,但是不能够更改原来程序的逻辑。最好的情况是我们在具体的逻辑设计的过程中就将错误处理考虑在内,只需要我们去根据具体的错误的语境返回对应的异常值,这样我们就能够根据返回的异常值判断错误的情况。另外,我们需要使用不可控异常,并且不能返回返回码和返回、传播NULL值,这样会导致情况复杂化,反而添加了不必要的部分,增加了代码的阅读难度,降低了可读性。
我们常常需要使用第三方的程序或者和别人对接程序,这样的情况下边界就显得尤为重要。在接口提供者和使用者之间,存在与生