资讯专栏INFORMATION COLUMN

关于Web开发中“程序=数据结构+算法”的思考

firim / 331人阅读

摘要:在这里统一说开发,可能有失颇偏,毕竟我后端一直都是用实现的,没用过也没用过,但我想大体都是一样都,我就此阐述一下我所认为的程序数据结构算法。这套的想法主要目的是把复杂程序尽量做简化,并以数据和算法的思想去思考程序本身。

在这里统一说Web开发,可能有失颇偏,毕竟我后端一直都是用PHP实现的,没用过.net也没用过java,但我想大体都是一样都,我就此阐述一下我所认为的“程序=数据结构+算法”。

输入输出思想

相对于前端程序来说,前端用户的操作为输入,然后经过逻辑处理后,把数据输出到后端;

相对于后端程序来说,从数据库取数据算做输入,然后经过处理后,输出到前端展示;

相对于数据库来说,对于数据的操作指令为输入,操作后产生的输出结果为输出(如删除成功返回值,写入成功后返回值等)

开发过程中的逻辑处理思想

后端输出到前端展示逻辑

基于输入输出的思想:输入(数据)+处理(算法)+输出(数据);

数据由数据结构组成;

根据具体业务需求,确定输出的数据结构;

如果确定的输出数据结构过于复杂,拆分为单个简单数据结构实现;

确定单个简单数据结构的输入源;

确定输入源的数据结构;

用算法逻辑把输入源转化为输出数据;

把单个简单数据结构组装为最终的复杂输出数据结构;

前端遍历输出的内容,拆解数据做显示。

前端输入到后端的处理逻辑

确定后端需要存储的数据结构;

把复杂的输入数据结构拆分为简单数据结构;

根据简单数据结构,遍历用户输入内容取得输入数据组装;

组装简单的输入数据结构传递到后端;

后端拆解前端输入的复杂数据结构为简单数据结构;

遍历单个复杂数据结构并存储,且返回每个步骤的存储结果,出错做数据回滚;

把存储结果返回。

其他思考

具体业务逻辑可能相对更复杂,一般get方式取数据对应的是后端的输出逻辑思想,数据存储对应的是前端输入思想。

这套的想法主要目的是把复杂程序尽量做简化,并以数据和算法的思想去思考程序本身。

另外一方面以数据拆解的思想尽量把复杂逻辑变简单。

一些伪代码示例

存储示例

commit();
} catch(DbException $e) {
    $db->rollBack(); // 出错回滚
}
// 存储过程示例 end

输出示例

 [
        "member_id" => 3,
        "member_name" => "用户名"
    ],
    "order_list" => [
        [
            "order_id" => 1,
            "order_sn" => "订单号"
        ],
        [
            "order_id" => 1,
            "order_sn" => "订单号"
        ]
    ]
];
// 确定输出数据结构 end

// 拆分数据结构处理 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(); // 对数据列表做其他处理
}
// 拆分数据结构处理 end

// 组装数据并输出 start
return [
    "member" => $member,
    "order_list" => $order_list
];
// 组装数据并输出 end

前端思想同样如是,我就不做说明了。

这几天 SF 增加了新的板块——直播。我也收到了官方的邀请。4 月 7 日(本周五)晚 20:30 和大家一起聊聊项目中的一些总结。讲座传送: Yii2之RESTful程序基础设计及目录规划

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88222.html

相关文章

  • 关于Web开发程序=数据结构+算法思考

    摘要:在这里统一说开发,可能有失颇偏,毕竟我后端一直都是用实现的,没用过也没用过,但我想大体都是一样都,我就此阐述一下我所认为的程序数据结构算法。这套的想法主要目的是把复杂程序尽量做简化,并以数据和算法的思想去思考程序本身。 在这里统一说Web开发,可能有失颇偏,毕竟我后端一直都是用PHP实现的,没用过.net也没用过java,但我想大体都是一样都,我就此阐述一下我所认为的程序=数据结构+算...

    fish 评论0 收藏0
  • 大数据导入之MySql设计之空间换时间设计变更

    摘要:新的数据表关系数据的数据结构类似于这样子大码中码小码这个表结构的说明是避免对于关系链的数据逻辑不理解做的一个示例。 最近几天一直在纠结于一个大数据批量导入的问题,经过几天思考,发现基于小数据情况,原本的数据结构设计是没有问题的,但是在大量数据导入,问题就很大了。我之前一直在强调程序=数据结构+算法,但在这此却钻了牛角尖,最后去仔细看了之前别人设计的数据表才突然灵光一现,发现了mysql...

    XiNGRZ 评论0 收藏0

发表评论

0条评论

firim

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<