成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關于Web開發(fā)中“程序=數(shù)據(jù)結構+算法”的思考

firim / 339人閱讀

摘要:在這里統(tǒng)一說開發(fā),可能有失頗偏,畢竟我后端一直都是用實現(xiàn)的,沒用過也沒用過,但我想大體都是一樣都,我就此闡述一下我所認為的程序數(shù)據(jù)結構算法。這套的想法主要目的是把復雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。

在這里統(tǒng)一說Web開發(fā),可能有失頗偏,畢竟我后端一直都是用PHP實現(xiàn)的,沒用過.net也沒用過java,但我想大體都是一樣都,我就此闡述一下我所認為的“程序=數(shù)據(jù)結構+算法”。

輸入輸出思想

相對于前端程序來說,前端用戶的操作為輸入,然后經過邏輯處理后,把數(shù)據(jù)輸出到后端;

相對于后端程序來說,從數(shù)據(jù)庫取數(shù)據(jù)算做輸入,然后經過處理后,輸出到前端展示;

相對于數(shù)據(jù)庫來說,對于數(shù)據(jù)的操作指令為輸入,操作后產生的輸出結果為輸出(如刪除成功返回值,寫入成功后返回值等)

開發(fā)過程中的邏輯處理思想

后端輸出到前端展示邏輯

基于輸入輸出的思想:輸入(數(shù)據(jù))+處理(算法)+輸出(數(shù)據(jù));

數(shù)據(jù)由數(shù)據(jù)結構組成;

根據(jù)具體業(yè)務需求,確定輸出的數(shù)據(jù)結構;

如果確定的輸出數(shù)據(jù)結構過于復雜,拆分為單個簡單數(shù)據(jù)結構實現(xiàn);

確定單個簡單數(shù)據(jù)結構的輸入源;

確定輸入源的數(shù)據(jù)結構;

用算法邏輯把輸入源轉化為輸出數(shù)據(jù);

把單個簡單數(shù)據(jù)結構組裝為最終的復雜輸出數(shù)據(jù)結構;

前端遍歷輸出的內容,拆解數(shù)據(jù)做顯示。

前端輸入到后端的處理邏輯

確定后端需要存儲的數(shù)據(jù)結構;

把復雜的輸入數(shù)據(jù)結構拆分為簡單數(shù)據(jù)結構;

根據(jù)簡單數(shù)據(jù)結構,遍歷用戶輸入內容取得輸入數(shù)據(jù)組裝;

組裝簡單的輸入數(shù)據(jù)結構傳遞到后端;

后端拆解前端輸入的復雜數(shù)據(jù)結構為簡單數(shù)據(jù)結構;

遍歷單個復雜數(shù)據(jù)結構并存儲,且返回每個步驟的存儲結果,出錯做數(shù)據(jù)回滾;

把存儲結果返回。

其他思考

具體業(yè)務邏輯可能相對更復雜,一般get方式取數(shù)據(jù)對應的是后端的輸出邏輯思想,數(shù)據(jù)存儲對應的是前端輸入思想。

這套的想法主要目的是把復雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。

另外一方面以數(shù)據(jù)拆解的思想盡量把復雜邏輯變簡單。

一些偽代碼示例

存儲示例

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ù)結構 end

// 拆分數(shù)據(jù)結構處理 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ù)結構處理 end

// 組裝數(shù)據(jù)并輸出 start
return [
    "member" => $member,
    "order_list" => $order_list
];
// 組裝數(shù)據(jù)并輸出 end

前端思想同樣如是,我就不做說明了。

這幾天 SF 增加了新的板塊——直播。我也收到了官方的邀請。4 月 7 日(本周五)晚 20:30 和大家一起聊聊項目中的一些總結。講座傳送: Yii2之RESTful程序基礎設計及目錄規(guī)劃

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/88222.html

相關文章

  • 關于Web開發(fā)程序=數(shù)據(jù)結構+算法思考

    摘要:在這里統(tǒng)一說開發(fā),可能有失頗偏,畢竟我后端一直都是用實現(xiàn)的,沒用過也沒用過,但我想大體都是一樣都,我就此闡述一下我所認為的程序數(shù)據(jù)結構算法。這套的想法主要目的是把復雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。 在這里統(tǒng)一說Web開發(fā),可能有失頗偏,畢竟我后端一直都是用PHP實現(xiàn)的,沒用過.net也沒用過java,但我想大體都是一樣都,我就此闡述一下我所認為的程序=數(shù)據(jù)結構+算...

    fish 評論0 收藏0
  • 大數(shù)據(jù)導入之MySql設計之空間換時間設計變更

    摘要:新的數(shù)據(jù)表關系數(shù)據(jù)的數(shù)據(jù)結構類似于這樣子大碼中碼小碼這個表結構的說明是避免對于關系鏈的數(shù)據(jù)邏輯不理解做的一個示例。 最近幾天一直在糾結于一個大數(shù)據(jù)批量導入的問題,經過幾天思考,發(fā)現(xiàn)基于小數(shù)據(jù)情況,原本的數(shù)據(jù)結構設計是沒有問題的,但是在大量數(shù)據(jù)導入,問題就很大了。我之前一直在強調程序=數(shù)據(jù)結構+算法,但在這此卻鉆了牛角尖,最后去仔細看了之前別人設計的數(shù)據(jù)表才突然靈光一現(xiàn),發(fā)現(xiàn)了mysql...

    XiNGRZ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<