项目开发中的自我总结

最近忙的要死,因为新开发了两个项目.现在已经测试完毕了,准备部署到线上了.

然后不能白忙活吧,忙活完也得写点总结和经验吧,以后也有个记录.

1.一个bootstrap+jquery+layui+laravel 5.4开发的一个后台系统 比较朴素

2.一个前后端分离的vue+laravel 5.4 开发的商家系统 我只负责后端接口的开发和接口文档的编写

总结一下经验吧:

1.数据表的设计

a.设计字段的时候 要尽量把字段都设为not null,这样int类型不给默认值默认为0 string类型 不给默认值默认为'';因为如果字段为null 索引会失效,还有其他各种问题

b.int类型的没有特殊需求 加上unsigned;每个字段都加上commit 以防止3个月后自己也忘了这个字段是啥意思,更方便将来项目别人看代码 接收的便利性

c.数据表设为innodb 因为现在myisam有的性能 基本上innodb也都有了,而且如果将来用到事务 是只能用innodb的

d.设计数据表的时候要 尽量满足第三范式,但是有些字段如果经常查询用到,但是又要连表查询,会很复杂与费时间,那么就可以重复出现

2.接口文档的编写

a.如果涉及到前后端分离项目 或者是多个项目之间的对接(服务端 管理端 商家端等),那么就一定要编写接口文档,方便开发后和后期维护

b.接口文档的编写内容示例

在文档的开始部分要编写 版本修订信息 和 注意事项

包括 接口地址 请求参数 返回参数  即时返回参数的code返回码 还有请求参数和返回参数的json 样例数据(因为这样可以更好的体现数据的结构,便于开发与理解)

附一张支付宝接口文档的图 按这个来编写自己的接口文档即可

其中返回的结果中要有code返回码 和 msg说明 和 解决方案

 

如果有修改接口 也要及时修改 接口文档

3.在代码中常用部分的处理

在代码中 有些数据是公用的,会有很多地方用到 比如 某些目录的路径 当前服务器的ip和端口号 分页每页显示几条的配置  rsa接口公私钥的配置等等等;

如果我们不把它们拆出来 在很多地方都会用到 会有造成复用的,然后将来如果这个配置参数要发生修改,那么要改的地方又有太多了,很繁琐;

那么我们就可以把它们拆分出来放在

1.配置文件中

关于配置文件的使用可以 看我的这个博客:

https://www.cnblogs.com/djwhome/p/9176423.html

https://www.cnblogs.com/djwhome/p/9165855.html

2.数据库中

数据库的话我们可以建一个常用配置信息表,然后里面存放我们的各种配置信息

4.关于代码的复用性

在开发的时候 我们要写很多代码,那么就会出现很多会复用的代码;

比如我们要查询一条数据的具体信息,这个信息里有很多的其他字段时我们其他地方 再查询

 这样我们就可以把它封装成为一个方法,

a.如果是想起他类中也调用 封装成静态公共方法

这样在其他地方需要用到同样的功能的时候,就可以直接调用,减少了开发成本与加强了代码的逻辑性

b.在封装代码的时候,我们希望代码的粒度越小越好,能拆分出来的,尽量都拆分出来,这样将来的代码就可以像乐高一样 由许多的小单元,可以拼成摩天大楼

c.还有在在开发的时候 遵循mvc的思想,尽量把和数据库增删改查的逻辑放到model层,把和业务逻辑的代码放到controller层,把和视图渲染 展示的代码放到view层,尽量做到各个层都只处理自己的业务逻辑,做到分工明确,有利于代码的查看和再次开发

5.日志的使用

a.在所有优秀的系统中,都有一个日志系统,比如咱们开发者最常用的错误日志,用来记录一些 代码运行中的重要的信息;

b.日志里可以记录我们一些重要的接口数据信息,一些重要操作的执行结果(成功还是失败 失败的原因);这样将来一些错误信息我们可以从日志中查出来,方便开发;

 

转载于:https://www.cnblogs.com/djwhome/p/9365326.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组黑科技(偏性能方面)未完待更新...

数组去重最优解:Array.prototype.unique function () {var tmp new Map();return this.filter(item > {return !tmp.has(item) && tmp.set(item,1);})}搭配使用 Array.from(foo); // ["f", "o", "o"]let s new Set([f…

控制台添加log4net

1.添加nuget包 log4net 2.app.config配置 <?xml version"1.0" encoding"utf-8"?> <configuration> <configSections><section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler, log4net&quo…

touchWX 自定义组件以及传值

