一个模块的功能为何要单一,为何代码不要太长
来源:互联网 发布:刺猬缩水软件下载 编辑:程序博客网 时间:2024/05/01 17:22
最近帮同事调试一个程序模块时,一个函数中400行代码,当时调试了下,错误很难精确定位,我当时第一个想法就是代码太长,一个函数多个功能,通常很难定位异常出在哪里,但是我要我回答,我当时还很难举个列子说服他,但是我现在想到了一个足以说明问题的例子:
void Func()
{
......
.....
view *a=new view;
view *b = new view;
// 100行代码
.....
.....
ListView c;
.....
.....
// 100行代码
c.addItem(a); //把指针数组赋值而已
c.addItem(b);
.....
.....
// 100行代码
// delete a;
// delete b;
....
....
// 100行代码
tansview(c); ------------------------------------------此时在这里报错,而不一定会在 c.addItem(a);c.addItem(b);报错。
如果模块化
出现的情况时这样:
func1(c)
{
view *a=new view;
view *b = new view;
c.addItem(a); //把指针数组赋值而已
c.addItem(b);
}
func2(a, b)
{
delete a;
delete b;
}
func3(c)
{
tansview(c);
}
调用时候
func1(c)
func2(a,b)
func3(c)
如果这时候问题出在func3(c) 此时很快你可以把问题从func3(c)追溯到func2(a,b)如果没发现问题再追溯到func1(c)
- 一个模块的功能为何要单一,为何代码不要太长
- 为何不要构造一个临时的shared_ptr作为函数参数
- 为何糟糕的代码随处可见?
- 为何
- 为何?
- maven 为何要模块划分-聚合/继承
- maven 为何要模块划分-聚合/继承
- 代码输出的结果为何是这样?
- 测试的一个内存流.为何停住?
- HDU ACM 11 2034 人见人恨的A-B(此题题目有问题,不要纠结代码为何可以AC)
- 为何需要代码审查
- 为何为何为何为何为
- 为何我的RichTextBox没有Ctrl+C等功能呢
- 为何现在的大学生要如此急功近利?
- 新装修的居室为何要做开荒?
- 为何要别人懂你的沉默?
- 总算知道java的列表为何要设一个专用的枚举类型Iterator了
- 为何HTML5是Android开发的一个很好的选择
- 145条民间偏方收藏
- 什么是smarty?
- winform拖拽实现获得文件路径
- Amazon EC2
- HTTP请求:get与psot的区别
- 一个模块的功能为何要单一,为何代码不要太长
- 函数指针和函数数组
- firefox与IE对javascript和CSS的区别
- 对IP及IP段进行访问限制
- 一个菜鸟对自己未来的规划
- IE6 AND IE7共同可以使用下載方式
- Oracle ERP整合之道
- WinCE eXDI硬件方针调试介绍
- GridView中CheckBox用法总结