项目代码规范

Web端代码规范

Vue项目代码规范

一、命名规范

1、项目名 全部采用小驼峰命名式,例:camelCase(小驼峰式命名法 —— 首字母小写)
2、目录名 参照项目命名规则,有复数结构时,要采用复数命名法。例:docs、assets、components、directives、mixins、utils、views。
3、图像文件名 全部采用小写方式, 优先选择单个单词命名,多个单词命名以下划线分隔
4、Vue 组件命名
1)单文件组件名 文件扩展名为 .vue 的 single-file components (单文件组件)。单文件组件名应该始终是单词大写开头(PascalCase)。
2)单例组件名 只拥有单个活跃实例的组件应该以 The 前缀命名,以示其唯一性。这不意味着组件只可用于一个单页面,而是每个页面只使用一次。这些组件永远不接受任何 prop,因为它们是为你的应用定制的。如果你发现有必要添加 prop,那就表明这实际上是一个可复用的组件,只是目前在每个页面里只使用一次。比如,头部和侧边栏组件几乎在每个页面都会使用,不接受 prop,该组件是专门为该应用所定制的。
3)基础组件名 基础组件:不包含业务,独立、具体功能的基础组件,比如日期选择器、模态框等。这类组件作为项目的基础控件,会被大量使用,因此组件的 API 进行过高强度的抽象,可以通过不同配置实现不同的功能。应用特定样式和约定的基础组件(也就是展示类的、无逻辑的或无状态、不掺杂业务逻辑的组件) 应该全部以一个特定的前缀开头 —— Base。基础组件在一个页面内可使用多次,在不同页面内也可复用,是高可复用组件。
4)业务组件 业务组件:它不像基础组件只包含某个功能,而是在业务中被多个页面复用的(具有可复用性),它与基础组件的区别是,业务组件只在当前项目中会用到,不具有通用性,而且会包含一些业务,比如数据请求;而基础组件不含业务,在任何项目中都可以使用,功能单一,比如一个具有数据校验功能的输入框。掺杂了复杂业务的组件(拥有自身 data、prop 的相关处理)即业务组件应该以 Custom 前缀命名。业务组件在一个页面内比如:某个页面内有一个卡片列表,而样式和逻辑跟业务紧密相关的卡片就是业务组件。
5、id和class的命名原则 应反映该元素的功能或使用通用名称,而不要用抽象的晦涩的命名(原则:见名知其义)
6、命名嵌套问题 书写css要注意先后顺序和嵌套问题,从性能上考虑尽量减少选择器的层级
7、命名中尽量避免使用中文拼音,应该采用更简明有语义的英文单词进行组合

代码格式

1、使用 ES6 风格编码 定义变量使用 let ,定义常量使用 const,静态字符串一律使用单引号或反引号,动态字符串使用反引号
2、如果模块只有一个输出值,就使用 export default,如果模块有多个输出值,就不使用 export default,export default 与普通的 export 不要同时使用
3、指令有缩写一律采用缩写形式
4、v-for 循环必须加上 key 属性,在整个 for 循环中 key 需要唯一,避免 v-if 和 v-for 同时用在一个元素上(性能问题)
5、函数命名
普通函数:首字母小写,驼峰式命名,统一使用动词或者动词+名词形式 例如:fnGetVersion(),fnSubmitForm(),fnInit();涉及返回逻辑值的函数可以使用is,has,contains等表示逻辑的词语代替动词,例如:fnIsObject(),fnHasClass(),fnContainsElment()。
6、内部函数:使用_fn+动词+名词形式,内部函数必需在函数最后定义。
7、对象方法与事件响应函数:对象方法命名使用fn+对象类名+动词+名词形式 例如: fnAddressGetEmail(),
8、事件响应函数:fn+触发事件对象名+事件名或者模块名 例如:fnDivClick(),fnAddressSubmitButtonClick()
9、元素嵌套规范,每个块状元素独立一行,内联元素可选。

关于第六点做示例如下:

