Java:更适合小白的Java语言开发规范(根据阿里巴巴Java开发手册总结整理)

一 代码原则

通过所有测试(Passes its tests):强调的是外部需求,这是代码实现最重要的
​尽可能消除重复 (Minimizes duplication):代码的模块架构设计,保证代码的正交性,保证代码更容易修改
尽可能清晰表达 (Maximizes clarity):代码的可阅读性,保证代码是容易阅读的
更少代码元素 (Has fewer elements):保证代码是简洁的,在简洁和表达力之间,我们更看重表达

二 命名规范

项目名全部采用小写方式, 单词之间以中划线分隔。如my-first-job

包名: 使用小写字母,多个单词使用点分隔,如com.example.myproject

类名: 使用驼峰命名法,每个单词首字母大写,如MyClass

方法名: 使用驼峰命名法,首字母小写,第二个单词开始首字母大写,如myDemo

变量名: 使用驼峰命名法,首字母小写,第二个单词开始首字母大写,如totalCount

常量名: 使用大写字母和下划线如MAX_SIZE.

三 方法参数规范

每个方法的参数数量不超过3个,超出三个参数要封装成javabean对象。

四 注释规范

在书写代码时,应养成添加注释的习惯,便于我们或他人快速阅读、理解代码。但是注释数量不应过多(例如每行代码都添加一条注释),数量过多反而会造成反面效果。从理论上来讲,对于程序中的每个变量、每个方法都应添加对应的注释,方法作用尽量使用方法名表示,注释中应具有返回值、用途、算法实现逻辑等信息。使用注释时,原则上注释应单独成行,尽量不要使用行内注释,以Javadoc形式的注释为佳。

