VS、MVC框架的一点体会

来源:互联网 发布:网络商标是什么意思 编辑:程序博客网 时间:2024/05/27 03:25

将最近写代码的一些体会总结如下,希望下次可以不犯相同的错误,节省时间
1、现象:工程中有一对函数,但是没有调用,诡异的是程序走到这会崩溃,提示空指针
解决:分析call stack,发现实际是想调该函数上面的一个函数,之所以空指针,是因为内存里为随机数,所以原因是编译不对了,此时将所有代码rebuild,就可以了(试过只将问题代码所在工程rebuild,不见效果)
2、现象:使用MVC框架,在没有注意的情况下,create model,然后同时set 进多个view(多个view(如view A、B、C)共用一个model,也就是对于这几个view,model中存储的数据是完全一样的),我写了一个set函数,每次调用该函数之后,新值都会覆盖前面的值,可悲的情况出现了,想将View A的Actor Set进model,没注意代码走了3次,结果model里存的是view C的actor,因为功能需要,View B、C都是隐藏的,此时我取出actor,并对其进行一些操作,结果,View A的actor没有任何改变。
总结:这是个很隐蔽的问题,但是也是不好的编程习惯所导致,以后注意如果只有目标view 需要此model,那么就不要把此model set进其他的VIew中,另外公用Model中的Set 函数要格外注意,比如当前存储的是View C的数据,在View A 中调取,会有很多奇怪的错误。
3、现象:使用MVC框架,编写oplayer,代码写的太死,限定了render的种类,此时,其他类型的render是不能用此OPLAYER,结果又重写了一个几乎一样的oplayer,使代码整体很不规范
总结:编程过程中,尽量注意代码的通用性,养成好的编程习惯
4、现象:有在.h文件中包含其他.h的习惯,所以只要用到的类,几乎都在.h中包含了,悲剧出现了,代码报错“重定义”
解决:如果在.h中只使用某一类的声明,而不用类里的函数,此时在,h中包含目标.h是没有必要的,可以在.h中用class XX声明(如下),在.cpp中再包含该.h文件就可以

  class vtkExtractVOI;

这样做的好处,1、避免重定义问题的出现。
2、 如果修改某一类,重编译的只是.h文件中包含此.h文件的文件,所以包含的.h文件少了,可以减少编译时间

原创粉丝点击