function fnGetNumber(nTotal) {if (nTotal < 100) {nTotal = 100;}return _fnAdd(nTotal);function _fnAdd(nNumber) {nNumber++;return nNumber;}
}
alert(fGetNumber(10)); //alert 101

App端代码规范

uniapp代码规范

一、基本语言和开发规范

uni-app代码编写,基本语言包括js、vue、css。以及ts、scss等css预编译器。命名采用小驼峰命名法
在app端,还支持原生渲染的nvue,以及可以编译为kotlin和swift的uts。
DCloud还提供了使用js编写服务器代码的uniCloud云引擎。所以只需掌握js,你可以开发web、Android、iOS、各家小程序以及服务器等全栈应用。
为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范:
页面文件遵循 Vue 单文件组件 (SFC) 规范,即每个页面是一个.vue文件
接口能力(JS API)靠近小程序规范,但需将前缀 wx、my 等替换为 uni。
数据绑定及事件处理同 Vue.js 规范,同时补充了应用生命周期及页面的生命周期
如需兼容app-nvue平台,建议使用flex布局进行开发。

逻辑层和渲染层分离

在web平台,逻辑层(js)和渲染层(html、css),都运行在统一的webview里。
但在小程序和app端,逻辑层和渲染层被分离了。
分离的核心原因是性能。过去很多开发者吐槽基于webview的app性能不佳,很大原因是js运算和界面渲染抢资源导致的卡顿。
不管小程序还是app,逻辑层都独立为了单独的js引擎,渲染层仍然是webview(app上也支持纯原生渲染)。
所以注意小程序和app的逻辑层都不支持浏览器专用的window、dom等API。app只能在渲染层操作window、dom,即renderjs。

三、页面代码规范介绍

uni-app 支持在 template 模板中嵌套 和 ,用来进行 列表渲染 和 条件渲染。
和 并不是一个组件,它们仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。
在不同的平台表现存在一定差异,推荐统一使用 。
代码示例:

<template><view><template v-if="test"><view>test 为 true 时显示</view></template><template v-else><view>test 为 false 时显示</view></template></view>
</template>
<template><view><block v-for="(item,index) in list" :key="index"><view>{{item}} - {{index}}</view></block></view>
</template>

static 目录下的 js 文件不会被编译,如果里面有 es6 的代码,不经过转换直接运行,在手机设备上会报错。
css、less/scss 等资源同样不要放在 static 目录下,建议这些公用的资源放在 common 目录下。
HbuilderX 1.9.0+ 支持在根目录创建 ext.json sitemap.json 文件。

四、JavaScript语法

uni-app的js API由标准ECMAScript的js API 和 uni 扩展 API 这两部分组成,uni-app基于ECMAScript扩展了uni对象,并且API命名与小程序保持兼容。uni-app 在支持绝大部分 ES6 API 的同时,也支持了 ES7 的 await/async。

五、CSS语法

uni-app的css与web的css基本一致,支持通用css单位包括:px(屏幕像素)、rpx(响应式px)。
注意:rpx 是和宽度相关的单位,屏幕越宽,该值实际像素越大。如不想根据屏幕宽度缩放,则应该使用 px 单位;如果开发者在字体或高度中也使用了 rpx ,那么需注意这样的写法意味着随着屏幕变宽,字体会变大、高度会变大。如果你需要固定高度,则应该使用 px 。

后端代码规范

java代码规范

一、命名规范1.包名的命名

