微信扫一扫打赏支持

legend3总结---210101心得

legend3总结---210101心得

一、总结

一句话总结:

 

1、【所有模型对应的特定功能的方法弄一个统一接口(entrance)】?

【所有模型对应的特定功能的方法弄一个统一接口(entrance)】:这样无论是查看方法【复用】还是【修改】都特别方便
entrance对应的方法详情放在entrance同级目录中,比如获取博客题目

 

2、【函数可以返回一个对象出来】?

【函数可以返回一个对象出来】:这样操作过程中的各种错误我们就可以根据返回的结果来写
返回结果就是【键值对】的形式:比如成功:{state:成功;数量:3;操作信息:博客中已经有了}

 

 

3、【各种数据处理操作都交给前端来做】?

【各种数据处理操作都交给前端来做】,这样可以极大的优化服务器性能
【服务端要做的就是从数据库获取数据】

 

4、可以多用【客户端缓存来代替服务器缓存】?

可以多用【客户端缓存来代替服务器缓存】:比如视频的观看位置记录,这样可以非常好的降低服务器压力

 

5、把【程序文档】写出来?

程序不仅要做的【接口一致】,还要把【程序文档】写出来;非常利于修改和开发

 

6、代码敲完一定要有个【代码规整】的过程?

代码敲完一定要有个【代码规整】的过程:一方面优化【统一接口】,一方面【检查bug】,一方面利于【代码格式统一】

 

7、【内容多的部分一定要分小】,而且【名字要取好】?

【内容多的部分一定要分小】,而且【名字要取好】:这样有利于编码效率,有利于修改
一方面是【代码分小】(比如博客分类几千行代码多分几个mixin),一方面是【功能分小】(这个例子太多)

 

8、【优先做最核心的功能】?

【优先做最核心的功能】:比如【显示博客题目】的功能就远没有【智能刷题】功能重要,因为后者着急着用呀

 

9、敲代码一定要【先框架再细节】?

敲代码一定要【先框架再细节】:这样结构清晰,敲的快、出错少,也便于以后看和修改

 

10、【不同的模式用不同的方法和视图】?

【不同的模式用不同的方法和视图】:比如访问模式,在控制器中用专门的方法,在视图中用专门的页面,比在页面中选择判断好1W倍

 

 

11、【千万不要让一个文件中的代码太多】?

【千万不要让一个文件中的代码太多】:应该【按照需求或者功能严格的分好文】件,这样结构就会非常清晰,可以非常方便的提高效率,前端mixin,后端blade

 

12、【敲代码怎么简单怎么来】?

【敲代码怎么简单怎么来】:比如评论,就搞得太复杂了,可以评论和回复分开(考虑),就比较简单了

 

13、【日志很重要】?

【日志很重要】:不需要传出的错误信息是可以保存到日志的,方便查看【程序运行细节】,为格式好看可以【自定义日志】

 

14、【桶】可以非常方便高效的解决从大数据量数组中找数据?

【桶】可以非常方便高效的解决从大数据量数组中找数据:比如无限级分类的准备找某一条数据

 

15、编程给【功能扩展留足空间】?

编程给【功能扩展留足空间】:无论是前端留空间,还是后端功能扩展的设计

 

16、【非核心紧急功能】可以弄个maintain页面【后面再做】?

【非核心紧急功能】可以弄个maintain页面【后面再做】:maintain页面占好位

 

17、函数的函数说明不用特别写?

函数的函数说明不用特别写,可以直接和敲代码一起进行;

 

18、每个组件可以提供一个【interface文件夹】?

每个组件可以提供一个【interface文件夹】,所有外部调用这个组件的方法都可以放入其中

 

19、函数一定要写好函数说明,参数,以及返回值?

方便修改,方便查错,方便设计,方便理清思路,弄好输入(参数)输出(返回值),谁管理里面怎么搞的

 

20、【一些关联的操作,成功了再进行下一步】?

【一些关联的操作,成功了再进行下一步】,比如成功录入博客主体之后才能做录入题目的操作

 

21、【外部调用接口,组件进行封装】?

【外部调用接口,组件进行封装】:组件自成体系,提供一个给外部调用的接口,组件是一个容器,数据什么的往里面装就好

 

22、【可以规整代码的时候解决bug】,这样效率要高很多?

博客收藏一大堆问题,可以格式化代码的时候顺便解决。规整代码的过程逻辑也非常清楚,bug自然就没了。

 

23、【每个存储自成一个整体】?

【每个存储自成一个整体】,外部直接调用存储名即可

 

24、不同的功能用不同的容器,这样可以避免很多错误?

不同的功能用不同的容器,这样可以避免很多错误,减少很多if判断,减少很多数据混杂;比如 分类对应的普通博客 和分类对应的收藏博客

 

25、录入博客逻辑由里到外设计功能(逐步测试)?

录入博客逻辑由里到外设计功能(逐步测试),先录入单篇博客,再一日的博客,再日期段的博客,先文字分析,再和代码对照

 

26、【设计好函数的参数和返回值】?

【设计好函数的参数和返回值】:设计好函数的参数和返回值,函数的功能就特别清晰了,不容易出错,函数参数和返回值,一进一出,谁管你里面在干嘛

 

27、【在够用的情况下,功能设计应该越简单越好】?

