您的位置:首页 > 编程语言

如何锻炼写代码能力

2013-09-13 16:41 225 查看
最近一直在看侯捷的《STL源码剖析》,看到第二张的空间配置器的时候,对于次级空间配置器中的obj这个结构体以及对它的运用不是很清楚,然后自己就写了一个简化的obj以及测试代码。

在写这些代码之前,我抄写了alloc.h中的大部分代码和vector.h中的部分代码,实现了一个简化了的vector。在这过程中,我感觉自己几乎理解了大部分源码。

可是接下来,在写一个简化了的obj以及测试代码的过程中,我发现自己忽然变的不自信了,发现只靠自己写代码和抄代码完全两回事。自己写的代码,写完后,10分钟过后,再回头看看,感觉真的很凌乱,没有结构,虽然编译运行都ok。

后来我google了一下“如何锻炼写代码能力”,看到了一位前辈写的东西,让我很有感触:

学会用STL是件很爽的事情。但是须知有所得必有所失。如果过早地接触STL,会让你失去很多锻炼代码能力的机会。
不可否认,队里确实有一些人SCL用得很好。但是,我至今仍然没有见过一个SCL用得很好,同时有拥有很强的代码能力的人。同样是有所得必有所失,你平时习惯了去抄程序,必然少了很多自己构思程序的机会,从而影响代码能力的提高。

尤其是红色字体部分,让我很触动,因为我平时的确爱抄写sgi stl的程序。
那我如何来提高写代码的能力呢?

我目前能够想到的就是,看看自己能不能“默写”上来。

附:我写的那个很凌乱的obj及其应用

#include <iostream>

#include <cstddef>

using namespace std;





struct obj{

obj * free_list_link;

};



obj * link8;

void init()

{

char *a = (char *)malloc(8*8);

link8 = (obj *)a;



obj * current = link8;

obj * next = (obj *) ((char *)current + 8);

int nobj = 8;

for(int i=1; ;i++)

{

if(nobj == i)

{

current->free_list_link = 0;

break;

}

else

{

current->free_list_link = next ;

current = next ;

next = (obj *)((char *)next + 8);

}



}

}



obj * allocate( )

{

init();

obj * result = link8;

return result;

}



void main()

{

int * i = (int *)allocate();

int * start = i;

int * head = i;

int j;

for(j = 0;j < 8; j ++)

{

*i = j;

i ++;

}

for(j = 0;j <8; j ++)

{

cout<<*start<<endl;

start ++;

}



char * c = (char *)allocate();

c = "hello,world!";

cout<<c;



void *f=head;

free(f);

for(j = 0;j <100; j ++)

{

cout<<*head<<endl;

head ++;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