摘要:平时写程序的时候经常会碰见明知道自己不该这么写,却又无法明确自己不足在哪里的地方。经过阅读重构,我发现了我平时编程中存在的各种具体而又细微的问题。由于个人写的程序大部分都是面向过程的,所以很多地方可能会有局限性。以我写的编译器代码为例,我来简要说下存在的问题。1.循环的最后一次需要特殊处理的案例:for (i=0;i40){ Dosomthingwith(A);}Else{ if (A>20) { Dosomethingwith(A); } Else { Dosomethingwith(A); }}所以重构为If (A>40) goto DosomethingwithA_WhenA
阅读全文
摘要:STACK和HEAP在英语中的意思大致都是堆,但翻译过来后加以区分为堆和栈。首先在最初的数据结构课中我们就已经了解了栈和队列这两种较为简单的数据结构。STACK即FILO表,先进后出。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。然后在编译的学习里我们了解了调用栈,在这里我来简要对调用栈和系统栈区做一个区分,实现了子程序的调用,即把局部变量存在该层调用栈区,全局变量放在。以类C
阅读全文
摘要:0. 问题描述见老师博客1.架构简介经过软件工程的课程,我将学到的很多知识应用到了这次作业中首先,我从架构上来讲解下我的这次作业。由于各个语言优势不相同,例如在C++课上我们讲到了C++的尴尬地位(但其实是一个折衷)。所以在这次作业中我也用到了类似思想,例如对于需要效率并不高的UI我采用了Python的PYQT界面的自动生成与方便的类型封装快速帮我解决了程序编写问题。但是对于效率依赖较高的的算法部分,我认为使用C会更快速解决问题,算法实现效率更好。所以我采用的是界面由python编写,然后使用gcc编译出的DLL文件进行调用。以此发挥各个语言的优势。而在软件工程中我认为更为重要的一点就是封装,
阅读全文