网上兼职岗

一个程序员告诉你闲来麻将怎么开发的

兼职类别:职场技巧
这里讲的不是一个一步一步的做麻将游戏执行教程,而是“设计”本身——探索,思考,执行,修改的过程,一步步地执行设计其实是最简单的那一部分,执行设计不叫设计,最多算个熟练工。
 
  首先我们拿到一副麻将。第一步应该是分解“设计”这件事情本身,(注意,这里不是把麻将分成几类),分解出数据结构的那一层次设计。通常我们拿到一份这样的设计,直接开始选择数据结构——麻将是背包、堆栈、队列、红黑树?特别喜欢照本宣科,善于模仿的同学。而做过项目的同学,通常首先开始弄一个麻将接口、麻将类,然后增加打麻将方法。而我认为这都不是好的设计步骤。
 
  传统开发人员对软件的理解是数据结构+算法,现代面向对象的开发人员的理解是抽象对象(继承/多态/泛型)出具体对象。它们的共同特点都是将现实世界直接抽象为程序设计,而每种开发人员所掌握的设计范式或习惯均有差异,为了团队不得不用框架及最佳实践来约束差异,减少理解和修改的成本。
 
  但是,将现实世界直接抽象为程序设计到底是不是正确的思路呢?这个思路对开发人员无疑是最直观的,但长久在团队的约束下,久而久之就变成了对“最佳实践”的执行——而非设计,而执行则是最简单的那一部分,只会执行的程序员通常被戏称为码农。
 
  那么麻将是背包、堆栈、队列还是红黑树呢?都不是,你会发现你学会了这么多数据结构,一点用处也没有,(传统的面向对象设计无疑能够解决这类问题,面向对象(比如;" />
 
  为什么这么多数据结构,都处理不了麻将?抑或说处理地非常别扭,不够完备。因为我们只是背诵了那些数据结构,就像背诵乘法口诀表,1乘以1到9乘以9,那么19乘以1234呢?没有人教你乘法过程——没有人教你对数据结构的设计。因为初学者在学习数据结构时是与算法相对的,会被理解为一个静态的结构。但是数据结构不是一个静态结构,不是像房型建筑就是那个样子。数据结构就包含了算法,我们应该将数据结构分解为集合与算法——数据结构的本质不是结构,而是集合与算法,这看起来很像面向对象中的对象——状态与方法。但它们之间还是有一定的差别。
 
  为什么说数据结构的本质是集合与算法?回到麻将游戏上,不能用其它数据结构,不如我们设计一个麻将结构——麻将本身是一个集合,这个集合分为两大类。1)桌面上的麻将,2)人手上拿的13张麻将。
 
  1)桌面上的麻将——它的最大值是恒定的,只能被随机delete不能被add,为空后游戏结束。(这就是3个算法)
 
  2)人们手上的麻将——它的值始终是恒定的,随机add,选定delete,每delete一次,同时被从桌面麻将上add一个进来。(这是4个算法)
 
  你说这是什么数据结构?第2个看起来有点像哈希表,因为要选定delete,要有索引,有索引就用哈希?No,这不是任何数据结构,这只是集合,以及对集合的操作。不是栈也不是树,不要让数据结构将你的思维限定住了
 
  不应该将现实世界直接转化为计算机语言,而应该先抽象为数学语言(或者说数学语言的需求分析),然后进行技术选型,再转化为计算机语言——函数式也好,面向对象也好,动态语言也好,都是浮云。
发布时间:2018-07-03 来源:网上兼职岗 关注:
职场技巧推荐
  • 小李兼职做武汉鸭脖赚大钱的经历
  • 现在的一些小吃都是受到广大中国人民的喜爱的,比如说最近几年大家都比较喜欢吃的武汉鸭脖,这绝对是一个做兼职非常好的商业机会。
  • 职场技巧 03-10
  • 兼职做游戏开发前景如何
  • 现在的很多人对于游戏还是比较感兴趣的,而且近几年我国对于游戏开发这一方面还是比较注重的
  • 职场技巧 03-08
  • 在酒吧兼职做歌手的工作
  • 现在有很多的年轻人因为工作压力比较大白天有非常多的时间都是忙碌于工作岗位之上,导致他们一整天下来都没有时间去放松休息
  • 职场技巧 03-01
  • 跟拍婚礼的兼职一个月多少钱?
  • 很多人在结婚的时候都是希望自己能有一个毕生难忘的婚礼的,不少人在结婚之前就会在一些婚庆公司承包自己的婚礼
  • 职场技巧 02-28