百科问答小站 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雇个小弟来帮你重构就好啦。




  

相关话题

  流氓软件的开发者自己良心不会受到谴责吗? 
  为什么GCC的版本号增速比以前快这么多? 
  后端开发除了增删改查还有什么? 
  为什么写程序的时候可以坚持很久,但是学习数学就很难保持注意力? 
  有哪些程序员特有的技能? 
  新手该如何使用 GitHub? 
  如何看待 Python 之父关于帮助中国程序员应对 996 工作制的讨论? 
  是否存在那种,已经复杂到无法继续有效维护的软件?如果没有,哪些是最接近的? 
  为什么要学习别人的设计模式? 
  怎样才能写出 Pythonic 的代码? 

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





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利