【在够用的情况下,功能设计应该越简单越好】:函数返回值不是越复杂越好,看具体需求,够用即可,在够用的情况下,返回值应该越简单越好

 

28、【减少函数依赖】?

【减少函数依赖】:减少函数依赖,方便函数复用

 

29、录入博客逻辑分析实例?

【由里到外设计功能】:由里到外设计功能,先文字分析,在和代码对照。
【把中间结果逐级返回到前端】:录入博客的各个功能的返回结果逐级存储起来,一天的包含录入的各个博客,时间段的包含每天的

 

30、先架构后细节实例、函数注释写在程序中实例、规划好参数和返回值实例?

先架构后细节实例、函数注释写在程序中实例、规划好参数和返回值实例
<?php

namespace App\Model\Home\BlogEntry\LoadBlog;

use Illuminate\Database\Eloquent\Model;

class LoadBlogOneBlog extends Model
{
    //
    /**
     * 通过博客的url来录入博客
     * @param $u_id 用户id
     * @param $blogUrl 博客的url
     * @param $blog_source_type 博客来源类型
     * @param $day_ts 日期段时间错
     * @param int $v_id 博客对应视频id
     * @return array 操作情况数组
     * 返回值情况:
     * 综述:summary:
     *  博客名:博客名1
     *  博客成功题目数量:6
     * 细节:
     *
     */
    public static function loadBlog_byBlogUrl($u_id,$blogUrl,$blog_source_type,$day_ts,$v_id=0){
        $returnObj=[];
        //返回综述
        $returnObj['summary']=[];
        $returnObj['summary']['blog_name']="未知";
        $returnObj['summary']['blog_question_num']=-1;
        $returnObj['summary']['success_question_num']=0;

        //返回情况细节
        $returnObj['detail']=[];


        //第一步:通过博客URL来获取博客数据
        //blogSpider_byBlogUrl
        $step1_success=false;
        $blogContent_str=self::blogSpider_byBlogUrl($blogUrl);
        $blogStr_length=strlen($blogContent_str);
        $returnObj['detail']['1_blogStr_length']=$blogStr_length;
        if($blogStr_length){
            $step1_success=true;
        }

        //第二步:填好【博客表】数据
        //如果第一步成功了,再进行第二步
        $step2_success=false;
        if($step1_success){
            $blog_data=self::fill_Blog_Table($u_id,$blogUrl,$blogContent_str,$v_id);
            if($blog_data){
                $step2_success=true;
                $returnObj['detail']['2_fill_Blog_Table']=true;
            }else{
                $returnObj['detail']['2_fill_Blog_Table']=false;
            }
        }

        return $returnObj;
    }

    /*==================================二、工具函数==================================*/
    //第一步:通过博客URL来获取博客数据
    /**
     * @param $blogUrl 博客的url
     * @return string 爬取到的博客数据
     */
    public static function blogSpider_byBlogUrl($blogUrl){
        $blogContent_str='';
        return $blogContent_str;
    }

    //第二步:填好【博客表】数据


    /**
     * @param $u_id 用户id
     * @param $blogUrl 博客链接
     * @param $blogContent_str 爬虫爬取的博客内容字符串
     * @param int $v_id 视频id
     * @return array 成功返回博客数据,失败时为空数组
     */
    public static function fill_Blog_Table($u_id,$blogUrl,$blogContent_str,$v_id=0){
        $blog_data=[];
        return $blog_data;
    }

}

 

 

31、通过返回对象非常非常好用,还是统一用通用返回对象,也不复杂?

返回通用对象,可以把这个对象 存储起来,返回到前端,【需要判断$state的位置就判断$state,不需要的位置就存储返回的对象】
public $label="";
public $state=0;//状态,1表示成功或者0表示失败
public $operate_num=0;//操作数:操作的成功或者失败数
public $operate_message='';//操作提示信息:就是操作的返回信息
public $data=[];//一些要返回的数据,在各级函数中有数据返回时必须

 

 

32、【编程统一接口会非常方便】?

【编程统一接口会非常方便】:无论是对编程还是对修改,【对编程方便找方法和使用方法】,【对修改极端方便】,而代码肯定是经常修改的

 

33、代码规整之后录入博客就没有bug了?

格式化录入博客操作之后,录入博客的所有问题就方法方便查找,并且好像录入博客也没有bug了,远比之前找错头疼还找不出要好一万倍

 

34、【弄懂原理之后改bug是很简单的】?

【弄懂原理之后改bug是很简单的】:比如知道<a ref="jump_2_blog_area" href="#show_blog_area"></a>点击会跑到#show_blog_area这里,那么为什么手机上点击第一次没有效果的bug就很好解决了,因为元素没显示

 

35、【核心规则:代码规整先大纲后细节】?

【核心规则:代码规整先大纲后细节】:先文件夹,先方法骨架,后细节。骨架则是函数输入(参数)输出(返回值);后细节则是搭好骨架再管细节。画画也是先骨架后细节呀。

 

36、?

 

37、?

 

38、?

 

39、?

 

40、?

 

41、?

 

42、?

 

43、?

 

44、?

 

45、?

 

46、?

 

47、?

 

48、?

 

49、?

 

50、?

 

二、legend3总结

 

posted @ 2021-03-12 22:22  范仁义  阅读(66)  评论(0编辑  收藏  举报