c#/js代码命名规范及代码规范
常用命名
列表,lUser
数组,arrUser
字符串,strTitle
用,分割的字符串,strStatuss(多个用逗号分割的状态)
C#
Entity层
统一以E开始,比如EUser,EOrder等
创建的对象为
var eUser=new EUser();
Repository层(持久化层)
统一以R开始
简单CURD命名:R+表名,比如RUser等
var rUser=new RUser();
复杂Select命名:R+表名+Select
var rUserSelect=new RUserSelect();
多表复杂查询命名:R+主表+“_”+链接方式+“_”+副表
RUser_IJ_Order;innerjoin
RUser_LJ_Order;left join
abswhere实现
Equal,NotEqual,EqualGreatThan,GreatThan,EqualLessThan,LessThan,StartWith,EndWith,Contain等
Service层(服务层/逻辑门面层)
统一以S开始
命名:S+业务简称
var sUser=new SUser();
Model层(封装Entity层的数据门面)
命名:M+主表
MUser,懒加载关联ID和Entity
Json放入Model层中,保证每个字段有一个属性,命名采用Json+业务简称.cs
Json的字段要保证一个显示对应一个字段
Controller层
统一以Controller结尾,UserController
css/js/jquery
方法名已驼峰式编写,比如ajaxEditUser,searchForm
属性名统一小写,比如insert,popup,update,del等
css/js文件名统一小写,common.js,源文件使用common_source.js
关于注释
每个类的头部需要写
每个方法头部需要写
逻辑代码保证五行代码一个注释
复杂逻辑保证两行代码一个注释
不信任调用方
检查所有传入参数的合法性
不隐瞒错误
不捕获无法处理的异常,不做异常转义,可自定义业务异常
不公开数据实体
最小依赖
减少依赖有状态组件或服务 尽量选择依赖可以Mock的标准服务(数据库,缓存)
避免过度设计
设计考虑改变,也要注意改变并不一定发生 灵活也意味着成本,不要变成隔山打牛 避免调用过载
抓主线,快速闭环
系统开发初期关注主干流程的建设,快速闭环,验证业务是否正确,能否输出想要的结果 后期打磨再把缺少的系统配置,参数修改等功能补上
关注优化性能
瓶颈大部分在IO 较少访问外部资源次数 避免出现笛卡尔乘积 async/await异步不一定快
具备重建能力
可以重新创建一套干净的环境 功能验证(测试驱动开发) 前后端分离 自动化测试