包名全部小写,连续的单词直接连接,不出现特殊符号,不使用下划线,包名中不要出现很容易区分供应商的信息
参考示例:
一级包名为com
二级包名为tesla
三级包名为应用名称:如launcher、weather等
四级包名为模块名或层级名:如工具类为util、Activity类为activity
例如:com.tesla.launcher.activity
2.类的命名
采用大驼峰式命名法,每个单词的首字母大写。尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。例外注意命令时,区分各个组件类型。
参考示例:MainMenuActivity、SoftwareUpdateService等
3.方法(函数)命名
使用动词或动名词,采用小驼峰命名法。
参考示例:onCreate();
4.接口命名
命名规则与类一样采用命名规则与类一样采用大驼峰命名法,多以able或ible结尾
参考示例:Runnable
5.变量命名
A.成员变量和临时变量命名:采用小驼峰命名法,第一个单词首字母小写其它单词首字母大写。
参考示例:private String userName;
B.常量命名:常量使用全大写字母加下划线的方式命名,并且用final static修饰。
参考示例:private final static String TAG = “tag”;
C.控件实例命名:采用小写字母加下划线方式命名,类中控件名称必须与xml布局id保持一致。
参考示例:android:id=”@+id/tv_pic_brightness_value”则对应调用的Activity中定义该控件为 private TextView tv_pic_brightness_value;
6。res资源文件命名
A.布局文件命名规范:全部采用小写,采用下划线命名法。其中{module_name}为业务模块或功能模块等模块化的名称或简称。
activity layout:{module_name}activity{名称} 例如:
channel_activity_programedit.xml
fragment layout:{module_name}fragment{名称} 例如:
weather_fragment_cityset.xml
dialog layout:{module_name}dialog{名称} 例如:
channel_dialog_rename.xml
list layout:{module_name}list{名称} 例如:
channel_list_programeedit.xml
adapter layout:{module_name}item{名称} 例如:
channel_item_programedit.xml
widget layout:{module_name}widget{名称} 例如:
weather_widget_todayinfo.xml
B.图片文件命名规范
背景图片:{module_name}_名称_bg.png
图标:{module_name}名称_icon.png
C.字符串和字符串数组命名规范
字符串:str
{module_name}名称
字符串数组:strarr{module_name}名称
其它资源如color、dimens等类似如上命名方式:
如color{module_name}_名称

二、代码编写风格

2.1方法和类的长度
为便于阅读和理解,单个函数的有效代码长度当尽量控制在 100 行以内(不包括注释行),当一个功能模块过大时往往造成阅读困难,因此当使用子函数等将相应功能抽取出来,这也有利于提高代码的重用度。
单个类也不宜过大,当出现此类情况时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过 1500 行。尽量避免使用大类和长方法。
2.2间隔问题
类、方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。
操作符两端应当各空一个字符以增加可读性。相应独立的功能模块之间可使用注释行间隔,并标明相应内容。
2.4 控制语句
判断中如有常量,则应将常量置与判断式的右侧。如:

if ( true == isAdmin())...
if ( null == user)...

尽量不使用三目条件判断。
所有 if 语句必须用{}包括起来,即便是只有一句
2.5 循环调节
循环中必须有终止循环的条件或语句,避免死循环。当在 for 语句的初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致复杂度提高。若需要,可以在 for 循环之前(为初始化子句)或 for 循环末尾(为更新子句)使用单独的语句。因为循环条件在每次循环中多会执行一次,故尽量避免在其中调用耗时或费资源的操作。
2.6 异常的捕捉和处理
捕捉异常是为了处理它,不要捕捉了却什么都不处理而抛弃,最低限度当向控制台输出当前异常,如果你不想处理它,请将该异常抛给它的调用者,建议对每个捕捉到的异常都调用
printStackTrace()输出异常信息,避免因异常的湮没。多个异常应分别捕捉并处理,避免使用一个单一的 catch 来处理。

三、注释说明

3.1文件注释内容
版权说明、描述信息、生成日期、修改记录、作者、生成日期,格式如下:
/**
Copyright © 2015ktc. All rights reserved.
@Title: LogcatUtil.java
@Description: 调试信息工具文件
@author: shan.zhang
@date: 2015-6-4
@modifier:
@version: V1.0
/
3.2类和接口的注释
类功能描述、作者、生成日期
/*
@ClassName: LogcatUtil
@Description: 用于程序中调试信息输出的工具类
@author: shan.zhang
@date: 2015-6-4
/
3.3方法注释
功能描述、输入参数、返回值
/*
*
@Title: getInstance
@Description: 调试工具类实例获取方法
@return: LogcatUtil
/
public static LogcatUtil getInstance() {
if(null == mLogcatUtil) {
mLogcatUtil = new LogcatUtil();
}
return mLogcatUtil;
}
3.4成员变量、常量注释
对应的功能定义
/*
是否输出打印信息开关
true:输出打印信息
false:不输出打印信息
/
private final static boolean DEBUG_ENABLE = false;
/*
默认输出log信息的Tag标识
*/
private final static String DEBUG_TAG = “k_debug”;

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

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

