《游戏编程模式》一1.6 简单性

简介:

本节书摘来异步社区《游戏编程模式》一书中的第1章,第1.6节,作者: 【美】Robert Nystrom (尼斯卓姆) 译者: 赵卫兵 , 许新星 , 姜召阳 , 陈侃 , 屈光辉 , 郑炯彬 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.6 简单性

最近,我觉得如果有任何方法来缓解这些限制,那便是简单性了。在今天我所写的代码中,我非常努力地尝试着编写最干净、最直接的函数来解决问题。这种代码在你阅读之后,就会明白它究竟做了什么,并且不敢想象还有其他可能的解决方案。

我致力于保持数据结构和算法的正确性(在这个顺序下),然后继续往下做。我觉得如果我能保持简单性,代码量就会变少。这意味着更改代码时,我的脑袋里只需装载更少的代码。

它通常运行速度快,因为根本就没有那么多的开销,也没有太多的代码要执行(这当然并非总是如此,你可以在小部分代码中进行很多的循环和递归)。

Blaise Pascal用了一句名言作为了一封信的结尾:“我会写一封更简短的信,但我没有足够的时间。”

另一种引用来自Antoine de Saint- Exupery:“极臻完美,并非无以复加,而是简无可减。”

言归正传,我注意到,每次我修改这本书的章节时,它都会变得更短。一些章节在完成时要比原来缩短20%。

但是,请注意,我并不是说简单的代码会花费较少的时间来编写。你会觉得最终的总代码量更少了,但是一个好的解决方案并不是更少的实际代码量,而是对代码的升华。

我们很少会遇到一个非常复杂的问题,用例反而有一大堆,例如,你想让X在Z的情况下执行Y而在A的情况下执行W,以此类推。换句话说,是一个不同实例行为的长列表。

最省脑力的方法就是只编写一次测试用例。看一下新手程序员,这是他们经常做的:为每个需要记住的用例构建大量的条件逻辑。

在那里面毫无优雅性,当程序有输入或者编码者稍微考虑得跟用例有些不一样时,这种风格的代码就最终会沦陷。当我们考虑优雅的解决方案时,浮现脑海中的就有一个:一小块逻辑就能正确地处理一大片用例。

你会发现这有点像模式匹配或解谜。它需要努力识破测试用例的分散点,以找到它们背后隐藏的秩序。当你把它解决时,会感觉很棒。

相关文章
|
3月前
|
调度 Android开发 开发者
【颠覆传统!】Kotlin协程魔法:解锁Android应用极速体验,带你领略多线程优化的无限魅力!
【8月更文挑战第12天】多线程对现代Android应用至关重要,能显著提升性能与体验。本文探讨Kotlin中的高效多线程实践。首先,理解主线程(UI线程)的角色,避免阻塞它。Kotlin协程作为轻量级线程,简化异步编程。示例展示了如何使用`kotlinx.coroutines`库创建协程,执行后台任务而不影响UI。此外,通过协程与Retrofit结合,实现了网络数据的异步加载,并安全地更新UI。协程不仅提高代码可读性,还能确保程序高效运行,不阻塞主线程,是构建高性能Android应用的关键。
61 4
|
3月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
82 0
|
存储 JavaScript C#
从零开始做一款Unity3D游戏<三>——编写游戏机制(一)
从零开始做一款Unity3D游戏<三>——编写游戏机制
从零开始做一款Unity3D游戏<三>——编写游戏机制(一)
|
存储 设计模式 JavaScript
从零开始做一款Unity3D游戏<三>——编写游戏机制(二)
从零开始做一款Unity3D游戏<三>——编写游戏机制
从零开始做一款Unity3D游戏<三>——编写游戏机制(二)
|
JavaScript 前端开发 机器人
|
程序员 设计模式 数据采集
《游戏编程模式》一导读
在这叠文档的最后部分,是一个真正的“怪物”:一个代码量占据几页篇幅的程序。我们思量良久,这才鼓起勇气去尝试它,不过它极为诱人——标题写着“巨魔洞穴”。我们不知道它是做什么的,不过听起来像是个游戏,还有什么能比亲手写一款计算机游戏更酷呢?
1668 0
下一篇
无影云桌面