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总结