2012-11-08随笔,关于代码严谨性、编写的优雅性

本文通过具体实例探讨了编程中代码组织的重要性,强调了从传递值获取到视图渲染的六大步骤,并对比了两种不同的代码实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天又被老大训了一顿!
主要是因为代码写的不够严谨。
写代码要从
 
传递值的获取,
数据校验,
变量初始,
数据获取,
逻辑处理,
视图渲染。

而数据获取又可以封装在模型中,当然,筛选值构建也可以放在模型中。

如果一个方法动作能这样块状的编写,是很优雅的!
举个例子:
遵循上面的方式:
        $user_id = (int) UxHttpRequest::get('user_id');

        if (!$user_id) {
            $this->message = '没有选择商家,请返回重试!';
            $this->index();
            exit;
        }

        $model = new DealerAgentBusiness();
        $dealer_model = new Dealer();
        $category_model = new AgentBusinessCategory();
     $dealer = $dealer_model->getOne('id=' . $user_id);
$where = $model->getSearchCondition(); //获取搜索框查询条件 $where .= ' AND user_id=' . $user_id;
     $dealer_agent_businesses
= $model->getAll($where, '', 'status', 'DESC'); //获取当前商家已有的所有业务ID $delaer_category_ids = array(); $ids_tmp = $model->getAll('user_id =' . $user_id, 'category_id'); foreach ($ids_tmp as $key => $v) { $delaer_category_ids[] = $v['category_id']; } $id_string = implode(',', $delaer_category_ids); $id_string = empty($id_string) ? 0 : $id_string; $where = 'status = 1 AND id not in(' . $id_string . ')'; $agent_business_category_list = $category_model->getAll($where); $this->render('view', array( 'dealer' => $dealer, 'dealer_agent_businesses' => $dealer_agent_businesses, 'agent_business_category_list' => $agent_business_category_list ));

 

对应的某模型数据处理写在一块。

        $user_id = (int) UxHttpRequest::get('user_id');

        if (!$user_id) {
            $this->message = '没有选择商家,请返回重试!';
            $this->index();
            exit;
        }

        $model = new DealerAgentBusiness();
        //获取当前商家已有的所有业务ID
        $delaer_category_ids = array();
        $ids_tmp = $model->getAll('user_id =' . $user_id, 'category_id');
        foreach ($ids_tmp as $key => $v) {
            $delaer_category_ids[] = $v['category_id'];
        }
        
        $dealer_model = new Dealer();
     //获取搜索框查询条件
        $where = '1=1';
        $where .= isset($data['is_dtd']) ? ' AND is_dtd=' . (int) $data['is_dtd'] : '';
        $where .= isset($data['status']) ? ' AND status=' . (int) $data['status'] : '';
$where .= ' AND user_id=' . $user_id; $dealer = $dealer_model->getOne('id=' . $user_id); $dealer_agent_businesses = $model->getAll($where, '', 'status', 'DESC'); $category_model = new AgentBusinessCategory(); $id_string = implode(',', $delaer_category_ids); $id_string = empty($id_string) ? 0 : $id_string; $where = 'status = 1 AND id not in(' . $id_string . ')'; $agent_business_category_list = $category_model->getAll($where);      $this->render('view', array( 'dealer' => $dealer, 'dealer_agent_businesses' => $dealer_agent_businesses, 'agent_business_category_list' => $agent_business_category_list ));

 

两种方式有两种方式的好处,不错冲感官逻辑上来说,第一种比较有条例性和规范性。
就如写八股文一样,破题、承题、起讲、入手、起股、中股、后股、束股。一步一步来,乱不了!


当然 还需要缩进,缩进能是一小段代码成块,便也阅读。注释也是必须的!
难免会遇到自己回来看代码看不懂的时候。

今天又做了些浪费时间的事,有句话说,预谋其事,先利其器。人啊,就是不长记性!
自己花时间写了半天的函数,原来类库中早就有了!


嗯,不过今天心情不错!


今天还收获一句话:程序员看程序员的代码、作品,会不满意。
程序员写给客户的代码,就算再搓功能再弱小。只要能满足客户的要求,就是好的!

呵呵、要看开、要看开!


 

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值