创建如图文件 index.wxc: <template><view class"wx-test" bindtap"handleTap">{{ msg }}{{dataIndex}}</view> </template> <script>export default {properties: {dataIndex: {type: String,value: default value,}},data…

vue 初始框架

VueJs讲解初始框架 一、启动项目 第一步&#xff1a;cmd进入项目文件里&#xff0c;运行npm run dev 启动项目 这里说明启动端口号是8080 第二步&#xff1a;往页面输入&#xff1a;localhost:8080 二、解析渲染步骤 先看整体框架样式和index.html&#xff1a; 从上面我…

Country Road Aizu - 2104

题目链接&#xff1a; https://vjudge.net/problem/Aizu-2104 题解&#xff1a; 咋说啊&#xff0c;一言难尽&#xff0c;花了半小时写出来的&#xff0c;卡了十分钟才恍然大明白是排序。 具体就是让每个村子都通上电&#xff0c;变压器在的村子&#xff0c;与变压器连线点线长…

IdentityServer4【QuickStart】之使用asp.net core Identity

使用asp.net core Identity IdentityServer灵活的设计中有一部分是可以将你的用户和他们的数据保存到数据库中的。如果你以一个新的用户数据库开始&#xff0c;那么&#xff0c;asp.net core Identity是一个选择。这个示例演示了如何在IdentityServer中使用asp.net core Ientit…

vue demo1

1.开发工具 试过sublime&#xff0c;现在转战vscode&#xff0c;觉得很顺手&#xff0c;总之啥工具习惯就好。 vscode用着不错的插件&#xff0c;推荐安装。 2.项目目录介绍 vue-cli生成的项目目录有点多&#xff0c;初看有点懵&#xff0c;梳理一下会好很多。 ├── ind…

CentOS下防御或减轻DDoS攻击方法(转)

查看攻击IP 首先使用以下代码&#xff0c;找出攻击者IP netstat -ntu | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -n 将会得出类似如下的结果&#xff1a; 1 114.226.9.132 1 174.129.237.157 1 58.60.118.142 1 Address 1 servers) 2 118.26.131.78 3 123.125.1…

vscode - 添加背景图片

首先&#xff0c;CtrlShiftP安装backround &#xff0c; 而后重启vscode会有默认的背景图片 修改背景图&#xff0c;可自定义三张 具体请看gif图 最开始时&#xff0c;发现png根本不是全透明&#xff0c;用ps处理了一下&#xff08;下列所有操作均字母组合&#xff09; 1.1 Ctr…

关于Vue.use()详解

问题 相信很多人在用Vue使用别人的组件时&#xff0c;会用到 Vue.use() 。例如&#xff1a;Vue.use(VueRouter)、Vue.use(MintUI)。但是用 axios时&#xff0c;就不需要用 Vue.use(axios)&#xff0c;就能直接使用。那这是为什么呐&#xff1f; 答案 因为 axios 没有 install。…

分布式工具的一次小升级⏫

前言 之前在做 秒杀架构实践 时有提到对 distributed-redis-tool 的一次小升级&#xff0c;但是没有细说。 其实主要原因是&#xff1a; 秒杀时我做压测&#xff1a;由于集成了这个限流组件&#xff0c;并发又比较大&#xff0c;所以导致连接、断开 Redis 非常频繁。 最终导致获…

浅谈vue $mount()

Vue 的$mount()为手动挂载&#xff0c;在项目中可用于延时挂载&#xff08;例如在挂载之前要进行一些其他操作、判断等&#xff09;&#xff0c;之后要手动挂载上。new Vue时&#xff0c;el和$mount并没有本质上的不同。 具体见代码&#xff1a; 顺便附上vue渲染机制流程图&a…

论一个程序员的自我修养-从一张图片说起

故事起源 本来今天想写.NET Core实战之CMS系统第十五篇文章的。哈&#xff0c;奈何今天在新生命人脉群里面看到石头哥分享的一张图片&#xff0c;然后大家就议论了起来&#xff0c;不过我看的很懵逼&#xff0c;这图什么意思啊&#xff1f;当一个朋友讲述了这个图片背后的故事的…

c/c++ 继承与多态 文本查询的小例子(非智能指针版本)

问题&#xff1a;在上一篇继承与多态 文本查询的小例子&#xff08;智能指针版本&#xff09;在Query类里使用的是智能指针&#xff0c;只把智能指针换成普通的指针&#xff0c;并不添加拷贝构造方法&#xff0c;会发生什么呢&#xff1f; 执行时&#xff0c;代码崩掉。 分析下…

HTML渲染过程详解

由于本人对http协议以及dns对url的解析问题并不了解&#xff0c;所以这里之探讨url请求加载到浏览器端时&#xff0c;浏览器对html的解析到呈现过程&#xff0c;后来经过几位道友分享&#xff0c;整理了一下url解析的过程&#xff0c;如下&#xff1a; 用户输入url地址&#x…

vue之router-view组件的使用

开发的时候有时候会遇到一种情况&#xff0c;比如 &#xff1a;点击这个链接跳转到其他组件的情况&#xff0c;通常会跳转到新的页面&#xff0c;蛋是&#xff0c;我们不想跳转到新页面&#xff0c;只在当前页面切换着显示&#xff0c;那么就要涉及到路由的嵌套了&#xff0c;也…

go 区分指针

先看一段代码 先放一段代码&#xff0c;人工运行一下&#xff0c;看看自己能做对几题&#xff1f; package mainimport "fmt"func main() {var a int 1 var b *int &a var c **int &b var x int *b fmt.Println("a ",a) fmt.Println("&a…

ajax和axios、fetch的区别

1.jQuery ajax $.ajax({type: POST,url: url,data: data,dataType: dataType,success: function () {},error: function () {} });传统 Ajax 指的是 XMLHttpRequest&#xff08;XHR&#xff09;&#xff0c; 最早出现的发送后端请求技术&#xff0c;隶属于原始js中&#xff0c…

函数函数sigaction、signal

函数函数sigaction 1. 函数sigaction原型&#xff1a; int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 分析&#xff1a; 参数 signum &#xff1a;要捕获的信号。参数act&#xff1a;truct sigaction 结构体&#xff0c;后面具体讲解传入…

关于固件

固件(Firmware)就是写入EROM或EPROM(可编程只读存储器)中的程序&#xff0c;通俗的理解就是“固化的软件”&#xff0c;台港澳称为“韧体”。更简单的说&#xff0c;固件就是BIOS的软件&#xff0c;但又与普通软件完全不同&#xff0c;它是固化在集成电路内部的程序代码&#x…