代码规范要求
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、当前解决方案更新引用:api\service\dao层的直接在当前解决方案下更新引用即可。
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扩展方法即可

.net程序员写业务代码需要注意的地方的更多相关文章

  1. 朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑

    我承认,本文的标题有一点标题党,特别是写业务代码,大家因为没有足够重视一些细节最容易调的坑(侧重Java,当然,本文说的这些点很多是不限制于语言的). 1.客户端的使用 我们在使用Redis.Elas ...

  2. 程序员写 2000 行 if else?领导:这个锅我不背

    前言 知乎上有小伙伴提了这么一个问题,如何看待陕西省普通话水平测试成绩查询系统?查询系统前端代码就直接给出了身份账号,姓名,证书编号,如果信息是真的,就泄露了这么多考生的信息,白给那种.为什么会发生这 ...

  3. CSDN日报20170413 ——《天天写业务代码的那些年,我们是怎样成长过来的》

    [程序人生]天天写业务代码的那些年,我们是怎样成长过来的 作者:Phodal 比起写业务代码更不幸的是,主要工作是修 Bug , bug , buG , bUg. [Java 编程]Springboo ...

  4. golang写业务代码,用全局函数还是成员函数

    在golang中,函数划分为全局函数和成员函数,在使用的时候,有种情况,会产生一些疑惑的,就是在写业务代码的时候,使用全局函数好像会比较方便,一般业务代码,都不会复用,都是针对特定的业务进行编程,要复 ...

  5. 出错的方法有可能是JDK,也可能是程序员写的程序,无论谁写的,抛出一定用throw

    应对未检查异常就是养成良好的检查习惯. 已检查异常是不可避免的,对于已检查异常必须实现定义好应对的方法. 已检查异常肯定跨越出了虚拟机的范围.(比如“未找到文件”) 如何处理已检查异常(对于所有的已检 ...

  6. 我为什么鼓励程序员写blog

    工程师该怎样才能突破自己的能力瓶颈?写 blog! 工程师该怎样精进自己在职涯上所需要的能力?写 blog! 工程师该怎样才能保持学习与成长的动能?写 blog! 工程师该怎样才能证明自己的潜力与特质 ...

  7. 程序员写的东西出了bug,造成了损失谁来承担?

    这是个持续多年的话题了,很多大公司,尤其是牛逼的独立分包公司(开发公司)都会有代码审核和严格QA程序,一般的公司就很难说咯,在法律上目前还没有完全支持处罚程序员bug经济损失的判例(国内如此),国外也 ...

  8. java程序员--小心你代码中的内存泄漏

    当你从c&c++转到一门具有垃圾回收功能的语言时,程序员的工作就会变得更加容易,因为你用完对象,他们会被自动回收,但是,java程序员真的不需要考虑内存泄露吗? 其实不然 1.举个例子-看你能 ...

  9. 想要薪资20-30K,Python程序员认真敲代码就够了!

    在这个年代,互联网的飞速壮大大家有目共睹,除了表露出的公共受益,其中计算机编程者也是做出了巨大的贡献,即使外国编程语言仍旧属于领导者,但是在互联网的壮大下,我们这是"地球村",国内 ...

随机推荐

  1. PythonCodingRule简略

  2. kubernetes node管理

    目录 Node的扩缩容 删除node节点 Node的隔离与恢复 通过配置文件实现 通过命令行的方式实现 恢复 更新资源对象的label 给一个node添加一个label 将pod调度到指定的node ...

  3. jQuery常用知识总结

    jQuery常用知识总结 简介 选择器 属性操作 jQuery() each event事件 jQuery扩展 一.简介 What is jQuery jQuery is fast small and ...

  4. solr6.3.0升级与IK动态词库自动加载

    摘要:对于中文的搜索来说,词库系统是一个很比较重要的模块,本篇以IK分词器为例子,介绍如何让分词器从缓存或文件系统中自动按照一定频次进行加载扩展词库 Lucene.Solr或ElasticStack如 ...

  5. NATS_11:NATS集群构建与验证

    NATS服务集群化 NATS支持每一个服务按照集群模式方式运行.你可以将这些服务组织在一起形成一个集群来提高服务器的容量的消息传递系统,并可以提升整个系统的弹性话和高可用性. 注意,NATS集群服务器 ...

  6. NOIP2011 提高组 Day1

    自测:8:27——11:51 实际得分:100+60+20=180 期望得分:100+60+40=200 T3读错题,失20 http://cogs.pro/cogs/page/page.php?ai ...

  7. Composer学习之————Ubuntu14.04下安装Composer

    下载Composer: curl -sS https://getcomposer.org/installer | php 安装Composer: /usr/bin/php composer.phar ...

  8. 转【Zabbix性能调优:配置优化】

    转载:https://sre.ink/zabbix-turn-conf/ #通过日志可以分析当前服务状态.LogFile=/tmp/zabbix_server.log #日志文件路径.LogFileS ...

  9. angular4 get,post请求(带参数,与不带参数)

    一:在app.module.ts引入HttpMoudle import { BrowserModule } from '@angular/platform-browser'; import { Htt ...

  10. 【转】c#.net各种应用程序中获取文件路径的方法

    控制台应用程序:Environment.CurrentDirectory.Directory.GetCurrentDirectory() windows服务:Environment.CurrentDi ...