相关文章

J-LINK J-FLASH 下载STM32单片机程序使用教程

J-LINK J-FLASH 下载STM32单片机程序使用教程 Chapter1 J-LINK J-FLASH 下载STM32单片机程序使用教程1.安装提供的 JLINK驱动程序2. 点击打开 J-Flash V7.223.点击 create a new project.&#xff08;使用后可以在软件菜单File保存这个烧写工程&#xff0c;后续直接打开使用即可…

SHAP(四):NHANES I 生存模型

SHAP&#xff08;四&#xff09;&#xff1a;NHANES I 生存模型 这是一个 Cox 比例风险模型&#xff0c;基于来自 NHANES I 的数据以及来自 NHANES I 流行病学随访研究。 它旨在说明 SHAP 值如何能够以传统上仅由线性模型提供的清晰度解释 XGBoost 模型。 我们在数据中看到有趣…

Spring---Bean的作用域和生命周期

文章目录 Bean的作用域Bean的六种作用域设置Bean的作用域 Bean的生命周期Bean&#xff08;Spring&#xff09;的执行流程Bean的生命周期 Bean的作用域 我们通过一个例子来认识 Bean 的作用域&#xff1a; 假设现在有一个公共的 Bean 对象提供给用户A和用户B使用&#xff0c;然…

第9课 任务创建、删除和API函数

第9课 任务创建、删除和API函数 任务创建和删除本质是调用FreeRTOS的API函数 API函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务xTaskDelete()删除任务 动态创建任务&#xff1a; 任务的任务控制块以及任务的栈空间所需的内存&#xff0c;均由…

JOSEF约瑟时间继电器ARTD-DC110V-2H2D 0.25-2.5s导轨安装

ARTD系列断电延时继电器&#xff1a; ARTD-220VDC-1H1D断电延时继电器&#xff1b;ARTD-220VDC-2H断电延时继电器&#xff1b; ARTD-220VDC-2H2D断电延时继电器&#xff1b;ARTD-220VDC-4H断电延时继电器&#xff1b; ARTD-110VDC-1H1D断电延时继电器&#xff1b;ARTD-110VD…

SSM框架(四):SSM整合 案例 + 异常处理器 +拦截器

文章目录 一、整合流程图1.1 Spring整合Mybatis1.2 Spring整合SpringMVC 二、表现层数据封装2.1 问题引出2.2 统一返回结果数据格式 代码设计 三、异常处理器3.1 概述3.2 异常处理方案 四、前端五、拦截器5.1 概念5.2 入门案例5.3 拦截器参数5.4 拦截器链 一、整合流程图 1.1 S…

本科毕业生个人简历23篇

刚毕业的本科生如何制作一份令招聘方印象深刻的简历&#xff1f;可以参考以下这23篇精选的本科毕业生应聘简历案例&#xff01;无论您的专业是什么&#xff0c;都能从中汲取灵感&#xff0c;提升简历质量&#xff0c;轻松斩获心仪职位&#xff01;小伙伴们快来看看吧&#xff0…

代理模式简单demo(java)

1、背景 mybatis中使用了大量的代理模式&#xff0c;如果了解了代理的使用&#xff0c;可能会对阅读mybatis源码有事半功倍的效果。所以在空闲的时候整理了下java常见的代理和使用demo。 2、关键点介绍 代理模式本质上的目的是为了增强现有代码的功能&#xff0c;其分为静态…

在qt5中使用XShapeCombineRectangles编译报错

linux x11环境中&#xff0c;在qt5中使用XShapeCombineRectangles去实现鼠标穿透 引用了两个头文件&#xff1a; #include <QX11Info> #include <X11/extensions/shape.h>编译的时候会报错&#xff1a; Desktop_Qt_5_12_12_GCC_64bit-Debug/moc_mainwindow.cpp:8…

