关于Web开辟中“顺序=数据结构+算法”的思索

在这里统一说Web开辟,能够有失颇偏,毕竟我后端一向都是用PHP完成的,没用过.net也没用过java,但我想大致都是一样都,我就此论述一下我所以为的“顺序=数据结构+算法”。

输入输出头脑

  1. 相关于前端顺序来讲,前端用户的操纵为输入,然后经由逻辑处置惩罚后,把数据输出到后端;

  2. 相关于后端顺序来讲,从数据库取数据算做输入,然后经由处置惩罚后,输出到前端展现;

  3. 相关于数据库来讲,关于数据的操纵指令为输入,操纵后发生的输出效果为输出(如删除胜利返回值,写入胜利后返回值等)

开辟历程当中的逻辑处置惩罚头脑

  • 后端输出到前端展现逻辑

  1. 基于输入输出的头脑:输入(数据)+处置惩罚(算法)+输出(数据);

  2. 数据由数据结构构成;

  3. 依据详细营业需求,肯定输出的数据结构;

  4. 假如肯定的输出数据结构过于庞杂,拆分为单个简朴数据结构完成;

  5. 肯定单个简朴数据结构的输入源;

  6. 肯定输入源的数据结构;

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

  8. 把单个简朴数据结构组装为终究的庞杂输出数据结构;

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

  • 前端输入到后端的处置惩罚逻辑

  1. 肯定后端须要存储的数据结构;

  2. 把庞杂的输入数据结构拆分为简朴数据结构;

  3. 依据简朴数据结构,遍历用户输入内容获得输入数据组装;

  4. 组装简朴的输入数据结构通报到后端;

  5. 后端拆解前端输入的庞杂数据结构为简朴数据结构;

  6. 遍历单个庞杂数据结构并存储,且返回每一个步骤的存储效果,失足做数据回滚;

  7. 把存储效果返回。

  • 其他思索

  1. 详细营业逻辑能够相对更庞杂,平常get体式格局取数据对应的是后端的输出逻辑头脑,数据存储对应的是前端输入头脑。

  2. 这套的主意重要目标是把庞杂顺序只管做简化,并以数据和算法的头脑去思索顺序自身。

  3. 别的一方面以数据拆解的头脑只管把庞杂逻辑变简朴。

一些伪代码示例

  • 存储示例

<?php
$input = $_post['input'];

// 拆分 start
$product = $input['product'];
$product_sku = $input['product_sku'];
// 拆分 end

// 存储历程示例 start
$db = Db::beginTransation();
try {
    $product_id = Product::save($product); // 单个存储
    ProductSku::save($product_sku,$product_id); // 单个存储
    $db->commit();
} catch(DbException $e) {
    $db->rollBack(); // 失足回滚
}
// 存储历程示例 end
  • 输出示例

<?php
// 肯定输出数据结构 start
$result_data = [
    'member' => [
        '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顺序基本设想及目次计划

    原文作者:kumfo
    原文地址: https://segmentfault.com/a/1190000008960415
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