当前位置: 首页 > news >正文

代码规范

你好,我是徐晓东,笔名燕云长风。大漠穷秋于 2019-03-16 21:22 赠此笔名。
寓意:结合李白著名的边塞诗《关山月》取【燕云长风】—— 长风几万里,吹度玉门关。

1 .命名

 1.1 类名,对象命名通常是名词或名词短语,如Customer,UserInfo,避免使用Manager,Data等,不要使用动词;
 1.2 方法名一般使用动词或动词短语,如postPayment、save等。理论上根据方法名称就能知道方法大概是在做什么;
 1.3 所有命名都应该有意义,不要出现拼音形式命名,或者a,b,name1,name2等形式形式命名
 1.4 所有的声明理论上都应该是有用的,没有用上的都应该删除;
 1.5 常量的命名一般都是大写,switch语句的case一般都是大写;
 1.6 方法名与变量名都应该是驼峰式,如userInfo,类名首字母大写,如Customer;
 1.7 通常文件的后缀应该表明该文件的类型,如ActiveService,DataManager、UserInfoBean等;
 1.8 通常变量和方法为私有(private),在angular2中有用;
复制代码

2 .声明

 2.1 每一个变量、方法、类声明都应该有意义,也就是说被消费,不然就应该删除;
 2.2 理论上变量被声明都应该被初始化,(这里的初始化不是指赋值吗,实际上每一个变量被声明的 时候默认的都有值的,这个时候的值说是空)。 一般的情况不会在变量一声明的时候就给一个默认值或者死值。在每个类里面都应该有一个初始化的方法,一般的变量都是在这里给默认值。
 2.3 变量的作用域应该尽可能的小,而不是所有的变量都声明在最外面
复制代码

3 .代码

 3.1 代码单一原则,一个类应该只做一件事、一个方法应该只完成某一个功能;
 3.2 知道最少原则,一个变量,一个方法一个类在系统中应该被最少的人知道;
 3.3 接受参数最少原则,一个方法应该接受尽可能少的参数,一般的情况最好不要超过5个;
 3.4 垂直格式,两个有关联的方法放在一起,以先后顺序垂直排列;
 3.5 代码最少原则,一个类和一个方法的代码应该尽可能的少,原则上一个类的代码应该控制200
 行左右,多点500行,一个方法的代码控制在20行;
 3.6 避免沉余代码,当项目中出现了多个类似功能的代码的时候,就应该考虑提炼代码,出公共方
 法,类
 3.7  if语句的条件应该尽可能的少,当if语句的条件多的时候就应该考虑对if取反,就是if(!false);
 3.8 个人建议不要大量的if()elseif();我推荐的方式是if(!false)return;
 3.9 对代码进行格式化
 3.10 不要出现大量的代码注释,这样会误导第二个人对代码的理解,不用的就删掉 
 3.11 对适当的代码加注释,便于别人理解,也防止自己忘记;
 3.12 方法的参数之间应该有空格,如login(name, pass, type);
复制代码

4 .angular的代码规范

 4.1 代码结尾都加分号,避免出现未知的错误;
 4.2  html的标签应该为闭合状态,如<br/>;
 4.3 引号应该统一,要么都是"",要么都是‘’;
 4.4 以模块名为文件的结尾,如controller,service,module,route,directive,      
 filter,template等
 4.5 文件命名应该体现出功能,全部用英文小写,用"-"进行分割,如disk-creation.html ,  
 app-hardware.module.js
 4.6  Controller的命名以Ctrl结尾,首字母大写,以驼峰式命名,如DiskCreationCtrl
 4.7  template的html尽量不要内联模式,最好创建一个html用外联模式
 4.8  angular的规范应该遵从上面三类的规范,比如单一原则中,一个controller.js里面应该
 放一个controller,这个controller只做完成某一个功能;
复制代码

我的个人博客

  • 燕云长风

我参与的系列项目

  1. NiceFish:美人鱼,这是一个微型Blog系统,前端基于Angular7.0 + PrimeNG7.1.0。(GVIP 码云最有价值的开源项目 3160 ☆)
  2. NiceFish-React:这是React版的实现,和 NiceFish Angular 版本保持风格一致。采用React Hooks 16.8.3 版本,使用TypeScript、Ant Design组件库以及Bootstrap v4.2.1 开发。 (7 ☆)
  3. OpenWMS-Frontend:OpenWMS项目前端基于 Angular 7.0 + PrimeNG 7.1.0。 (已推荐 199 ☆)
  4. nicefish-spring-cloud:这是NiceFish的服务端代码,基于SpringCloud。已经完成了一些基本的功能,如 SpringSecurity+OAuth2+JWT 实现SSO,文章、用户、评论等的分页查询等。如果你需要与这个后端代码进行对接,请检出本项目的 for-spring-cloud 分支。 (已推荐 113 ☆)

我的社交主页

  1. 燕云长风知乎
  2. 燕云长风知乎专栏
  3. 燕云长风github
  4. 燕云长风gitee
  5. 燕云长风twitter
  6. 燕云长风medium

今天的分享就到这里,祝大家顺利,工作愉快,天天开心。

长风几万里,吹度玉门关。

相关文章:

  • 前端vue:节点、树以及虚拟 DOM
  • 【集合框架】JDK1.8源码分析之HashMap
  • leetcode--翻转二叉树
  • 学习笔记 12 数据库索引和锁
  • mac如何强制退出程序?强制退出程序的六种方法
  • 清空的回收站文件如何还原?这个方法超实用
  • Objc Runtime 类学习图(新旧版本)
  • sql插入时:注意事项
  • 函数的进阶
  • SFDC 开发实践
  • Python新手基础入门教程:那些年我们踩过的那些坑!
  • IT兄弟连 JavaWeb教程 Servlet会话跟踪 获取Session对象
  • 乒乓规则分析
  • MacOS的Clion找不到 wchar.h的解决方案
  • 玩转Android Jetpack系列之ViewMode
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Java基本数据类型之Number
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • session共享问题解决方案
  • sublime配置文件
  • ubuntu 下nginx安装 并支持https协议
  • Vue ES6 Jade Scss Webpack Gulp
  • 我的zsh配置, 2019最新方案
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • #if和#ifdef区别
  • #pragma 指令
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (LeetCode C++)盛最多水的容器
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二)springcloud实战之config配置中心
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计ssm电影分享网站
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • *2 echo、printf、mkdir命令的应用
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET委托:一个关于C#的睡前故事
  • ?.的用法
  • ?php echo ?,?php echo Hello world!;?
  • @取消转义
  • [20181219]script使用小技巧.txt
  • [Android Studio 权威教程]断点调试和高级调试
  • [Android]一个简单使用Handler做Timer的例子
  • [BIZ] - 1.金融交易系统特点
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [C++]模板与STL简介
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]