core币有没有杠杆 程序员代码量过20万行,是一种什么体验?
程序员代码量过20万行,是一种什么体验?
如果代码量过20万行,或者即便代码量不过20万行,只有10万行,或者十几万行,体验糟糕的可能性大一些,有如下几种。
再让我看旧代码,我XXX(目露凶光)
一个类7000 行,且注释少的可怜,偶尔有个注释,一看还没什么用。翻了5屏幕才翻到底。看多了,想吐。想改?您先看懂了再说?
更有甚者,一个方法翻了2屏幕才看完。哦,对了,23英寸显示器。
更有甚者,也见过一屏幕显示不下的sql!!!这简直是坑死人不偿命。
再看一下一屏幕显示不下的判断语句。
经历了这些,我想大多数人都若有所思?如果你不是这种想法,而是依然是摞代码,我想,你确实只是一个程序员,coder。
具体想什么呢?
**个想到的,就是开发规范
俗话说,无规矩不成方圆。你写的你的,我写我的,**20万行代码垃圾,没人愿意触碰。所以,此时的开发规范就显得尤为重要。约定大于配置、命名规范、接口规范、开发规范等等约束,能更好的协助开发者、维护者,更利于开发、易于维护。好的开发,应该是三分开发七分维护,而不是只闷头敲代码,不顾后果。
关于开发规范,要根据公司实际情况也业务场景来,不一个以哪个公司的为准。但是,可以多参考大公司的开发规范,如阿里的、网易的等等,吸收利于自己的,排除不合适的。适合自己的,才是**的。
然后,是设计模式,开发原则
可维护性太差了,我能有什么好的方法重构吗?或者说以后遇到此类情况,直接按照新的思路去处理。答案肯定是有的,也找出来了,就是设计模式。如工厂模式、适配器模式、责任链模式等等。
来看一个责任链模式重构的例子:
接口:
各个实现:
调度:
按此设计模式重构好之后,程序员只需实现各个业务实现即可,其它的**自动执行,连异常都是自动处理的。
而关于开发原则,估计没几个人遵守。比如单一职责原则、开闭原则等等。如果理解了这20万行代码的苦楚,想必会更理解这些原则的好处。
当然,代码量过了20万行,体验肯定不止这一些,这里只是抛砖引玉,大家有什么别的想法,都可在评论区留言,或者说一下你都见过那些不规范的写法、坑死人的写法等等,欢迎留言探讨。
关注 银河架构师,发现更多精彩科技内容。
当年我们公司有一阵时间发明了用代码量计算工作量并以此进行考核,于是出现了五花八门的奇葩源码,比如赋值一个字符串,一个函数就搞定,只有一行,有人会一个字符一个字符的赋值,200多个字符长度的字符串要写200多行,当我不小心看到时,简直目瞪口呆,这丫太有才了。java里的a.b.c**,一行可以分成很多行。要写出20万行,一点也不难。
还有用bug数量评估代码的优良,后来也歇菜了,因为谁也不愿意承认是自己问题,遇到问题能推就推。测试人员要是把一些集体犯错的bug定位到自己身上,必须吵翻天。
20万行并不算多,但也不算少。
我曾经有一年,自己写了一个工程8万行的C ,如果统计加上第三方的代码那能到30万行。中间有一段时间被设计错误搞的逻辑混乱,小规模重构过一次。算是我一次性独立完成的**的项目了。说实话还是蛮有成就感的,但也就那样。
**是自己写的,超过20万行的也有,是我自己写的游戏引擎,但那是常年累月不断更新维护迭代下来的。这种感觉就不只是成就感了,而是有一种情怀。哪怕别人的比自己的更强大,我依然要用我自己的。它更是一种依赖,因为常年累月的积累迭代,其中包含了各种基础库。自己的数学库,自己的模版库,自己的网络库,等等。写个啥项目,基础库都要用自己的,上手快啊!
作为一个从业多年,编写的有效代码远超20万行的老码农,来聊聊个人的切身体验,希望能对你有所帮助。
当你开始写**个程序的时候,目的往往只有一个,如果将能够快速的掌握这门语言,如何能将那些练习题用程序实现,如果以每道题几十行代码计,下来也写了成千上万行代码吧。
后来会接触一些开发框架,开始学习并使用这些框架,然后用它们来解决一些实际的问题,在此过程中,代码量会快速的**,然后慢慢的理解了这些框架的设计思路,也发现了它们的一些缺陷与不足。于是你会根据需要解决的问题转向一些别的框架,甚至是别的编程语言。有时候为了设计一个良好的系统,你可能会使用到几种不同的编程语言;有时候因为现有框架无法解决问题,你会求助于开源社区;有时候开源社区可能也没有你需要的东西,于是你开始自行设计;或许有一天,你自己设计了一个**库,然后将它放到开源社区,你开始成了新手膜拜的大神,而当初你自己也曾膜拜那些提供开源项目的人!
实际上随着代码量的增长,每个人的倾向也各不相同。比如有的人会向深度发展,开始研究更**的算法;而有些人会向高度发展,设计更灵活多变的框架;也有人会向广度发展,融合多种语言,充分利用它们的优缺点以解决实际问题……
就我个人来说,曾经在某一个阶段,也可能就是20万行代码这个阶段吧,会经常沉迷于开源社区,学习那些**的开源项目,后来开始自己设计一些应用框架,再后来,希望有一天自己开发的一些项目也能为开源社区做一点点贡献(不过因为需要养家糊口,一些代码会涉及到商业问题,所以无法分享,想想甚至遗憾)。
**需要说明一下,代码量和有效代码量是有着很大区别的,如果Ctrl C,Ctrl V,那么有些人甚至一天就可以写出上万行代码,而这些靠复制、粘贴出来代码显然是没有含金量的,它们只是代码而不是有效代码。有效代码是经过你思考并自己编写的代码,即使是参考已有代码,也是经过**的重构以**的融合进自己的框架。
当然每个人的悟性、兴趣与从事的行业也各不相同,体验自然也会千差万别,不能一概而论。
代码量无意义,要是纯粹为了凑20万行代码很容易,复制粘贴就可以了。如果是自己码上的二十万行代码,说明你写的够多了,但是可能是**级的程序员,面向对象的语言讲求封装继承多态,**程序员会用最少的代码去干更多的事。所以说比拼代码量只能说是个小白。
什么是富人思维?如何培养这种思维?
什么是“富人思维”?
诸君还记得唐朝刘禹锡的《陋室铭》吗?我们不妨再读一读:
山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭,孔子云:何陋之有?
“谈笑有鸿儒,”,典型的富人思维。
“往来无白丁,”居然还称之为“陋室”?
这种陋室,既有黄金屋,又有颜如玉,“可以调素琴,阅金经,”让真正家徒四壁的穷苦人的破茅庐起什么名好呢?
这种陋室还专门作铭传世,让衣不蔽体,食不果腹的老百姓情何以堪?
富人思维:不会再考虑衣食住行,不再考虑金银财宝,不再考虑贤妻美妾。
思维什么呢?
有钱的还想追求权力,要名声显赫,沽名钓誉;
物质富有了追求精神富有:吟诗作对,随心所欲,闲情逸致,附风作雅。
富人女人锦衣玉食,则着重追求感情丰富,爱情**。
林黛玉的“葬花吟”是又一富人思维的典型佐证:
花谢花飞花满天,红消香断有谁怜?
游丝软系飘春榭,落絮轻沾扑绣帘。
闺中女儿惜春暮,愁绪满怀无释处。
手把花锄出绣帘,忍踏落花来复去。
柳丝榆荚自芳菲,不管桃飘与李飞;
桃李明年能再发,明年闺中知有谁?
三月香巢已垒成,梁间燕子太无情!
明年花发虽可啄,却不道人去梁空巢也倾。
一年三百六十日,风刀霜剑严相逼;
明媚鲜妍能几时,一朝漂泊难寻觅。
花开易见落难寻,阶前愁杀葬花人,
独倚花锄泪暗洒,洒上空枝见血痕。
**无语正黄昏,荷锄归去掩重门;
青灯照壁人初睡,冷雨敲窗被未温。
怪奴底事倍伤神?半为怜春半恼春。
怜春忽至恼忽去,至又无言去不闻。
昨宵庭外悲歌发,知是花魂与鸟魂?
花魂鸟魂总难留,鸟自无言花自羞;
愿侬此日生双翼,随花飞到天尽头。
天尽头,何处有香丘?
未若锦囊收艳骨,一抔净土掩**。
质本洁来还洁去,强于污淖陷渠沟。
尔今死去侬收葬,未卜侬身何日丧?
侬今葬花人笑痴,他年葬侬知是谁?
试看春残花渐落,便是红颜老死时;
一朝春尽红颜老,花落人亡两不知!
一个平民女子,忙于温饱,忙于田园,忙于农耕,纺纱织布,溪边浣纱,绝没有心事,更没有功夫去一边拾花、一边吟诵、一边挖坑、一边流泪,一边葬花的。
他们有错吗?
他们都没有错,
因为在什么环境下,就会产生什么样的思维,正应了“在什么山上唱什么歌”这句名言。