百科问答小站 logo
百科问答小站 font logo



写代码过程中最忌讳的是什么?总感觉最近太过于急于求成? 第1页

  

user avatar   zeyangl 网友的相关建议: 
      

讲个真实的故事。

在Stanford的第二个学期,我闲的蛋疼去图形学lab找个了写代码的工作。我的老板就叫V教授吧,他手下有一个博士生S哥,在做一个室内家具自动设计的项目。他写了一个demo,虽然算法效果还不错,但是渲染效果很差,而且缺少比如阴影一类的视觉效果。我的工作就是让demo看上去更牛逼一点。

我看了一下demo之后,感觉难度应该不大,首先是性能有问题,性能问题搞定之后,可以加一些eyecandy的标准效果。毕竟我大三的暑假在activision撸了3个月游戏引擎优化,也算是轻车熟路了。S哥特别兴奋,把cvs账号给我(对,那个时代还用cvs),说咱们1个月差不多就搞定了吧。我说不用啊就这么点东西两周吧。

这种项目优化起来就是那些手段,没啥难度,我决定推迟到周末再开始,最后总共留了一周左右的时间。

但是当我最终坐下来开始看代码的时候,就石化了。

这是我见过的最没有结构的代码,总共三四个文件,每个都几万行,大量重复但是修改过一点点的代码被复制来复制去。渲染是opengl写的,但是所有东西都是glbegin/glend画的,也没有任何抽象,矩阵运算也全部是gltranslate/glrotate一类的。但是它又是那么没有bug的正常运行,让我叹为观止。

任何的性能提升,都建立在大量的重构基础之上,然而任何的重构都牵一发而动全身。但是眼前这坨冒着蒸汽的热翔,又是这么有机的运作着,简直就像把C++ feed到一个C++到C++的compiler里,然后吐出来一堆没有任何抽象的C++。

我其实还是尝试重构了,但是基本意味着我要把全部渲染的东西重写一遍,一周(还要上课写作业啊)看来是肯定搞不完了。最后我写了一个shadow mapping,连pcf都没加,然后替换了部分glbegin/glend就报告了V教授,说实在是搞不定了啊。

第二天V教授说你们去买个新电脑吧。

卧槽,那我还优化个什么劲?

但是这并不是一个关于重构的故事。

我后来打听了一下S哥的底细,大概是这样的:这位仁兄在本科和master都是学的建筑,并不会写代码,后来强行申请了Stanford的CS Phd,居然还进来了。因为没有受过任何CS的科班训练,更不知道啥重构,抽象,OO,FP的概念。一切东西能用就行,还tm重构,累不累啊。而且S哥轻轻松松写个几万行毫无压力,功能都很正常。

许多年以后我才意识到,这是一位挥舞代码就像挥舞笔刷的艺术家啊,这才是代码作为一种表达方式的自然存在啊。无拘无束,放荡不羁,这才是真正的,自由的写程序!

急于求成算事吗?忌讳什么的算事吗?最重要的是写出功能,写出风骨,写出浪漫,写起代码来犹如李太白写诗,呼儿将出换美酒,与尔同销万古愁啊!

然后你就花$20/hr雇个小弟来帮你重构就好啦。




  

相关话题

  能看得懂编程,但自己写却一点都写不出来怎么办? 
  为什么中国程序员工资那么高,连一个 MATLAB 的替代品都开发不出来? 
  如果华为自己做手机操作系统,你对这个操作系统有什么建议? 
  为什么老板要教我们做互联网的程序员不要把工作和生活分开,这对于独立的程序员个体有什么好处? 
  程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧? 
  为什么著名的轮子很少有用 Lisp 写的? 
  华为自研编程语言「仓颉」试用报名开启,有哪些值得关注的信息? 
  在宿舍写代码总被一个室友认为在装逼,该怎么办? 
  软件开发中遇到需要引用的两个库包含的某个同名DLL版本不一致的情况应该如何处理? 
  如何从零写一个正则表达式引擎? 

前一个讨论
那些有公主病却没有公主命的女生都是什么心理?
下一个讨论
同样是熟读书籍,为什么有的人就能迅速应用于实战,而有的人却只能停留于纸面上?





© 2024-11-25 - tinynew.org. All Rights Reserved.
© 2024-11-25 - tinynew.org. 保留所有权利