如何锻炼写代码能力

最近一直在看侯捷的《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 ++;

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值