开拓者期货期权程序化系统交易论坛

标题: 谈谈程序调试方面的经验 [打印本页]

作者: 孤舟骑浪    时间: 2007-12-6 16:07:55     标题: 谈谈程序调试方面的经验

我的程序已经编好了,程序代码比较长,有一百多行,用了大量的条件分枝,到最后,进行编译的时候,总是提示大括号在未行不符,随意添加几个大括号后,可以通过编译了.在图表中调用,发现其表现并非我的原思路,我知道肯定是某个条件语句在作怪,或者有的大括号是放错了地方,但查找起来比较困难,用什么好的方法可以一点一点的排查呢?
我打算是由内向外排查,把括号内的代码去除,保留条件和大括号,再将剩下的框架打印出来,用笔由外向内标出大括号,比如最外层的两个大括号撇一画,再向内一层的两个大括号撇两画,依次类推.
不知大家有什么好的方法,给介绍一点儿,互相学习啊
作者: 东方    时间: 2007-12-6 16:40:33

我出现过类似情况,是用/*  */屏蔽某块内容,屏蔽间隔点要选择好,很快就可以找到对应的块,在类推下去。
作者: hnhyjxwy    时间: 2007-12-7 16:54:28

分支多的话可以在大括号后用//1、2、3……等数字配套区分,这样一般不会错。
作者: 孤舟骑浪    时间: 2007-12-7 17:29:39     标题: “步步销融法”推广

从实践中总结出来的方法,无偿与大家分享。
总方针是:未走先立神,下笔渐销融。在未动手之前,必先认清要实现什么样的功能和可能达到的效果,然后下上步工作才有意义。
即从全局到局部,把全局逻辑性的控制语句(条件、循环句)先构建起来,要写出层次感(缩进用tab键);接着在控制语句里用汉字填入该处要实现的局部功能(就叫功能块吧);原后再把各功能块再分离出属于该块起到全局性控制的语句,之后依法填入该处要实现的功能块;再把各小功能块再分离出属于该块起到全局性控制的语句,之后依法填入该处要实现的功能块;再把各小功能块再分离出属于该块起到全局性控制的语句,之后依法填入该处要实现的功能块;依法进行,直到不可再分解为止,再用相应的代码实现不能再分解的功能块,整个系统就这样设计完成了,可谓一气呵成啊(当然中间的分解可以多日进行,注意在有汉字的地方加//)!
校验通不过的原因一般只是最小功能块出现了问题,根据原因提示可以很快找到并修改。
作者: 孤舟骑浪    时间: 2007-12-7 18:58:36     标题: 再补充

对于新手来说,其实每一个步骤都是先在纸上写好了,润色好了,才抄上编辑器的,因为编辑器屏幕实在是太小了,同时面对电脑久了很容易使人发晕。
作者: jxll    时间: 2007-12-10 11:29:19     标题: 回复 #6 clmtw 的帖子

说的很有道理
作者: 孤舟骑浪    时间: 2007-12-10 20:27:05

大括号不匹配是很容易出现的,除非你能一次性搞得定和你的程序很简单,当你多次在程序中改来改去时,很容易迷失自我,最后只好重头做起。不过,那已经成了过去,我终于熬过来了。
作者: jvya    时间: 2007-12-11 09:03:17

原帖由 clmtw 于 2007-12-9 23:36 发表
如果严格按照缩排格式的话,大括号不匹配的情况不太会出现啊


是啊。
我一开始也总是配不上括号。
后来就用这招。非常好用。
使用条件选择时,先输入
if()      //先不急着写内容。回车
{}       //{}会自动配好行缩。先不急着写内容。再回车,格式很清楚。

   if()
   {

   }

把这种条件框架先弄好,再输内容。就不会配不上号了。
复杂的分支,提前组织好先后的顺序,
先整体后细节。就象画素描那样。

[ 本帖最后由 jvya 于 2007-12-11 09:15 编辑 ]
作者: jvya    时间: 2007-12-11 09:18:33

我现在不明白的是

为什么有时,要重起软件之后,画线才能出来。否则什么都不显示。
作者: tradeblazer    时间: 2007-12-11 09:22:50

看看交易指令设置里面,是否关闭了讯号的显示。
在编译出错之后,会自动关闭已经在图表中的该交易指令的显示。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2