🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 设计模式 > * 单一入口; > * 根目录只处理静态资源和入口; > * 目录权限(777只允许存在public和retime目录) > * **强制遵循MVC或者MVSC模式(不容许脱离此结构)** > * 模块化时应当尽量独立,切勿太过依赖 > * 切勿过度封装,应当尽量还原本质 > * 应当遵循面向对象思想,切勿搞流水战; > * 尽可能使用:工厂模式,管道模式,链式,单例模式, > * 打开必须要有关闭(比如打开文件) > * 尽可能在定义变量,返回值之前知道返回类型(遵循强类型的思想) > * 流程应当清晰可见,而不是强制美化,缩简代码;这样只会起反作用 > * 大多数情况下你所写的应当是开放式(不指:private、public、protected)的,而非私有的 > * **非必要情况下尽量不使用 $_GET $_POST 之类的全局用户输入变量,使用时必须进行安全校验** > * **严禁直接使用include和require引入文件,如有需要请使用composer引入 ,或者命名空间** > * **命名空间遵循自动加载标准,具体请自行百度,保持目录跟命名空间是匹配的** > * 资源回收机制 ## 数据库 > * 数据表的设计大多数时候应该是横向的,而非纵向的;纵向表内容不能超过1000; > * 数据表的名字应该是清晰可见的,分组明确的, > * **统一使用 utf8mb4 编码**; > * **统一使用尽可能的使用 InnoDB 引擎**; > * 设计结构尽可能遵循函数设计规范,一表一事,而不是不断堆砌字段, > * join 不能超过 **5** 个表 > * **必须过滤查询字段,不能使用 * 代替,除非这是确定的** > * **列表查询应当习惯性的加上排序,提高用户体验度** > * **应该尽可能 放弃 varchar 而使用 char** > * 减少大内容存储字段 > * **时间必须使用 int(10) 储存** > * 适当考虑位元算存储方式 > * **减少使用 通配符 、 IN 及 子查询** > * 开发结束后,必须针对SQL查询语句的条件语句部分(where)添加索引,须匹配多个条件的应该使用聚合索引。 索引的组成应由左至右匹配条件语句的顺序。 > * 严禁盲目添加索引,避免减慢数据插入的速度、增大占用空间及减慢查询速度。 > * 数据库的设计必须符合三个范式(极端要求常用高速时考虑单独设置记录表除外) > * 能力不足的情况下尽量不要去搞触发器 > * **每个字段及表必须注明作用**; ## 数据库三个范式(具体请自行百度) > * 当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要 求,否则,将有很多基本操作在这样的关系模式中实现不了。 > * 如果关系模式R满足第一范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。 > * 设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.