/*** This is a Javadoc comment.*/
public class MyClass {/*** Calculates the total.* @param a The first operand.* @param b The second operand.* @return The total.*/public int calculateTotal(int a, int b) {// code here}

五 代码目录结构

目录结构应统一、符合约定,不要随意按照自己的喜好修改包名或类名。符合特定条件的类应放在对应的包下,例如,src为根目录,存放所有核心源码;common存放一些通用的类库,config存根配置信息,moudel为各个业务模块等。

我们常用的mvc模式分层为controller、service、manger、dao层。controller 负责协同和委派业务,充当路由的角色,方法内要求不做任何关于业务逻辑的操作,不做任何数据相关的操作,如组合、拼接、赋值等操作。service层负责处理业务逻辑,manger层是对第三方平台封装的层,预处理返回结果及转化异常信息;dao层禁止直接在 mybatis xml 中写死常量,应从 dao 中传入到 xml 中,同时建议不要使用星号 * 代替所有字段,方法命名尽量以sql语义命名,避免与业务关联。

六 其他

基本数据类型尽量使用其包装类型(如int--Integer);

类中布尔类型的变量不要使用isXXX命名(如isFlag,isDelete),否则部分框架解析会引起序列化错误;

左花括号不另起一行,右花括号另起一行;

if (condition) {// code here
} else {// code here
}

运算符前后加上空格,使表达式更清晰;

int result = a + b;

导包名确导入需要的类,不要使用通配符*;

import java.util.List;
import java.util.ArrayList;

异常处理不要捕捉所有异常,应该具体捕捉可能发生的异常;

try {// code that may throw an exception
} catch (SpecificException ex) {// handle specific exception
} catch (AnotherException ex) {// handle another specific exception
} finally {// code to be executed regardless of whether an exception is thrown
}

避免在循环中使用String拼接,尤其是在大量数据的情况下,使用StringBuilder来提高性能。

// 不推荐
String result = "";
for (String str : listOfStrings) {result += str;
}// 推荐
StringBuilder result = new StringBuilder();
for (String str : listOfStrings) {result.append(str);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题目分享

学习目标: 从面试了解自己的不足。 学习内容: 1.你会什么语言? 我该如何回答,我会java,c,c等,在工作中我会用到合适的语言。 牛逼吹的大话 尊敬的面试官,我精通Java和Python&…

鸿蒙语言基础类库:【@ohos.data.storage (轻量级存储)】

轻量级存储 轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型。 说明: 开发前请熟悉鸿蒙开发…

Android表格布局的概念与属性

表格布局的概念与属性 表格布局(TableLayout)是以行、列的形式来管理控件的,类似与表格。如图所示,是一个表格布局。TableLayout继承自LinearLayout,支持LinearLayout所支持的全部属性,默认为垂直方向的Li…

第一个基于FISCOBCOS的前后端项目(发行转账)(已开源)

本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springbootjs前后端不分离。 所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分,1是区块链平台webase搭建(此项目使用节点前置webase-front即可),2是…

预测算法面试

这次面试的是一个预测算法的岗位。虽然我对供应链相关的预测很厌烦了,但是这个不是供应链领域的,感觉应该还好。 首先在介绍工作经历和项目部分,这次面试没有上来没有条理乱说一气,而是预测目标、算法架构、各种使用特征这些分层…

游戏AI的创造思路-技术基础-行为树

行为树源自于游戏,但又不单单局限在游戏中,现代的行为树为游戏提供了一套快速简洁的控制NPC/AI的方法。所以本篇来讲讲行为树这个老祖宗~~~~ 目录 1. 行为树的定义 2. 发展历史 2.1. 起源与早期发展 2.2. 关键节点与重要进展 2.3. 当前现状与未来 …

ubuntu 换源

sudo apt update 错误如下 Ign:1 http://security.ubuntu.com/ubuntu focal-security InRelease Ign:2 http://us.archive.ubuntu.com/ubuntu focal InRelease Err:3 http://security.ubuntu.com/ubuntu focal-security Release SECURITY: URL redirect target…

人工智能讲座——深度学习实现行人重识别

目录 一、引言 二、深度学习基本概念 三、损失函数 一、引言 1、在不同的监控检测同一行人,实现行人的监测。 2、文本描述行人特征。根据文本描述寻找行人。 是图像检索问题,检索对象是行人。 标本图像与待查询图像相似度对比,相似度从…

人工智能大模型讲师培训老师叶梓介绍及多模态大模型原理与实践提纲

培训需要解决的问题 通过本次培训,拓展对多模态AI应用领域的视野,帮助团队聚焦AI赋能创新突破,提升对AI服务的技术认知与理解,更好地助力业务智能化业务建设。 培训时长 1天 培训老师介绍 叶梓,工学博士&#xff0…

python零基础爬虫教程,(实战案例手把手教你Python爬虫教程!)

前言 女朋友看了都能学会的爬虫教学 自己断断续续学习练习了两三年python爬虫,从网上看了无数教程,跟大神们学习了各种神奇的操作,现在虽然没成为大神,但是想通过这篇教程来分享自己学习的爬虫实战案例。 通过本教程,你…

Linux程序替换

前言 上一期对进程的创建、终止、以及等待做了详细的介绍,对于进程控制的内容基本介绍的差不多了,本期来介绍进程控制的最后一个内容即进程的程序替换! 本期内容介绍 • 什么是进程的程序替换 • 单进程的程序替换 • 程序替换的基本原理 •…

代码优化方法记录

每次代码 review 之后,对 review 的情况进行总结记录,产出实际经验,方便组内学习、分享。 1、提取公共内容 公共内容要提取,避免重复编写; 2、css 色值使用变量 css 中的色值、字体,都换成组件库中的变…

在 IVS 2024 加密盛会上开拓创新:CESS 引领去中心化云存储和 CD²N 之发展

作为基于区块链的去中心化云存储网络和 CDN 基础设施网络,CESS 在日本年度加密创业大会 IVS 2024 上成为焦点!此次活动在历史悠久的京都举办,围绕“跨越边界”这一主题,吸引了超过15,000 名参会者,其中包括 3,000 创始…

docker/podman 安装nacos

设置环境变量,创建卷目录: VOL_HOME/data/volumes; mkdir -p $VOL_HOME/nacos/conf; mkdir -p $VOL_HOME/nacos/logs; mkdir -p $VOL_HOME/nacos/data; chown -R 200 $VOL_HOME/nacos; 创建nacos数据库,运行脚本: $VOL_HOME/na…

做实验的顺序-因人而异,只是记录自己的想法,,

1先去设计模型,运行。 2调参,最近发现超参数更重要。选择出来一个好的超参数(为消融实验做准备)。 (友友们,如果不是自己设计的什么重要超参,尽量参考已有的论文,这样就不用做很多…

SpringCloudAlibaba基础五 Nacos配置中心

一 Nacos配置中心介绍 官方文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos C…

2024 福州市延安中学“拿云杯”复赛试题

回忆版(持续更新) 目录 答案 答案

风光摄影:相机设置和镜头选择

写在前面 博文内容为《斯科特凯尔比的风光摄影手册》读书笔记整理涉及在风景拍摄中一些相机设置,镜头选择的建议对小白来讲很实用,避免拍摄一些过曝或者过暗的风景照片理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好…

【matlab】周期性信号分析

目录 信号预处理 周期性特征提取方法 频谱分析 傅里叶变换 快速傅里叶变换(FFT) 周期图法 Welch法 自相关分析 时频分析 基于模型的方法 时间序列分解 应用实例 提取信号的周期性特征是一个在信号处理领域广泛应用的技术,特别是在…

模型(卷积、fc、attention)计算量 MAC/FLOPs 的手动统计方法

文章目录 简介背景为什么理解神经网络中的MAC和FLOPs很重要?资源效率内存效率能耗功耗效率 模型优化性能基准研究与发展 FLOPs 和 MACs 定义1. 全连接层 FLOPs 计算步骤 1:识别层参数步骤 2:计算 FLOPs 和 MACs步骤 3:总结结果使用…