1. 理解編程原理,看這篇文章就夠了~

        共 3516字,需瀏覽 8分鐘

         ·

        2023-08-03 22:38

        之前有小伙伴問,如何更簡單的理解編程呢?我珍藏了一篇幫助你理解編程原理的文章。分享出來:

        編程,沒有你想象的這么復(fù)雜。
        什么是編程?——就是通過算法邏輯串聯(lián)數(shù)據(jù)結(jié)構(gòu)來解決具體問題并實(shí)現(xiàn)業(yè)務(wù)訴求的過程。
        也就是:編程 = 算法邏輯 + 數(shù)據(jù)結(jié)構(gòu)。

        算法邏輯是一步步解決問題的過程;
        數(shù)據(jù)結(jié)構(gòu)就是數(shù)據(jù)的呈現(xiàn)/存儲(chǔ)方式。比如書放到書架,書架就是一個(gè)數(shù)據(jù)結(jié)構(gòu),把書放到箱子里,箱子就是一種數(shù)據(jù)結(jié)構(gòu),那書架和箱子都是數(shù)據(jù)的不同存儲(chǔ)方式。

        舉個(gè)例子:
        你18:30下班到家,怎么讓家人在20:00之前吃上飯?你有兩種算法,可以先煮飯然后去買菜,也可以先買菜再煮飯,哪種方式更好呢?咱來分析下:
        目標(biāo):18:30到家,讓家人在20:00之前吃上飯算法a:先煮飯然后去買菜算法b:先買菜回來再煮飯

        這里做飯是一個(gè)程序?qū)嶓w(程序?qū)嶓w:程序中所包含的各種元素,如變量、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、類等),這里包含煮飯、買菜、切菜、做菜,那表達(dá)方式是:
        做飯 = {  煮飯() {},  買菜() {},  切菜() {},  做菜() {},}

        中文翻譯成英文不就行了么?不復(fù)雜吧~
        接著咱繼續(xù)看,在做飯的過程中,會(huì)有很多異常情況,以下是新手的編程處理:
        做飯 = {  開始() {    煮飯(); 買菜(); 切菜(); 做菜();  },  煮飯() {},  買菜() {},  切菜() {},  做菜() {    if (家里沒有油了) {     買油(); 炒菜();     }     else { 炒菜(); }  }}
        做飯->開始();

        咱解讀下:
        程序?qū)嶓w是做飯,包含四個(gè)步驟:開始→煮飯→買菜→切菜→做菜,對吧。
        做飯,可以稱之為對象,這五個(gè)步驟稱之為方法,然后一個(gè)個(gè)地去調(diào)用它。
        首先調(diào)用【開始】方法,在【開始】方法里,又依次調(diào)用【煮飯】、【買菜】、【切菜】和【做菜】。
        然后在【做菜】方法里,有一個(gè)判斷:“如果家里沒有油了”,新手處理方式是:先去買油,然后炒菜(這就需要再出門一趟,又浪費(fèi)了時(shí)間)。如果在做菜的過程中沒有調(diào)料呢?卒……

        高手處理方式就不一樣了。他的編程處理是這樣的:
        做飯 = {  開始() {    煮飯();     檢查結(jié)果 = 檢查();    買菜(檢查結(jié)果); 切菜(); 做菜();  },  檢查() {    if (家里沒有油了) { 買菜的時(shí)候要買油 }     if (家里沒有辣椒了) { 買菜的時(shí)候要買辣椒 }   },  煮飯() {},  買菜() {},  切菜() {},  做菜() {},}
        做飯->開始();

        你針對性的比較下,高手步驟中多了一個(gè)方法叫【檢查】,也就是在買菜之前先檢查下我要做菜缺少啥東西并記錄,在買菜的時(shí)候一并買上。
        你看,這就是把問題想清楚,不留任何細(xì)節(jié)。解決如何消耗最小的資源解決最大的問題。這也就是技術(shù)為什么要深入的了解業(yè)務(wù),是為了更便捷的做技術(shù)策略。
        簡單吧~《編程從入門到放棄》,理解上面的,就表示你入門了。接下來就是放棄時(shí)刻了~

        如果要做小炒肉、魚香肉絲、剁椒魚頭等等好幾個(gè)菜,咋辦?
        如果是新手,常用的處理方式:
        做飯 = {  煮飯() {},  買菜() {},  洗菜() {},  切菜() {},  做菜() {},}
        做飯->煮飯();做飯->買菜();
        做飯->洗菜(小炒肉);做飯->切菜(小炒肉);做飯->炒菜(小炒肉);
        做飯->洗菜(魚香肉絲);做飯->切菜(魚香肉絲);做飯->炒菜(魚香肉絲);
        做飯->洗菜(剁椒魚頭);做飯->切菜(剁椒魚頭);做飯->炒菜(剁椒魚頭);

        程序本身沒有問題,但是如果做要做10個(gè)菜,那程序就十分冗長,這對后續(xù)性能會(huì)有大影響。而高手會(huì)用“抽象思維”來解決問題。(把相似的步驟抽象成相同的行為,然后重復(fù)就好
        他是這么處理的:
        做飯 = {  開始(菜單) {    煮飯();    買菜(菜單);    菜單->逐一(做菜);  },  買菜() {},  煮飯() {},  做菜(菜品) {     洗菜(菜品);     切菜(菜品);     炒菜(菜品);   }}
        菜單 = 小炒肉、魚香肉絲、剁椒魚頭;做飯->開始(菜單);

        你看,會(huì)把做飯分為三個(gè)步驟:煮飯、買菜和做菜,首先想好了一個(gè)菜單,然后抽象一個(gè)做菜的方法,這個(gè)方法里面包括洗菜、切菜和炒菜三個(gè)步驟,每一道菜都執(zhí)行相同的步驟即可。
        如果有10道菜,直接擴(kuò)展菜單就行了,因?yàn)樵诔绦蛑性O(shè)置了“逐一”的邏輯。

        以上是前端的業(yè)務(wù)邏輯,可以通過業(yè)務(wù)流程+業(yè)務(wù)邏輯梳理出來,和后端的存儲(chǔ)呢?
        后端可以通過一張數(shù)據(jù)表梳理:
        1.整理“角色→場景(必做事項(xiàng))→業(yè)務(wù)流程(輸入-操作行動(dòng)-輸出)”來出發(fā),用Excel完整的整理出來; 
        2.接下來再往下拆一層:
        • 輸入的數(shù)據(jù)包含哪些?  
        • 具體操作哪些內(nèi)容(過程中是否有數(shù)據(jù)流向)?
        • 輸出的結(jié)果包含哪些? 
        3.再去梳理角色的功能權(quán)限和數(shù)據(jù)權(quán)限。

        前端產(chǎn)生的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫,后端調(diào)用通過主鍵逐一關(guān)聯(lián)數(shù)據(jù),形成有效的數(shù)據(jù)表。至此,操作層和數(shù)據(jù)層才形成有效閉環(huán)。
        而其中,業(yè)務(wù)理解是非常非常核心的。所以技術(shù)大大其實(shí)比你還想知道業(yè)務(wù)。因?yàn)榕履愀鞣N改業(yè)務(wù)需求,你一調(diào)整,他就白做了。
        就好比一桌飯菜做好了,卻發(fā)現(xiàn)家人已經(jīng)在外面吃了……咋辦?

        看完清晰了,還是迷糊了?

        希望能帶給正在做產(chǎn)品的你一些思考。覺得還不錯(cuò),幫忙在看分享吧。感謝。

        這兩個(gè)專輯幫助很多人提升了自己:

        產(chǎn)品經(jīng)理工作流(點(diǎn)擊可以訪問)

        產(chǎn)品方法論和思考(點(diǎn)擊可以訪問)

        瀏覽 1151
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 女生操逼视频网站 | 天天色天天日天天操 | 欧美一区二区最爽乱婬视频免费看 | 亚洲一区免费 | 大鸡巴插逼逼视频 |