【外刊IT评论网】二小时与四周时间在编程上的差别

标签: 复杂度 批评评论 游戏 | 发表时间:2011-08-04 00:54 | 作者:Aqee ZX
出处:http://www.aqee.net
本文是从 Simplicity Oriented Programming 这篇文章翻译而来。

Warsztat(一个波兰的游戏开发组织)工作的几年中,我发现一个有趣的现象。经常我们会组织一些编程竞赛,这些竞赛通常分为两种形式。一种是个人行动,一般只有2个小时的时间,另外一种是长时间的(数天/周)。作为一个额外的要求,前者通常限制只允许使用基本的API(SDL, OpenGL等),而后者通常没有限制(可以使用各种引擎,UDK/Unity等)。

结果有点让人吃惊。很多人更愿意参加短竞赛。但不管游戏是在2个小时里开发出来的,还是在4周内开发出来的,它们中优秀的部分的在水平上一样的。为什么?

  1. 4周的开发期并不意味着开发的时间是672或224小时。在一些极端的情况在,4周的竞赛跟2个小时的竞赛一样,也就是这4周的最后2个小时在起作用。
  2. 很多的游戏体现出来的实际是一个创意。事实上:你4周内想出来的创意未必就比10分钟内想出的好。
  3. 2小时竞赛的开发过程压力强度非常的大。大部分的时间都是用来改进核心功能(因为也没有其它的)。
  4. 另一方面,在长周期竞赛项目里,人们最初只是关注一些无关紧要的功能。一旦你开始琢磨着添加一个界面组件,把它做成一个内置的MP3播放器,或把界面弄的色彩斑斓,你的项目就开始失败了。

这也许是我们得到的最重要的教训。如果你需要很快的完成某项事情,代码可能会写的很差,但也会很短小、简练和灵活。如果没有时间的约束,程序的复杂度,功能项和缺陷率会上一个等级。给日后维护带来的工作量并不体现在现在。

在4周的编程时间里,你可以进行数次的快速迭代编程,每一次都对游戏的核心功能进行改进。但如果一开始你就把一些以后未知的特征功能考虑进去,写这部分功能以及修改bug会耗去大部分的时间。诚然,你可以用这4周时间写出大量的assets测试,但核心的游戏娱乐方式设计的足够好吗?

最后,给你们一个绝对有价值的C(++)忠告:当增加新功能时,从最小的核心功能开始:

  1. 全局函数 — 如果你需要去显示分数,不要犹豫,立即写出void DisplayScore()。如果你的游戏是单人玩的,把分数存成全局变量。看看,你至少节省了10分钟的写getter、setter和设计给模块通信的时间。不需要做这些。如果游戏是多人玩的,你需要为每个人记录和显示分数。但如果你的游戏不是多人玩的,你没有任何理由实现能显示任意多人的任意分数的功能。相信我,你将会遇到比显示分数复杂的多的多的问题。
  2. 如果你的函数需要用到共用代码或需要辅助函数,请把它们组织到一起,最好是放在一个单独的文件里。时刻想着静态函数和变量 — 跟“OO”的静态相反,文件的静态是可见的。这样做很好,因为你可以把所有跟字体相关的操作都放在一个文件里,把把所有内部数据都放在静态全局变量里。辅助函数可以做成静态的,通过共享的header对外开放(如果你写出简单的代码,整理工作从来不会耗费你太多的时间)。
  3. 只有在必要的时候才把函数提升为类。记着,类意味着对象,对象意味这相互关系,而相互关系意味这复杂。你的游戏设计会酷到留有大量的时间处理代码的复杂吗?
  4. 只有当上面说的这些不够好,设计模式或其他新奇的东西才能成为你的求助目标。永远不要走到这一步。

本文来自外刊IT评论网(www.aqee.net),原始地址:二小时与四周时间在编程上的差别

相关 [it 时间 编程] 推荐:

编程时间分配图

- Greyby - 酷壳 - CoolShell.cn
下面是一个程序员coding的时间分配图,原图在这里. 思考会是一个很重要的过程,当然耽搁拖沓也有可能也是因为没有想好,抽烟/喝咖啡应该也是一种思考,吃点东西是为了让脑子转得更快一点,上网搜索一下灵感可以借鉴一下其它人的想法,抱怨写注释只是一个例子,更多的应该是抱怨加班或是公司的老板. 如果需要加上点什么的话,我觉得应该加点“重构”,“编译”,“调试”,当然,他们都可以算在coding里.

二小时与四周时间在编程上的差别

- China Moon - cnBeta.COM
感谢虚拟主机尽在思朴互联的投递. 在Warsztat(一 个波兰的游戏开发组织)工作的几年中,我发现一个有趣的现象. 经常我们会组织一些编程竞赛,这些竞赛通常分为两种形式. 一种是个人行动,一般只有2个小时的时间,另外一种是长时间的(数天/周). 作为一个额外的要求,前者通常限制只允许使用基本的API(SDL, OpenGL等),而后者通常没有限制(可以使用各种引擎,UDK/Unity等).

项目经理应该把30%的时间用在编程上

- - 外刊IT评论网
Eliot Horowitz是. MongoDB的创始人和技术总监. 在一个科技公司里,软件技术经理用在编程上的时间应该不低于总工作时间的30%. 无论是管理一个团队,还是一个分部,还是整个公司,当技术经理用在编程上的时间低于30%时,他执行职责的能力就会发生严重退化. 我的这个断言可能跟那些我看到的想成为团队首领的软件程序员们期望的情况完全相反.

【外刊IT评论网】二小时与四周时间在编程上的差别

- ZX - 外刊IT评论
本文是从 Simplicity Oriented Programming 这篇文章翻译而来. 在Warsztat(一个波兰的游戏开发组织)工作的几年中,我发现一个有趣的现象. 经常我们会组织一些编程竞赛,这些竞赛通常分为两种形式. 一种是个人行动,一般只有2个小时的时间,另外一种是长时间的(数天/周).

暗时间

- myartings - 微软亚洲研究院
刘未鹏,Mindhacks帮主,在这块自留地上笔耕不辍了八年. 他从2003年在《程序员》杂志上发表第一篇技术文章,并开始在CSDN写技术博客. 起初的博客较短,也较琐碎,并夹杂着一些翻译的文章,后来才慢慢开始有了一些自己的心得和看法. 八年来,虽然平均每个月写1篇或者更少,但他从未停止. 写博客这件事情,给他带来的最大体会就是,一件事情如果你能够坚持做8年,那么不管效率和频率多低,最终总能取得一些很可观的收益.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Shell编程

- - 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.

用 AlphaCode 编程

- - 奇客Solidot–传递最新科技情报
至少在部分问题上 AI 程序员能与真正的程序员竞争了. Alphabet 旗下 AI 子公司 DeepMind 宣布了 AI 代码生成系统 AlphaCode(PDF),声称测试显示其水平在编程竞赛中已经具备了竞争力. 计算机科学家 Scott Aaronson 也为 AI 在编程方面的进步 惊叹不已.

时间与空间

- 马都 - 博客李淼
(《Vision》文章,勿转). 时间与空间这两个概念是物理学的基石,也是我们人类甚至动物依靠直觉就具备的概念. 我们判断一个物体的位置,我们从一个地点走到另一个地点,涉及到空间这个概念. 在小学,我们就开始学习一些简单的几何概念,例如三角形,三角形中的三个角有锐角、钝角和直角. 到了中学,我们还学一点立体几何和解析几何.