首页 > 编程知识 正文

简单的java程序代码,java项目开发实例

时间:2023-05-04 22:07:53 阅读:20001 作者:3021

命名方式:

1 .【强制】代码中的命名不能以下划线或美元符号开头,也不能以下划线或美元符号结尾。

2 .【强制】码内命名严禁使用拼音和英语的混合方式,不允许直接使用中文方式。

3 .【强制】类名必须使用UpperCamelCase样式,遵循驼峰匹配格式

4 .【强制】方法名称、参数名称、成员变量、局部变量都必须统一使用lowerCamelCase样式,遵循驼峰匹配格式。

5 .【强制】定名全部大写,单词之间用下划线隔开,做到语义表达完全清晰,不嫌弃名字过长。

8 .【强制】POJO类的布尔型变量中均不得包含is。 否则,某些框架的分析会导致序列化错误。

10 .【强制】消除完全不规范的缩略语,避免不懂文意

11 .【推荐】为了实现代码自我解释的目标,任何自定义编程元素在命名时都会尽量使用完整的单词组合来表达其含义。

12 .【推荐】模块、接口、类、方法使用设计模式时,命名时给出具体模式。

13 .【推荐】接口类中的方法和属性不应有修饰符。 (也请不要戴公共的。 保持代码简洁,并添加有效的Javadoc注释

15 .【参考】建议枚举类名加Enum后缀。 枚举成员名称必须全部大写,并且单词之间必须用下划线分隔。

16 .【参考】各层命名约定: a )服务/刁层方法命名约定

1 )获取单个对象的方法使用get作为前缀。

2 )获取多个对象的方法使用list作为前缀。

3 )获取统计值的方法是用count加前缀。

4 )插入的方法是用save/insert加前缀。

5 )删除的方法是用remove/delete加前缀。

6 )修改后的方法用update加前缀。

b )域模型命名约定

1 )数据对象(xxxDO、xxx是数据表名称。

2 )数据传输对象(xxxDTO、xxx是与业务领域相关的名称。

3 )展示对象) xxxVO、xxx一般为网页名称。

4 ) POJO是DO/DTO/BO/VO的总称,禁止命名为xxxPOJO。

常数定义:

1 .【强制】魔法值,也就是没有定义的常量不允许直接出现在代码中。

2 .【强制】长整型或长整型初始赋值使用大写字母l。 不能是小写字母l。 小写字母容易与数字1混淆,导致误解。

3 .【推荐】不要在一个常量类中维护所有常量,而是按常量功能分类,分开维护。

5 .【推荐】变量的值只在一个范围内变化,具有名称以外的扩展属性时,定义为枚举类。

代码格式:

1 .【强制】大括号使用约定。 如果大括号内为空,则简洁地写{}即可,不需要换行; 对于非空代码块:

1 )左大括号前不换行。

2 )左大括号后换行。

3 )在大括号前换行。

4 )大括号后有else等代码时,必须在表示不换行结束的右大括号后换行。

3 .【强制】if/for/while/switch/do等保留字和括号之间必须留有空格。

OOP条款:

1 .【强制】避免从一个类的对象引用中访问这种静态变量或静态方法。 无谓增加编译器的分析成本,用类名直接访问即可。

2 .【强制】所有写法都必须加入@Override注释。

5 .【强制】不能使用过时的类或方法。

6 .【强制】因为Object的equals方法容易抛出指针异常,所以指定具有常量或值的对象调用equals。

8 .关于基本数据类型和包装数据类型的使用标准如下。

1 )【强制】所有POJO类属性都必须使用包装器数据类型。

2 )【强制】RPC方法的返回值和参数必须使用包裹数据类型。

3 )【推荐】对所有局部变量使用基本数据类型。

10 .【强制】在序列化类中添加属性时,不要修改serialVersionUID字段,以避免反序列失败;

11 .【强制】禁止在构建方法中加入商业逻辑。 如果存在初始化逻辑,请将其放入init方法中。

17 .【推荐】使用StringBuilder的append方法扩展循环体内字符串的连接方式。

收藏处理:

1 .【强制】hashCode和equals的处理遵循以下规则。

1 )只要改写equals,就必须改写hashCode。

2 ) Set中存储有不重复的对象,由hashCode和equals判断,因此需要改写Set中存储的对象。

3 )将自定义对象作为映射的关键点时,必须重写hashCode和equals。

4 .【强制】使

用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一样的数组,大小就是 list.size()。

6. 【强制】泛型通配符来接收返回的数据,此写法的泛型集合不能使用 add 方法,而不能使用 get 方法,做为接口调用赋值时易出错。

7. 【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。

9. 【推荐】集合初始化时,指定集合初始值大小。

10. 【推荐】使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。

并发处理:

3. 【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。

4. 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险

5. 【强制】SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为static,必须加锁

11. 【推荐】避免 Random 实例被多线程使用,虽然共享该实例是线程安全的,但会因竞争同一seed 导致的性能下降。

14. 【参考】 HashMap 在容量不够进行 resize 时由于高并发可能出现死链,导致 CPU 飙升,在开发过程中可以使用其它数据结构或加锁来规避此风险。

15. 【参考】ThreadLocal 无法解决共享对象的更新问题,ThreadLocal 对象建议使用 static修饰。

其它类:

8. 【强制】捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。

日志规范:

1. 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

2. 【强制】日志文件推荐至少保存 15 天,因为有些异常具备以“周”为频次发生的特点。


5. 【强制】避免重复打印日志,浪费磁盘空间,务必在 log4j.xml 中设置 additivity=false。

单元测试:



安全规约:

2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。

3. 【强制】用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 访问数据库。

索引规约



SQL语句:





模型区分:



版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。