等保之道:从基础出发,解密网站防护的重要性

随着数字化时代的推进&#xff0c;网站安全问题日益凸显。网站被攻击不仅会导致信息泄漏、服务中断&#xff0c;还可能损害用户信任和企业声誉。为了更好地解决这一问题&#xff0c;我们需从等保的角度审视网站防护&#xff0c;全面提升网络安全水平。 等保背景 等保&#xff0…

C++作业4

代码整理&#xff0c; 将学过的三种运算符重载&#xff0c;每个至少实现一个运算符的重载 代码&#xff1a; #include <iostream>using namespace std;class Stu {friend const Stu operator*(const Stu &L,const Stu &R);friend bool operator<(const Stu …

抓取检测(Grasp Dection)

抓取检测 抓取检测被定义为能够识别任何给定图像中物体的抓取点或抓取姿势。抓取策略应确保对新物体的稳定性、任务兼容性和适应性&#xff0c;抓取质量可通过物体上接触点的位置和手的配置来测量。为了掌握一个新的对象&#xff0c;完成以下任务&#xff0c;有分析方法和经验…

智慧工地一体化解决方案(里程碑管理)源码

智慧工地为管理人员提供及时、高效、优质的远程管理服务&#xff0c;提升安全管理水平&#xff0c;确保施工安全提高施工质量。实现对人、机、料、法、环的全方位实时监控&#xff0c;变被动“监督”为主动“监控”。 一、建设背景 施工现场有数量多、分布广&#xff0c;总部统…

Woocommerce Private Store私人商店秘密商城插件,适合批发商店,会员制俱乐部

点击访问原文Woocommerce Private Store私人商店秘密商城插件&#xff0c;适合批发商店&#xff0c;会员制俱乐部 - 易服客工作室 WooCommerce Private Store插件是使 WooCommerce 私有的简单方法。密码保护您的整个 WooCommerce 商店并使其隐藏。 非常适合批发商店、会员制俱…

vue 根据动态生成的form表单的整体的数据回显,赋值及校验和提交

主要负责处理表单数据的展示、编辑和提交&#xff0c;以及与后端接口的交互。&#xff08;处理选择地址、处理单选框选中、设置表单验证、提交表单、校验文件是否上传完成、处理上传文件等&#xff09; 公共调用方法mixins文件 import HCommonPop from "/components/comm…

面试就是这么简单,offer拿到手软(二)—— 常见65道非技术面试问题

面试系列&#xff1a; 面试就是这么简单&#xff0c;offer拿到手软&#xff08;一&#xff09;—— 常见非技术问题回答思路 面试就是这么简单&#xff0c;offer拿到手软&#xff08;二&#xff09;—— 常见65道非技术面试问题 文章目录 一、前言二、常见65道非技术面试问题…

九、FreeRTOS之FreeRTOS列表和列表项

本节需要掌握以下内容&#xff1a; 1&#xff0c;列表和列表项的简介&#xff08;熟悉&#xff09; 2&#xff0c;列表相关API函数介绍&#xff08;掌握&#xff09; 3&#xff0c;列表项的插入和删除实验&#xff08;掌握&#xff09; 4&#xff0c;课堂总结&#xff08;掌…

微前端qiankun示例 Umi3.5

主应用配置&#xff08;基座&#xff09; 安装包 npm i umijs/plugin-qiankun -D 配置 qiankun 开启 {"private": true,"scripts": {"start": "umi dev","build": "umi build","postinstall": "…

L1-012:计算指数

⭐题目描述⭐ 真的没骗你&#xff0c;这道才是简单题 —— 对任意给定的不超过 10 的正整数 n&#xff0c;要求你输出 2n。不难吧&#xff1f; 输入格式&#xff1a; 输入在一行中给出一个不超过 10 的正整数 n。 输出格式&#xff1a; 在一行中按照格式 2^n 计算结果 输出 2n…

Nacos多数据源插件

Nacos从2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件.本文档详细介绍一个多数据源插件如何实现以及如何使其生效。 注意:…