程序员告诉你如何在业余时间发展麻将。

2020/3/22 14:50:46      点击:
我们在这里谈论的不是一步一步地做麻将游戏执行教程,而是"设计"本身--探索、思考、执行和修改设计的过程实际上是最简单的部分。设计的执行并不叫设计,但至多是一名熟练的工人。

首先,我们买了一副麻将。第一步应该是分解问题本身(注意麻将不被划分为几个类别),并分解数据结构的设计级别。通常我们得到这样的设计,并开始选择数据结构-麻将是一个背包,堆栈,队列,红色和黑色的树?特别喜欢跟读课文,善于模仿学生。做过专题的学生通常会开始获得麻将界面,麻将类,然后添加麻将方法来打麻将。我不认为这是一个很好的设计步骤。

传统的开发人员对软件的理解是数据结构+算法,而对现代面向对象开发人员的理解是抽象对象(继承/多态/泛型)是从具体对象中产生的。它们的共同特点是,实际世界直接抽象为编程,每个开发人员掌握的设计范式或习惯是不同的,以便团队使用框架和最佳实践来限制差异并降低理解和修改的成本。

然而,这是否是将现实世界直接抽象成编程的正确方式呢?对于开发人员来说,这个想法无疑是最直观的,但随着时间的推移,在团队的约束下,它变成了"最佳实践"的执行,而不是设计,执行是最简单的部分,只执行的程序员经常被戏称为Manon。

麻将是背包、堆栈、队列还是红色和黑色的树?不,你会发现你已经学到了太多的数据结构,根本没有用。(传统的面向对象的设计无疑可以解决这种问题,面向对象的(例如;"/>")"。

为什么这么多的数据结构不能处理麻将?或者它的处理方式非常笨拙和不完整。因为我们只是背诵那些数据结构,比如背诵乘法表,1乘1到9乘9,那么19乘以1234呢?没有人教你乘法过程,也没有人教你数据结构的设计。因为初学者学习数据结构与算法不同,所以他们被理解为静态结构。但数据结构不是静态结构,无论是房屋建筑还是那种结构。数据结构包含算法,我们应该将数据结构分解为集合和算法--数据结构的本质不是结构,而是集合和算法,这看起来很像面向对象的对象状态和方法。但它们之间仍有一些不同之处。

为什么你说数据结构的本质是集和算法?当我们回到麻将游戏时,我们不能使用其他的数据结构,所以让我们设计一个麻将结构--麻将本身就是一个集合,分为两类。1)桌面上的麻将,2)人手中的13麻将。