编码的依据是什么?很多人也许是不假思索就回答“需求!” 很多人也确实是这么做的,而其实有些人不是依据需求在编码,这是他们自己不这么认为而已。
从需求过度到代码,总觉得有点突然,是不是缺点什么呢?是的,中间应该有个设计的过程。不论是架构设计,详细设计,还是一个算法的设计,归根到底都是有设计的,只是并不是所有的设计都写着纸上,画成图而已。所以,编码的根据不是需求,是设计。
那依据需求而直接编码,会有什么样的后果呢? 直接表现是,代码充斥非常多的IF-ELSE, 代码异常的长,其实我们仔细分析需求,它其实就是由无数的IF-ELSE嵌套而成的。这样的代码看起来就是需求的"直译", 充斥着大量的重复的逻辑,因为它没有抽象(抽象是设计中得到的),并且一般不能很好的解决复杂的问题,或说如果“解决”的复杂问题,一般有数不尽的BUG, 如需要多线程协作的。这样的代码往往异常僵化,其表现是: 1. 发现BUG不好分析,必须一句一句的调试代码,因为整个代码就是铁板一块,毫无职责分配的思想在里面;2. 不敢轻易改动,往往牵一发而动全身,原因还是如前所述。
所以无论何时开始编码时,要先设计一下,就算你得到了足够详细的设计文档,这一步你也不能省略,因为再简单的Method写之前都要先想一下“怎么写最好?”;当然还有一种情况,问题比较复杂,开始不能都想透,而我们程序员最拿手的事情就是Coding, 这时候边Coding边想也无妨,就是通过编码去发现问题,整理思路,完成你的设计,这个过程中,要时刻理解自己的思路,不能迷失在森林中,最后还要按理顺的思路重新整理下代码。
我的实践是,系统的设计写成文档,该画的UML图一个都不能少;不是特别复杂的,我要把设计写在纸上,可能有UML图,也可能只是一些要注意的问题,并把需求用自己的语言逻辑写出来;再简单的,就在大脑里想一下即可。
----------------------------------------------------------------------
张瑜,Mybeautiful, zhangyu0182@sina.com.
分享到:
相关推荐
本文是关于信息论中哈夫曼编码的c语言和matlab实现,注意文档不能编辑,需逐行输入,不能复制。对于c实现注意需建立两个文件*.h和*.c文件。
合肥工业大学信息论与编码课程设计(含py...对一幅 BMP 格式的灰度图像先进行二元霍夫曼编码和游程编码,并根据霍夫曼编码结果将游程编码变换成二进制序列。(象素用霍夫曼编码,游程用等长码)。并设计相应的译码。
使用高德api可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息
行政区域编码包含:省、市、县、乡四级区域编码共计44371条记录。 行政区域编码包含:省、市、县、乡四级区域编码共计44371条记录。 行政区域编码包含:省、市、县、乡四级区域编码共计44371条记录。
Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。 以哈夫曼树─即最优二叉树,带权路径长度最小的二叉树,经常应用...
在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现几率的方法得到的,出现几率高的字母使用较短的编码,反之出现几率低的则使用较长...
根据香农编码,费诺编码和哈夫曼编码的最佳编码思想,运用C语言或Matlab语言任选2个给予分别实现,其中哈夫曼编码必选. 基本要求(15): 1.输入任意个数的信源符号 2.输入任意大小的概率分布(ΣPi=1) 3.哈夫曼编码给出...
3. 根据 Huffman 树为每个像素值赋予一个可变长度的二进制编码 4. 使用上一步得到的编码对原始图像进行编码 5. 对编码后的位串进行填充,确保长度是 8 的倍数 6. 将编码后的位串转换为字节序列写入压缩文件 解压原理...
建立一个文本文件,统计该文件中各字符频率,对各字符进行Huffman编码,将该文件翻译成Huffman编码文件,再将Huffman编码文件翻译成原文件。压缩文件即读文件,统计文件中的字符个数,对文件进行哈夫曼编码和译码,...
Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。 以哈夫曼树─即最优二叉树,带权路径长度最小的二叉树,经常应用...
霍夫曼编码依据字符出现的概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,其优越的性能被广泛使用在数字通信系统中。霍夫曼编码已经成为数据压缩的灵魂算法。本文介绍了无失真编码算法的构造,霍夫曼...
这个代码是用C/C++实现哈夫曼编码并将编码输出。 文本为操作者输入,,对各字符进行频率统计,然后进行哈夫曼编码,并将编码结果输出,同时可求得平均码长。
中国城市编码 sql mysql 数据库 ,中国所有的城市编码,三级城市编码,数据库脚本 ,中国城市编码 sql mysql 数据库 ,中国所有的城市编码,三级城市编码,数据库脚本 ,中国城市编码 sql mysql 数据库 ,中国所有的...
具体地,根据前一个码元的编码情况选择是用“10”还是“01”码:如果前一个码元是“1",则选择和这个“1”相同的编码值;如果前一个码元为“0",则编码以边界不出现跳变为准则。即,如果前一“0”编码为“00",则...
Varint编码为一种将64位二进制编码的无符号整型根据其大小用不同长度字节进行编码的编码方式。其编码特点为数字越小所占用的字节数越少。每个字节的低7位用来表示数字,最高位有特殊的含义:如果该位为 1,表示后续...
根据访问者IP 或者说在城市,并获取到城市编码
Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。 哈夫曼编码,主要目的是根据使用频率来...
批量指定文件的编码pageEncoding,免除逐个文件点右键、属性、改文本文件编码的繁琐,可灵活指定哪些目录下什么类型的文件用什么编码(一组设置里面可以有多个目录、文件类型),允许多组设置重叠覆盖,带来更多灵活...
用EXCEL VBA制作自动编码,可以根据预先定义字段和设置的自动字段的位数生产编码
这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩...