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

开发 前端
本文是从 Simplicity Oriented Programming 这篇文章翻译而来。

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

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

◆ 4周的开发期并不意味着开发的时间是672或224小时。在一些极端的情况在,4周的竞赛跟2个小时的竞赛一样,也就是这4周的***2个小时在起作用。

◆ 很多的游戏体现出来的实际是一个创意。事实上:你4周内想出来的创意未必就比10分钟内想出的好。

◆ 2小时竞赛的开发过程压力强度非常的大。大部分的时间都是用来改进核心功能(因为也没有其它的)。

◆ 另一方面,在长周期竞赛项目里,人们最初只是关注一些无关紧要的功能。一旦你开始琢磨着添加一个界面组件,把它做成一个内置的MP3播放器,或把界面弄的色彩斑斓,你的项目就开始失败了。

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

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

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

◆ 全局函数 — 如果你需要去显示分数,不要犹豫,立即写出void DisplayScore()。如果你的游戏是单人玩的,把分数存成全局变量。看看,你至少节省了10分钟的写getter、setter和设计给模块通信的时间。不需要做这些。如果游戏是多人玩的,你需要为每个人记录和显示分数。但如果你的游戏不是多人玩的,你没有任何理由实现能显示任意多人的任意分数的功能。相信我,你将会遇到比显示分数复杂的多的多的问题。

◆ 如果你的函数需要用到共用代码或需要辅助函数,请把它们组织到一起,***是放在一个单独的文件里。时刻想着静态函数和变量 — 跟“OO”的静态相反,文件的静态是可见的。这样做很好,因为你可以把所有跟字体相关的操作都放在一个文件里,把把所有内部数据都放在静态全局变量里。辅助函数可以做成静态的,通过共享的header对外开放(如果你写出简单的代码,整理工作从来不会耗费你太多的时间)。

◆ 只有在必要的时候才把函数提升为类。记着,类意味着对象,对象意味这相互关系,而相互关系意味这复杂。你的游戏设计会酷到留有大量的时间处理代码的复杂吗?

◆ 只有当上面说的这些不够好,设计模式或其他新奇的东西才能成为你的求助目标。永远不要走到这一步。

原文:http://www.aqee.net/simplicity-oriented-programming/

【编辑推荐】

  1. 每一门编程语言都是上辈子折翼的天使
  2. 使用node.js进行服务器端JavaScript编程
  3. 微软发布Small Basic 1.0面向青少年编程
  4. 高效的面试程序员方式:结对编程
  5. 如果你的编程语言是汽车……
责任编辑:陈贻新 来源: 外刊IT评论
相关推荐

2021-08-08 11:17:58

谷歌Matt编程

2010-11-03 13:36:51

DB2时间函数

2012-02-07 11:20:50

360App Store

2015-12-03 09:02:22

掌握新事物100小时

2013-05-21 10:19:22

2021-03-15 13:39:20

EdgeChrome更新

2016-09-30 08:56:45

Windows 10间隔时间

2021-12-21 10:26:39

交付项目Jira开发

2013-10-18 09:29:53

编程开发

2009-06-26 09:43:14

广东电信网络故障腾讯

2014-03-11 09:32:06

项目经理编程

2009-04-14 09:42:05

黑莓Sprint Next中断

2014-07-07 11:08:37

监听NSA斯诺登

2023-12-29 22:37:42

时间序列NLP

2012-05-16 09:53:56

2015-07-22 09:38:13

苹果服务器中断

2013-12-24 13:45:27

2013-09-25 14:14:19

周鸿祎360互联网

2015-03-20 15:26:03

Apple Watch续航

2016-01-18 10:06:05

编程
点赞
收藏

51CTO技术栈公众号