免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 15300 | 回复: 44
打印 上一主题 下一主题

[原创/讨论]程序设计经验总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-21 22:34 |只看该作者 |倒序浏览
程序设计经验总结
        在这个行业里做了快4年了,多少总结了一些东西,成功也许很难复制,但是失败却时常被人们重复,我不敢说我做的很好,但是我希望总结出以前失败的一些教训,时不时看看,提醒自己以后再也不要犯类似的错误.这篇文章会不定期的更新,可能就是简短的几句话,但是,也是我实践和思考的结果.

1)程序不会出错,出错的肯定是人;如果程序出错了,那也一定是人的错误.
我时常在编码调试的时候出现这样的一种心理:出现问题的时候总是认为不是自己的错误,而认为可能是系统的错误.其实,久经考验的系统出错的概率几乎很小,大多数的情况下出错的肯定是编写代码的人,所以你的程序出错了一定是自己的问题,有了这个观念会十分有助于早点发现并且改正BUG.

2)程序就是用规则处理数据,规则包括:算法,数据结构,系统API,协议,语言,设计模式等等.
这句话很浅白,我想很多人一看就能明白,其实学习编程的过程就是在学习怎么去用规则去处理数据,想想看一路过来学过的课程都是如此:算法数据结构教会我们在什么情况下应该选取怎样的方式去处理数据,操作系统教会我们系统如何处理数据,编译原理教会我们编译器如何处理数据,网络协议,语言,正则表达式等等的更不必说了.至今我已经很少去关注什么语言之争的无聊话题,因为我相信语言也是一种处理数据的工具,没有哪种工具是万能的,只有合适的场合采用合适的工具.同时,以后再学习一种新的"规则"时,也需要抓住这些重点:这个规则适用的场合,适用的数据,处理数据的方式.

3)Make it work, make it right, make it effective.
我已经忘记了在哪里看见的这句话(请知情者转达一声,谢谢.中文的意思也很浅白:先让它可以运行,然后让它可以正确的运行,最后再去提高效率.我想,这应该是编写大部分代码的顺序,这也是把一个问题从简单慢慢的一步一步进行到复杂的过程.在你的代码没有正确的运行起来之前,暂时别做优化(当然了很显然的优化是可以的),只有当程序正确的运行起来时,你通过测试或者工具发现了瓶颈所在再去考虑优化.

4)越早让你的程序投入调试越好.
一般而言,写好一段代码比调试一段代码的时间要少的多,而许多许多的问题也是在你写代码的时候所不能发现的.

论坛徽章:
0
2 [报告]
发表于 2007-11-21 22:35 |只看该作者
抛砖引玉,欢迎讨论/补充/分享.

论坛徽章:
0
3 [报告]
发表于 2007-11-21 22:43 |只看该作者
看上去有几处和《程序设计实践》很符合呀, 看来你是悟着道道了。
第一点说得有点偏激吧, 有时候并不是你自己程序错了, 只是你所认为理所当然的环境不是你想象的那种样子。

论坛徽章:
0
4 [报告]
发表于 2007-11-21 22:46 |只看该作者
第一条、第二条已经领悟到了
第三条可能和我的做法不太一样,我是先把设计中设计出来的东西的代码全都写出来,有的时候甚至写几千行,而这时有可能这些代码还编译不过去,把整个逻辑的代码都写完后,便开始处理编译错误,然后开始调试,当然,编译错误很快就处理完了,调试,则需要花N多时间,可能我这种做法不好,不过我觉得如果不把已经形成好的思路落实到代码上,我怕我会忘记如何去写,即使已经做好了流程图。

论坛徽章:
0
5 [报告]
发表于 2007-11-21 22:50 |只看该作者
原帖由 cugb_cat 于 2007-11-21 22:46 发表
第一条、第二条已经领悟到了
第三条可能和我的做法不太一样,我是先把设计中设计出来的东西的代码全都写出来,有的时候甚至写几千行,而这时有可能这些代码还编译不过去,把整个逻辑的代码都写完后,便开始处理 ...


还是写一点就开始调试好。
全写出来调试起来很难。
而且早点调试能使你的代码更有模块性, 你对整个程序的认识非常清晰。

论坛徽章:
0
6 [报告]
发表于 2007-11-21 22:55 |只看该作者
原帖由 chenzengjie 于 2007-11-21 22:50 发表


还是写一点就开始调试好。
全写出来调试起来很难。
而且早点调试能使你的代码更有模块性, 你对整个程序的认识非常清晰。

恩,感觉到了,现在写程序,有的时候觉得一段程序很乱,就会重写,有的时候修修补补的,都有点不成样子
呵呵,以后我得注意了。

论坛徽章:
0
7 [报告]
发表于 2007-11-21 22:58 |只看该作者
有意识的写出能重用的代码段,就会试着在整个程序没写出来就想着去测试它。
整个程序缺少模块性, 当然就不会在部分代码才写出来的时候想去调试它的, 你觉得它们是整体。

[ 本帖最后由 chenzengjie 于 2007-11-21 22:59 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-11-21 23:06 |只看该作者
原帖由 cugb_cat 于 2007-11-21 22:46 发表
第一条、第二条已经领悟到了
第三条可能和我的做法不太一样,我是先把设计中设计出来的东西的代码全都写出来,有的时候甚至写几千行,而这时有可能这些代码还编译不过去,把整个逻辑的代码都写完后,便开始处理 ...

原帖由 chenzengjie 于 2007-11-21 22:50 发表


还是写一点就开始调试好。
全写出来调试起来很难。
而且早点调试能使你的代码更有模块性, 你对整个程序的认识非常清晰。



俺现在就是写一个模块测试一个模块,不然出现问题的时候定位起来太麻烦了

论坛徽章:
0
9 [报告]
发表于 2007-11-21 23:09 |只看该作者
原帖由 converse 于 2007-11-21 23:06 发表





俺现在就是写一个模块测试一个模块,不然出现问题的时候定位起来太麻烦了

恩,记住了,不过习惯得慢慢改,呵呵。

论坛徽章:
0
10 [报告]
发表于 2007-11-21 23:11 |只看该作者
原帖由 cugb_cat 于 2007-11-21 22:46 发表
我是先把设计中设计出来的东西的代码全都写出来,有的时候甚至写几千行

你太强了,如果是我这个时候来调程序要砸桌子
我都是写一点调一点,这样思路清楚方便调试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP