欧美精品一区二区久久,久久精品国产2020观看福利,中文字幕av一区,色999日韩

網上兼職崗

一個程序員告訴你閑來麻將怎么開發的

兼職類別:職場技巧
這里講的不是一個一步一步的做麻將游戲執行教程,而是“設計”本身——探索,思考,執行,修改的過程,一步步地執行設計其實是最簡單的那一部分,執行設計不叫設計,最多算個熟練工。
 
  首先我們拿到一副麻將。第一步應該是分解“設計”這件事情本身,(注意,這里不是把麻將分成幾類),分解出數據結構的那一層次設計。通常我們拿到一份這樣的設計,直接開始選擇數據結構——麻將是背包、堆棧、隊列、紅黑樹?特別喜歡照本宣科,善于模仿的同學。而做過項目的同學,通常首先開始弄一個麻將接口、麻將類,然后增加打麻將方法。而我認為這都不是好的設計步驟。
 
  傳統開發人員對軟件的理解是數據結構+算法,現代面向對象的開發人員的理解是抽象對象(繼承/多態/泛型)出具體對象。它們的共同特點都是將現實世界直接抽象為程序設計,而每種開發人員所掌握的設計范式或習慣均有差異,為了團隊不得不用框架及最佳實踐來約束差異,減少理解和修改的成本。
 
  但是,將現實世界直接抽象為程序設計到底是不是正確的思路呢?這個思路對開發人員無疑是最直觀的,但長久在團隊的約束下,久而久之就變成了對“最佳實踐”的執行——而非設計,而執行則是最簡單的那一部分,只會執行的程序員通常被戲稱為碼農。
 
  那么麻將是背包、堆棧、隊列還是紅黑樹呢?都不是,你會發現你學會了這么多數據結構,一點用處也沒有,(傳統的面向對象設計無疑能夠解決這類問題,面向對象(比如;" />
 
  為什么這么多數據結構,都處理不了麻將?抑或說處理地非常別扭,不夠完備。因為我們只是背誦了那些數據結構,就像背誦乘法口訣表,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
主站蜘蛛池模板: 友谊县| 莱州市| 常山县| 宁安市| 积石山| 天等县| 永登县| 云龙县| 曲周县| 西昌市| 岳普湖县| 左贡县| 大埔区| 贵港市| 榆社县| 屏山县| 西藏| 鄂尔多斯市| 南宁市| 西宁市| 康平县| 颍上县| 连江县| 蓬安县| 三原县| 靖远县| 克什克腾旗| 平南县| 瑞昌市| 铁岭县| 黔东| 个旧市| 西平县| 宝应县| 井陉县| 恩施市| 合江县| 屏东市| 泰顺县| 无棣县| 谷城县|