程序员代码量过20万行,是一种什么体验?
如果是一个独立项目超过20w还是一个人维护,真的很难,可以说反反复复重构,拆模块,提取公共库,做分层处理,而且还会引入工具对代码使用lint工具。代码量过五万的时候,开始注重命名规范,文档,注释,初步划分模块,debug工具和命令熟练,但有时候使用还要去搜一下使用方法,日志写是写,还是有点随意。
代码达到十万行的时候,模块划分完整,开始做系统分层,也引入代码扫描工具,同时debug水平炉火纯青,也学会了崩溃时生成core文件,方便分析,日志已经非常标准而且完备。同时,开始做code review。各种接口说明文档也都有了。而且开始了解操作系统和虚拟机,以及编程语言和各种库的底层细节。已经是某方面的资深人士。
等到二十万行的时候,代码规范,日志规范,架构设计,性能指标,硬件需求,异常处理,数据说明,接口说明,数据流图,配置表,数据字典,历史异常总结,这些都有文档了。同时涉及到网络,文件,操作系统系统,脚本,语言也做了深入了解。到了这个阶段,维护代码,做个小修改都胆战心惊。已经算得上专家了。
作为一个从业多年,编写的有效代码远超20万行的老码农,来聊聊个人的切身体验,希望能对你有所帮助。
当你开始写第一个程序的时候,目的往往只有一个,如果将能够快速的掌握这门语言,如何能将那些练习题用程序实现,如果以每道题几十行代码计,下来也写了成千上万行代码吧。
后来会接触一些开发框架,开始学习并使用这些框架,然后用它们来解决一些实际的问题,在此过程中,代码量会快速的膨胀,然后慢慢的理解了这些框架的设计思路,也发现了它们的一些缺陷与不足。于是你会根据需要解决的问题转向一些别的框架,甚至是别的编程语言。有时候为了设计一个良好的系统,你可能会使用到几种不同的编程语言;有时候因为现有框架无法解决问题,你会求助于开源社区;有时候开源社区可能也没有你需要的东西,于是你开始自行设计;或许有一天,你自己设计了一个优秀库,然后将它放到开源社区,你开始成了新手膜拜的大神,而当初你自己也曾膜拜那些提供开源项目的人!
实际上随着代码量的增长,每个人的倾向也各不相同。比如有的人会向深度发展,开始研究更高效的算法;而有些人会向高度发展,设计更灵活多变的框架;也有人会向广度发展,融合多种语言,充分利用它们的优缺点以解决实际问题……
就我个人来说,曾经在某一个阶段,也可能就是20万行代码这个阶段吧,会经常沉迷于开源社区,学习那些优秀的开源项目,后来开始自己设计一些应用框架,再后来,希望有一天自己开发的一些项目也能为开源社区做一点点贡献(不过因为需要养家糊口,一些代码会涉及到商业问题,所以无法分享,想想甚至遗憾)。
最后需要说明一下,代码量和有效代码量是有着很大区别的,如果Ctrl+C,Ctrl+V,那么有些人甚至一天就可以写出上万行代码,而这些靠复制、粘贴出来代码显然是没有含金量的,它们只是代码而不是有效代码。有效代码是经过你思考并自己编写的代码,即使是参考已有代码,也是经过一定的重构以高效的融合进自己的框架。
当然每个人的悟性、兴趣与从事的行业也各不相同,体验自然也会千差万别,不能一概而论。
看了评论,一堆不懂装懂的人在评论。[捂脸]。
顶你一下吧,代码量过20万,不管是一个项目的还是多个项目的,至少也写了或管理了这么多的代码量。
这个时候你会发现,规范化的管理是多么重要的一件事情。包括代码风格,接口啊,命名啊,还有开发环境,测试环境等。然后迫切需要一些工具人来完成一些自动化的工作,比如构建,单元测试,分发部署等。还有一些文档工具来完善各个文档。
另外你会发现良好的设计是多么的重要,这个时候排除bug之类的,不再是一开始就直接干程序了,而是一开始研究设计文档,从设计层面分析问题。
总之,程序员想要提升的话,会面临各种坎,需要学习很多东西。并不只在于代码。
上面说的才是冰山一角。
20万行并不算多,但也不算少。
我曾经有一年,自己写了一个工程8万行的C++,如果统计加上第三方的代码那能到30万行。中间有一段时间被设计错误搞的逻辑混乱,小规模重构过一次。算是我一次性独立完成的最大的项目了。说实话还是蛮有成就感的,但也就那样。
完全是自己写的,超过20万行的也有,是我自己写的游戏引擎,但那是常年累月不断更新维护迭代下来的。这种感觉就不只是成就感了,而是有一种情怀。哪怕别人的比自己的更强大,我依然要用我自己的。它更是一种依赖,因为常年累月的积累迭代,其中包含了各种基础库。自己的数学库,自己的模版库,自己的网络库,等等。写个啥项目,基础库都要用自己的,上手快啊!
不在多在于精