• .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扩展方法即可

  • 相关阅读:
    CF1539 VP 记录
    CF1529 VP 记录
    CF875C National Property 题解
    CF1545 比赛记录
    CF 1550 比赛记录
    CF1539E Game with Cards 题解
    CF1202F You Are Given Some Letters... 题解
    vmware Linux虚拟机挂载共享文件夹
    利用SOLR搭建企业搜索平台 之九(solr的查询语法)
    利用SOLR搭建企业搜索平台 之四(MultiCore)
  • 原文地址:https://www.cnblogs.com/wucj/p/10417537.html
Copyright © 2020-2023  润新知