摘要:在這里統(tǒng)一說開發(fā),可能有失頗偏,畢竟我后端一直都是用實現(xiàn)的,沒用過也沒用過,但我想大體都是一樣都,我就此闡述一下我所認為的程序數(shù)據(jù)結(jié)構(gòu)算法。這套的想法主要目的是把復(fù)雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。
在這里統(tǒng)一說Web開發(fā),可能有失頗偏,畢竟我后端一直都是用PHP實現(xiàn)的,沒用過.net也沒用過java,但我想大體都是一樣都,我就此闡述一下我所認為的“程序=數(shù)據(jù)結(jié)構(gòu)+算法”。
輸入輸出思想相對于前端程序來說,前端用戶的操作為輸入,然后經(jīng)過邏輯處理后,把數(shù)據(jù)輸出到后端;
相對于后端程序來說,從數(shù)據(jù)庫取數(shù)據(jù)算做輸入,然后經(jīng)過處理后,輸出到前端展示;
相對于數(shù)據(jù)庫來說,對于數(shù)據(jù)的操作指令為輸入,操作后產(chǎn)生的輸出結(jié)果為輸出(如刪除成功返回值,寫入成功后返回值等)
開發(fā)過程中的邏輯處理思想后端輸出到前端展示邏輯
基于輸入輸出的思想:輸入(數(shù)據(jù))+處理(算法)+輸出(數(shù)據(jù));
數(shù)據(jù)由數(shù)據(jù)結(jié)構(gòu)組成;
根據(jù)具體業(yè)務(wù)需求,確定輸出的數(shù)據(jù)結(jié)構(gòu);
如果確定的輸出數(shù)據(jù)結(jié)構(gòu)過于復(fù)雜,拆分為單個簡單數(shù)據(jù)結(jié)構(gòu)實現(xiàn);
確定單個簡單數(shù)據(jù)結(jié)構(gòu)的輸入源;
確定輸入源的數(shù)據(jù)結(jié)構(gòu);
用算法邏輯把輸入源轉(zhuǎn)化為輸出數(shù)據(jù);
把單個簡單數(shù)據(jù)結(jié)構(gòu)組裝為最終的復(fù)雜輸出數(shù)據(jù)結(jié)構(gòu);
前端遍歷輸出的內(nèi)容,拆解數(shù)據(jù)做顯示。
前端輸入到后端的處理邏輯
確定后端需要存儲的數(shù)據(jù)結(jié)構(gòu);
把復(fù)雜的輸入數(shù)據(jù)結(jié)構(gòu)拆分為簡單數(shù)據(jù)結(jié)構(gòu);
根據(jù)簡單數(shù)據(jù)結(jié)構(gòu),遍歷用戶輸入內(nèi)容取得輸入數(shù)據(jù)組裝;
組裝簡單的輸入數(shù)據(jù)結(jié)構(gòu)傳遞到后端;
后端拆解前端輸入的復(fù)雜數(shù)據(jù)結(jié)構(gòu)為簡單數(shù)據(jù)結(jié)構(gòu);
遍歷單個復(fù)雜數(shù)據(jù)結(jié)構(gòu)并存儲,且返回每個步驟的存儲結(jié)果,出錯做數(shù)據(jù)回滾;
把存儲結(jié)果返回。
其他思考
具體業(yè)務(wù)邏輯可能相對更復(fù)雜,一般get方式取數(shù)據(jù)對應(yīng)的是后端的輸出邏輯思想,數(shù)據(jù)存儲對應(yīng)的是前端輸入思想。
這套的想法主要目的是把復(fù)雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。
另外一方面以數(shù)據(jù)拆解的思想盡量把復(fù)雜邏輯變簡單。
一些偽代碼示例存儲示例
commit(); } catch(DbException $e) { $db->rollBack(); // 出錯回滾 } // 存儲過程示例 end
輸出示例
[ "member_id" => 3, "member_name" => "用戶名" ], "order_list" => [ [ "order_id" => 1, "order_sn" => "訂單號" ], [ "order_id" => 1, "order_sn" => "訂單號" ] ] ]; // 確定輸出數(shù)據(jù)結(jié)構(gòu) end // 拆分數(shù)據(jù)結(jié)構(gòu)處理 start $member = Member::find() -> select(["member_id","member_name"]) ->asArray() -> one(); $order_list = Order::find() ->select(["order_id","order_sn"]) ->asArray() ->all(); foreach($order_list as &$item) { $item["time"] = time(); // 對數(shù)據(jù)列表做其他處理 } // 拆分數(shù)據(jù)結(jié)構(gòu)處理 end // 組裝數(shù)據(jù)并輸出 start return [ "member" => $member, "order_list" => $order_list ]; // 組裝數(shù)據(jù)并輸出 end
前端思想同樣如是,我就不做說明了。
這幾天 SF 增加了新的板塊——直播。我也收到了官方的邀請。4 月 7 日(本周五)晚 20:30 和大家一起聊聊項目中的一些總結(jié)。講座傳送: Yii2之RESTful程序基礎(chǔ)設(shè)計及目錄規(guī)劃
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88222.html
摘要:在這里統(tǒng)一說開發(fā),可能有失頗偏,畢竟我后端一直都是用實現(xiàn)的,沒用過也沒用過,但我想大體都是一樣都,我就此闡述一下我所認為的程序數(shù)據(jù)結(jié)構(gòu)算法。這套的想法主要目的是把復(fù)雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。 在這里統(tǒng)一說Web開發(fā),可能有失頗偏,畢竟我后端一直都是用PHP實現(xiàn)的,沒用過.net也沒用過java,但我想大體都是一樣都,我就此闡述一下我所認為的程序=數(shù)據(jù)結(jié)構(gòu)+算...
摘要:新的數(shù)據(jù)表關(guān)系數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類似于這樣子大碼中碼小碼這個表結(jié)構(gòu)的說明是避免對于關(guān)系鏈的數(shù)據(jù)邏輯不理解做的一個示例。 最近幾天一直在糾結(jié)于一個大數(shù)據(jù)批量導(dǎo)入的問題,經(jīng)過幾天思考,發(fā)現(xiàn)基于小數(shù)據(jù)情況,原本的數(shù)據(jù)結(jié)構(gòu)設(shè)計是沒有問題的,但是在大量數(shù)據(jù)導(dǎo)入,問題就很大了。我之前一直在強調(diào)程序=數(shù)據(jù)結(jié)構(gòu)+算法,但在這此卻鉆了牛角尖,最后去仔細看了之前別人設(shè)計的數(shù)據(jù)表才突然靈光一現(xiàn),發(fā)現(xiàn)了mysql...
閱讀 2112·2023-04-26 00:41
閱讀 1142·2021-09-24 10:34
閱讀 3573·2021-09-23 11:21
閱讀 4031·2021-09-22 15:06
閱讀 1557·2019-08-30 15:55
閱讀 897·2019-08-30 15:54
閱讀 1829·2019-08-30 15:48
閱讀 550·2019-08-29 13:58