博客列表

递归排序复杂性表示
发表于:2017-12-05 09:10:37 | 分类:算法导论
浏览( ) | 评论( )

在算法导论中介绍分治法解决排序时,作者引入了“归并”排序。归并排序顾名思义主要是采用“归并”的方法进行排序。归并非常简单就是将两个已经排好序的数组合并成为一个数组,并且该数组任然是有序的。 书中的归并排序采用递归的方法来实现,递归是编程中非常重要的一个概念,函数通过调用其自身对问题的“分治”解决。问题的“分治”总得有重点,负责就会出现死循环,直到系统的资源消耗殆尽。 在书中介绍的概念非常清楚,就是将一个数组采用

算法效率增长数量级表示
发表于:2017-12-01 09:46:33 | 分类:算法导论
浏览( ) | 评论( )

在算法导论的第二章开篇作者介绍插入算法,介绍插入算法的目的是为了引入算法的概念以及算法性能评估的方法。一个算法是否可以作为方法在工程中引用主要的可以从两方面作出评估,一是现有的硬件资源是否可以满足该算法运行的需要,二该算法运行的时间是否满足用户的需求。 其实这实在不难理解,若一个算法需要很多的内存资源,那么普通的MCU当然没法使用。另外假如一个算法需要运行很长时间才能达到正确结果,那么也没有任何意义。典型的就是德国在二战中使用的enigma加密机需要破译的问题。因为该加密机的密钥空间有几亿。如果按照顺序

关于文件的长度及份文件管理的意义
发表于:2017-09-11 11:32:36 | 分类:代码整洁之道
浏览( ) | 评论( )

对于一个文件的长度一般的编译器并没有作出详细的要求,如果项目比较简单可以在一个文件中全部实现,一般如果一个系统在1K之内应该可以不用分割文件,在一个文件里实现就可以了。但是很多项目应该远远超过这个代码量。应该单片机的容量现在已经非常大,超过64K已经非常普遍。所以必须划分文件,意义也非常明确。 第一提高浏览效率。 一个文件的代码量应该控制在多少行比较合适?有点资料介绍是200~300行。这当然是几年前的资料介绍。因为那时候的显示器比较小,一屏的显示代码大概40行左右。300行代码一般需要8屏可以显示完成

代码的格式
发表于:2017-08-24 15:16:59 | 分类:代码整洁之道
浏览( ) | 评论( )

计算机或者单片机是一个非常神奇的的东西,代码只要符合语法规则就可以了,C语言是以分号(";")来标志一条语句的的结束,所以代码书写有很大的随意性。但是千万不要认为程序员就可以这样做。代码的格式是代码的艺术性、观赏性的体现。 书中对代码格式重要性作出了明确的说明,主要是为了增加代码的可读性,可读性增强可以提高代码可维护性以及复用性,可维护性可以提高代码使用寿命,复用性可以提高代码使用率。所以非常重要。 作者对每个源文件的行数进行说明,参照一些经典资料作者认为每个文件合适的代码长度应该

关于不好的注释
发表于:2017-08-16 09:43:31 | 分类:代码整洁之道
浏览( ) | 评论( )

在该书中对于不恰当的注释作者也给出了建议。喃喃自语,大概作者认为是自由注释编写者自己能看懂的注释,在别人看来就是自言自语,不知所云!不如在一位同事编写代码中,就存在。其他人很看懂他的意图,但是他的代码却一直稳定运行。所以也没有办法说什么。多余的注释,程序本身很简单,编写注释时间比编写代码的时间还多。在上一段代码中也同样存在这样的问题。误导的注释。 这种注释其实没有更好,一般是作者改写代码后,忘记改写注释。这种更容易引起歧义。HandlePCData也不是处理PC的程序,因为接口可以适用任何情况。循环注释,

必须写的注释
发表于:2017-08-14 13:48:49 | 分类:代码整洁之道
浏览( ) | 评论( )

在该书中介绍了几项必须写的注释:法律信息,关于代码的版权、适用范围可以表述清楚。提供信息的注释,这是由于翻译的问题,指的是代码的功能,比如某个函数的作用,或者返回值的意义。对意图的解释,某个处理方法的论述,比如设计一个排序函数,最低限度必须对入口参数进行说明。阐述: 阐述的例子非常多,比如对参数的说明: 对参数的索引进行了说明。基本已经对每隔参数注释非常清楚,在程序编写阶段良好的设计是质量的保障。5 ToDo注释,这种注释在VC++编程中系统生成代码中比较常见。是用户可以在此添加自己设计的代吗

注释不是必须的
发表于:2017-08-07 16:37:09 | 分类:代码整洁之道
浏览( ) | 评论( )

每当单位有同事离职移交项目代码时,老板都会要求代码中必须有注释,而且要求必须达到代码的30%。有些同事只好乱贴一些注释。反正注释是否正确没办法马上验证。有时候我们普遍认可的真理在某些环境中并不是整理。有人认为注释不是必须的。工作了几年以后,我真的认为是这样。 前提是程序必须拥有良好的框架和风格。 比如一个冒泡排序代码:void bubbleSort( int sort[], unsigned char len ){ char i,j; int temp; len -= 2; for( i =len; i

关于注释
发表于:2017-08-04 09:47:43 | 分类:代码整洁之道
浏览( ) | 评论( )

我的老板要求程序中必须有注释,而且越多越好。我的一位朋友非常反对,其实好的代码需要的注释并不多。我很喜欢下面这句话。 与我的朋友简直是不谋而合。我们来看看一段不好的代码。其注释是多么丰富。 以上代码运行是没有问题,但是问题就是注释太多。 U8 temp;//temp1[4]; U16 temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8; 变量名设计的非常失败,tempX到底是什么,不清楚! 最令我惊奇的是一个判断竟然写正确了。 看来下了一番功夫。但

关于函数的名称
发表于:2017-08-02 14:36:03 | 分类:代码整洁之道
浏览( ) | 评论( )

与变量名一样,函数名称设计也非常重要。如果名称设计的好,对于程序排错、代码的复用非常重要。尽量做到见名知义,省却了很多编写注释的时间,我个人很反对程序中有太多的注释。但是由于中国人的母语问题,有时候也确实麻烦。 以下是我多年前代码,现在看来问题还是有的。以上代码按照中国习惯,编写还算可以。 因为在单位做同类工作,所以对他的代码习惯还是比较了解。可以猜一下。 meaurePT( ); 是PT100的测量程序,measure 在英语中本身就是测量的意思,但是我认为应该可以写为temptureScan( )

抽象层级
发表于:2017-07-27 13:46:39 | 分类:代码整洁之道
浏览( ) | 评论( )

抽象层级的概念广泛用于程序设计,因为单片机的内存在过去非常小,首要的任务是在有限的硬件资源情况下完成功能。所以不太注意程序设计层次。因为如果关注设计层次就会有相应的冗余代码。甚至会有利用率非常低的函数。 但是随着单片机资源的增多,资源已经不是大问题。当程序规模扩大时,不由得人们开始考虑程序的可维护性,已经程序设计的主脉络。而且注重程序的抽象层级可以提高代码的复用率,使得我们的积累的代码可以成为资本再次使用。 一个程序员从业的时间越长,经过验证的可靠的代码就越多。当然他工作效率就越高。抽象层级的概念在上位