江湖开发平台代码规范
120021、为什么要对代码进行规范
不进行代码规范会造成的情况
- 可读性差: 缺乏规范的代码难以阅读和理解,增加了维护和修改的困难度,尤其对于团队合作来说,统一的规范可以提高代码的可读性。
- 维护困难: 缺少规范会导致代码结构混乱、命名不一致、风格不统一,使得代码的维护变得复杂和困难。
- 代码质量低: 不遵循规范可能会导致代码冗余、重复、难以扩展和测试。代码可能会存在逻辑错误、性能问题和安全隐患。
- 可维护性差: 规范的缺失会影响代码的可维护性。当代码规模增大时,缺乏规范将导致更多的问题,使得维护成本飙升。
- 团队合作困难: 缺乏统一的规范会增加团队成员之间的沟通成本,不同的编码风格可能会产生冲突。
- 可移植性差: 缺少规范可能导致代码在不同环境下难以移植和重用。
- 安全隐患: 代码规范可以减少一些安全隐患,比如良好的命名规范可以避免因为拼写错误引起的问题。
代码规范的优点
- 提高代码可读性:代码规范可以统一代码的格式、命名规则、注释等,使代码更易于阅读和理解,从而提高代码的可读性。
- 提高代码质量:代码规范可以强制执行最佳实践,例如在代码中使用有意义的命名、避免重复的代码、优化代码结构等,从而提高代码的质量。
- 便于合作开发:代码规范可以使不同开发人员之间的代码风格一致,降低开发人员之间的沟通成本和学习成本,从而提高开发效率和代码质量。
- 降低维护成本:代码规范可以使代码更易于维护,例如标准的缩进和注释,可以使代码更易于排版和理解,从而降低维护成本。
以上代码规范是为了使代码更加可读、易维护和易于合作开发而制定的一系列约定和规则。总体来说,不遵循代码规范会影响代码的质量、可读性、可维护性和可扩展性,增加开发和维护的成本,降低软件项目的整体质量和稳定性。因此,制定并遵循适当的代码规范对于软件开发项目来说是至关重要的。
2、async function
使用async await解决异步callback嵌套问题。async function是语言层面提供的语法糖,在 async function 中,我们可以通过 await 关键字来等待一个 Promise 被 resolve(或者 reject,此时会抛出异常), Node.js 现在的 LTS 版本(8.x)已原生支持。
const fn = async function () {
const user = await getUser();
const posts = await fetchPosts(user.id);
return { user, posts };
};
fn()
.then((res) => console.log(res))
.catch((err) => console.error(err.stack));
3、html
- Page代码规范-doUiAction
基于"统一中转链式操作",其核心思想是将不同的操作以一种可重复使用的方式封装在一起,从而提高代码的可读性和可维护性。通过doUiAction("uiActionId", uiActionParamObj)
来链式执行方法(function
),其易于维护和修改。
// doUiAction定义与实现
methods: {
// 定义doUiAction
async doUiAction(uiActionId, uiActionData) {
switch (uiActionId) {
case 'startCreateItem':
await this.prepareCreateFormData();
await this.openCreateDrawer();
break;
default:
console.error("[doUiAction] uiActionId not find", {uiActionId});
break;
}
},
// ---------- startCreateItem uiAction >>>>>>>>>> --------
async prepareCreateFormData() {
//do something...
},
async openCreateDrawer() {
//do something...
},
// ---------- <<<<<<<<<<< startCreateItem uiAction ---------
}
//调用
<v-btn @click="doUiAction('startCreateItem')">新增</v-btn>
- Resource代码规范之施工方案
不同端之间所传递的数据,江湖JS所做的规范与设计在应用协议的设计上,进行了统一和简化,能够做到在不同通讯通道间无缝切换。
在江湖JS里,一个HTTP请求/Socket请求对应数据库_resource
表中的一行数据。
我们把请求resource 分成两类:
- sql resource:后端根据请求组装出sql,执行并将结果返回给前端。
- service resource:后端根据请求找出
/app/service
下对应的service,执行对应的方法并将结果返回给前端。
const rows = (await window.jianghuAxios({
data: {
appData: {
pageId: 'albumManagement',
actionId: 'viewAlbumArticleList',
actionData: { albumId, offset: 10000 },
}
}
})).data.appData.resultData.rows;
4、数据库
- 清理多余的数据
- 表字段要符合Jianghu表的风格