zoukankan      html  css  js  c++  java
  • .net程序员写业务代码需要注意的地方

    代码规范要求
    1、命名空间规范:dao层的impl实现和接口采用一样的命名空间,到对应文件夹层;
    IxxDaoContext与其实现类采用顶级命名空间。

    2、TableEntity文件夹:所有的实体放到各自model的TableEntity文件夹中,类名以Entity结尾。
    3、InputModel文件夹:api接口所有的输入类,类名以InputModel结尾。
    4、OutputModel文件夹:api接口所有的输出类,类名以ResultModel结尾。

    5、控制层输入类的命名规范:搜索的输入类:尽量命名为searchModel,单个参数的命名按照文档,其他类参数尽量为input或者inputModel。

    6、控制层方法参数标识:单个参数的前面必须加上【[FromBody]】标识。
    7、参数命名大小写规范:方法参数和变量都采用首字母小写,驼峰的命名方式,例如searchModel。
    8、Api无需数据库查询的参数校验:放在控制器层(WebAPI)去检验.
    9、参数类封装:一般方法参数超过5个以上,就用类来装载参数.
    10、方法参数顺序:一般按照 int string decimal class List 其他如 dictionary 来排序.
    11、方法返回多个参数:尽量不要用 ref out 这些按值引用按地址引用,要么用类来接收参数返回,要么用Tuple 来接收多个参数.
    12、代码共用:controller里面凡是相同输入参数的都要做到代码共用.service等其他业务层也需要考虑代码共用问题.
    13、类文件中代码排序:字段、属性、构造方法、public方法、private or static 方法.
    14、空行显示:所有的实体或模型类,属性与属性之间都是要空一行
    15、变量格式统一:方法内部变量定义要么都是var,要么都是具体类型.
    16、变量头部显示:方法内部,一般要求变量定义放在方法内部开头.
    17、代码格式:代码开头tab键空格.
    18、复杂的方法步骤清晰加注释:复杂的方法,采用步骤1、2、3这样标明每步的逻辑作用.
    19、Nuget包的引用路径注意:
    19.1、原所在的解决方案更新引用:datamodel类|定时任务类|CacheExtension类|HttpClientExtension等公共类在各自原本所在的解决方中更新引用。
    19.2、当前解决方案更新引用:apiservicedao层的直接在当前解决方案下更新引用即可。
    20、方法与方法之间需要空一行,接口中成员定义之间需要空一行,方法内部,每个小块逻辑需要空一行
    21、凡是if一定要用大括号括起来,简单的if可以在一行代码里面完成
    22、方法顶部字段定义,按照一行代码长度,短的在上面,长的下面,不需要加访问修饰符
    23、方法注释里面的参数名称以及个数要与方法形参名称个数一样
    24、类定义,严禁类名小写字母开头,小写字母开头的限形参,变量名,字段
    25、所有List<T>一旦实例化或ToList之后,在后续判断中,不要用null来判断,只用count属性来判断即可
    26、在程序逻辑中,调用下一个方法需要依赖当前逻辑传递的参数,则在当前逻辑调用方法处做参数判断
    27、数据库连接资源相当宝贵,不要在不需要打开数据库链接的位置开启链接
    28、后端在接收前端参数做类型转换时,不能直接用convert.toxxx,而需要用"数据类型.TryParse()"方法
    29、service层涉及到数据库写操作的,需要启用事务

     写代码之前需要注意的事项

    1、是否已经吃透需求,吃透需求,能否用图画出流程
    2、是否熟知任务对应那几张表,每个表里面的字段各代表什么意思
    3、是否能将任务对应的查询,先在mysql编辑器里面用sql语句写出来,知道数据流向是怎样的
    4、接上18,能都将每个大概的步骤概要写出来

    写代码中需要注意事项
    1、慎用select * ,按需查询,orm翻译出的语句怎么查看可以参考https://www.cnblogs.com/wucj/p/7152020.html
    2、关联查询之前尽可能缩小关联表的查询数据范围
    3、关联查询on的条件尽量落在主键上面,where 条件尽量落在主键或索引上面,where条件慎用contains方法
    4、linq代码写查询语句尽量不要用any方法
    5、判断是否存在,不要先where再count,直接用count扩展方法
    6、linq代码写查询,需要注意,一旦tolist,那么就执行了数据库查询;按常理,一个大的查询中一般只会有一个tolist
    7、分页查询,不要使用where条件进行过滤;一定是先过滤,最后进行分页
    8、关联查询一般超过5个表关联,那么就要考虑逻辑是否需要进行拆分
    9、linq代码中,除特殊情况,不需要进行lambda 表达式重新构造与编译,这种情况一般用在动态构建查询条件处
    10、firstordefault方法,一定要做空判断;所有的where或count要做 count>0判断
    11、代码中涉及到先where后firstordefault的地方,直接用firstordefault扩展方法即可

  • 相关阅读:
    大小写敏感性
    Select的深入应用(1)
    SQL模式匹配
    返回日期和时间范围
    利用枚举管理事务逻辑
    自动记录数据的改变时间
    操作日期和时间
    关于Rational Functional Tester (RFT)的简单介绍
    html布局 左右固定,中间只适应,三种方法实现
    js混合计算字符串字节长度
  • 原文地址:https://www.cnblogs.com/wucj/p/10417537.html
Copyright © 2011-2022 走看看