阿里云代码规范学习

阿里巴巴编码规范习题 因为工作需要,公司组里要求考阿里巴巴编程规范,于是我花了一天的时间看了一遍,然后刷了一些题,终于在第三次的时候考过了。考试是基于《阿里巴巴Java开发手册》,一共50道题目,包括多选和单选,题目都是选择题。目前阿里云编程规范是出到V1.5.0华山版了,好的代码规范能减少很多不必要的问题。 《阿里巴巴Java开发手册》分为:编程规约、异常日志、单元测试、安全规约、MySql数据库规约、工程结构和设计规约七个维度。内容很多,分类也很细致,每条规约都写得很详细,略微复杂的规约会做说明解释。考试难度不大,... 阅读详情

更一下:idea有专门的插件 Alibaba Java Coding Guidelines
1.一行至多120字符,一个方法最多80行代码(注释除外);
2.换行第二行缩进4字符;三行起持平第二行;.换到下一行;,放到上一行;
3.// 注释之间有且只有一个空格
4.for if 与 ()要有一个空格
5.int a = int(“1”);强转之间无空格
6.method(a, b, c){} 方法定义时多个参数逗号后面加一个空格
7. yyyy-MM-dd HH-mm-ss(hh:12小时,HH:24小时)
7.1. switch case 最后必须加default; 例:default: break;
7.2 少用if else 改为 if(),if(),if()为妙
7.3 if(boolean),boolean较复杂时应该单独拿出来
8.获取今年的天数:int yearsOfThisYear = LocalDate.Now().lengthYear(); now()或者of(2021.11.16)
9.HashMap 判空的使用 isEmpty() 而不是.size()
10.Array.asList(数组);不可add,clear,remove.
11.实现Collection接口的类,使用addAll()要判空
12.forEach中for(String item : list){}禁止remove和add,换为iterator方式
13.simpleDateFormat 线程不安全,不要用static,使用则要加锁
2021年11月16日22:03:51 23页
14.Math.random();返回值类型为double,整数使用:.nextInt() 或 .nextLong()
15.java占位符,%s,例:
String url = “我叫%s,今年%s岁。”;
String name = “小明”;
String age = “28”;
url = String.format(url,name,age);
例2:%{1}
String url02 = “我叫{0},今年{1}岁。”;
String name = “小明”;
String age = “28”;
url02 = MessageFormat.format(url02,name,age);
16.生产环境禁用 system.out / system.err ; 异常catch禁用 e.printStackTrace(),防止多次输出超出文件长度报错,线程产生死锁;
17. map不存在a b 互换的地址问题
18.数据库建表表示是否:is_xxx,类型:unsigned tinyint(1,0)
19.数据库名,表名,字段名:小写,禁止以数字开头 例::aliyun_admin,rdc_config,level3_name
20.表名不使用复数名词。
21.主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。
22.小数类型为 decimal,禁止使用 float 和 double。,超出范围将小数和整数拆分。
23.代码质量
可读性:
@Test
public void testListSimpleStyle() {
List list = Lists.newArrayList(
new Superman(“xixi”),
new Superman(“haha”)
);

System.out.println(list);

}

@Test
public void testListSimpleStyle() {
List list = Lists.newArrayList(
new Superman(“xixi”),
new Superman(“haha”)
);

System.out.println(list);

}

不要使用魔法值
变量声明后立即使用
对于变量声明,不仅要见名知意,还要遵守“使用时再声明”,或者“声明后立即使用”。
用卫函数代替if else
及时return,以避免过深的嵌套
像写诗一样换行
private List<RebateItemDetailInfo.ShopScore> getScoreList(ProductDetail productDetail) {
// 描述
RebateItemDetailInfo.ShopScore descScore = new RebateItemDetailInfo.ShopScore();
descScore.setScore(formatScore(productDetail.getDescScore()));
descScore.setType(ShopScoreTypeEnum.DESC.getType());

// 服务
RebateItemDetailInfo.ShopScore serviceScore = new RebateItemDetailInfo.ShopScore();
serviceScore.setScore(formatScore(productDetail.getServiceScore()));
serviceScore.setType(ShopScoreTypeEnum.SERVICE.getType());

// 物流
RebateItemDetailInfo.ShopScore shipScore = new RebateItemDetailInfo.ShopScore();
shipScore.setScore(formatScore(productDetail.getShipScore()));
shipScore.setType(ShopScoreTypeEnum.SHIP.getType());

return Lists.newArrayList(descScore, serviceScore, shipScore);

}
抽取方法
把强相关的代码抽取到同一个方法中,保证一个方法只做一件事
抽取类
多用stream
public class StreamTest {

private final static List<Person> personList = ImmutableList.of(
        new Person("i", 18, "杭州", 999.9),
        new Person("am", 19, "温州", 777.7),
        new Person("iron", 21, "杭州", 888.8),
        new Person("iron", 17, "宁波", 888.8)
);

// Stream API本身具有良好的可读性,filter、map等函数本身就是结构化的
public static void main(String[] args) {
    Set<String> suitablePersonNames = personList.stream()
            .filter(person.getAge() > 18 && "宁波".equals(person.getAddress()))  // 过滤出年龄大于18 && 来自宁波的
            .map(Person::getName)                                               // 只要他们的名字
            .collect(Collectors.toSet());                                       // 收集到set,避免重复
    
    System.out.println(suitablePersonNames);
}

}

public static void main(String[] args) {
    // 可以避免并发修改异常
    boolean removed = personList.removeIf(person -> "杭州".equals(person.getAddress()));
    System.out.println(personList);
}

在一定条件下(开启并行流或者大数据量)Stream的效率确实要优于普通for/foreach,而一般编程场景中普通for/foreach可能效率更好些。但是仍推荐使用Java8,因为可读性是最重要的,而且内存计算0.x毫秒的差距是微不足道的,与其争这点时间,不如多注意网络IO(一次数据库访问是100ms左右)。

记得打日志
log的性能损耗微乎其微。
排查问题:先确定前后端的问题;后端查看具体问题内的log;根据log找问题

性能
要么减少IO
要么减小IO
避免循环嵌套
例如service中for循环中使用dao;
只是内存数据的处理,其实双层for效率也没有差很多(特别是一般分页只有10条)。
时刻注意非空判断
考虑使用缓存
一旦使用缓存,就要做好觉悟:能否接受一定程度的更新延迟,也就是缓存脏读问题
为常用的SQL添加索引

设计
结构化编程与面向对象
@Autowired/@Resource能帮我们自动注入Bean,但实际上Spring不仅能帮我们自动注入单个Bean,还能帮我们注入BeanList、BeanMap。
实现了ItemService接口的实例都会被搞到ItemServiceList里面
@Autowired
private List itemServiceList;

做到了“以增量的方式应对变化的需求”,是符合好的设计原则的(开闭原则)。
这才是面向对象,核心是多态。

多态分类:
方法多态(这是我们平常说的所谓的“多态”);接口多态

以增量的方式来应对变化的需求,进而达到较为理想的软件管理(符合开闭原则)。
实际开发最常用的设计模式无非 策略模式、模板方法模式、工厂模式、责任链模式,反正绝对不会23种都用得上(实际上也不止23种)

常用快捷键:
ctrl + alt + insert :在选中类(包)所在的文件夹添加类。。。
fori(集合.fori);
forr(逆序)
psf:public static final
ifn:if (== null){ }; inn不等于null判断
thr:throw new
自定义的一些:
prl prii prib pris prid ifnot trywithcatch

阿里巴巴编码规范 考题分析 http://www.doc88.com/p-3126470726938.html https://blog.youkuaiyun.com/QYHuiiQ/article/details/85916287 https://www.e-learn.cn/content/java/1154711 https://hacpai.com/article/1542680916301 https://segmen... 阅读详情

相关推荐

跨境电商系统开发:ZKmall开源商城的技术选型与代码规范实践

ZKmall 开源商城作为聚焦跨境电商场景的解决方案,基于 Java 生态构建核心架构,并通过系统化的代码规范保障全球开发者的协作效率。这种技术决策不仅考虑了当前业务需求,更兼顾了未来的扩展性与维护性,为电商系统开发提供了可落地的实践范本。

1208

阿里官方代码规范

3) 被声明成private只会被自己代码所调用的方法,如果能够确定调用方法的代码传入参数已经做过检查或者肯定不会有问题,此时可以不校验参数 在业务逻辑中尽可能不要使用setter方法,而是使用构造函数或者封装成一个有逻辑意义的方法,提高代码的可读性。3.2.9 建组合索引的时候,区分度最高的在最左边 禁止超过2个表的join语句出现在程序中 另外有关严禁使用全模糊查找,建组合索引时,区分度最高的往左放这些原则,在一定程度上会改变我们编写程序的习惯,所以应该时刻注意。这也是面向对象的一种实践。

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 8808

【前端 - Vue】关于ESlint代码规范及格式化插件

主要讲解ESlint代码规范及手动修复,以及如何通过eslint插件来实现自动修正

共同学习,共同成长 2402

阿里巴巴代码规约整理(强制)

在-128至127之间的赋值,Integer对象是在 IntegerCache.cache产生,会复用已有对象,这个区间内的 Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。说明:getObject()与get0bject()的问题。反例︰某个案例的数据库表id字段定义类型 bigint unsigned,实际类对象属性为Integer,随着id越来越大,超过Integer的表示范围而溢出成为负数。

qq_64680177的博客 1万+

ESP-01S使用micropython,利用Thonny烧写固件

在家舒服的太久了,想学习点新的东西,这次看上了ESP8266系列的联网设备,想自己做点小玩意出来耍耍,下面跟我一起来学习吧。本篇主要记录固件的烧写及测试。Thonny下载链接不算难,但是网上资源较少。也是提醒自己不要忘记这个步骤,记录一下,也分享给和我一样开始接触的小伙伴,加油加油,万事开头难。

weixin_43422072的博客 1693

ICT模拟零件测试方法--电容测试

通常,小到 100 pF 的电容需要补偿,因为夹具和系统的电容(20 到 50 pF)相对于被测设备的值是显著的。软件在需要补偿的电容测试中加入 comp 选项,而在不需要补偿的电容测试中加入 nocomp 选项。在调试期间,通过向电容语句添加 pc 选项验证您的电容测试。在测试单独的电容时,从测量结果中减去学到的值,然后与测试限制进行比较以决定通过或失败。请注意,如果用于需要补偿的电容测试上的感应总线使用了单独的探针,测量将无效。在测试电容时,应注意两个方面:电容的电阻元件,以及夹具和系统本身的电容。

可可南木的博客 1219

2024最新阿里代码规范(前端篇),4面阿里拿到P7Offer

必须使用 camelCase 驼峰命名必须指定类型必须加上注释,表明其含义必须加上 required 或者 default,两者二选其一如果有业务需要,必须加上 validator 验证props: {// 组件状态,用于控制组件的颜色status: {return [‘succ’,‘info’,‘error’== -1},// 用户级别,用于显示皇冠个数。

2301_82242988的博客 4134

QT-使用ECharts显示地图,还有更多惊艳的图表等待你的使用

QT-使用ECharts显示地图前言一、使用步骤1.下载示例2. QT使用HTML文件配置3.使用HTML文件4. 数据交互及自适应总结注意:这个地图是百度的在线地图,需要百度API密钥和在联网的状态下使用。离线使用图表 前言 我上文QT图表chart-饼状图,使用qt自带的图表库charts来显示图表,实现数据可视化,但是QT自带的图表库显示效果并不佳,通俗说,就是不好看。 然而,有这么一个开源图表库,图表种类极多,并且效果良好,能够实现具有很好的视觉冲击的数据可视化。 它就是Apache ECharts

博咯的博客 4898

代码规范利器-阿里代码规范插件

好的代码规范不管对自己还是对别人都很重要,毕竟大家都不想接手到各种难以读懂的代码。 今天跟大家介绍一下阿里代码规范插件的安装使用以及注意事项。 首先需要在线安装插件到Idea,可以直接在File-> Setteings->Plugins->Browse Repositories,在Browse Repositories搜索Alibaba,然后安装重启idea就安装完成了。 如果无法在线安装,另外也可以通过下载插件的方式离线安装。 ...

Java自学之路 4958

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)

本文主要探讨了Rockchip平台的DRM显示驱动架构及其在U-Boot阶段的实现。

一路寒风身如絮,命海沉浮客独行 1766

最近爆火的 Ontology 本体是什么?一文看懂基础概念 + 落地实操

1993 Tom Gruber原版定义:本体是对领域概念化模型的显式形式化规范。1998 Studer完善通用定义:本体是共享、明确、形式化的领域概念模型规范。大白话翻译:本体就是机器能看懂的行业词典+业务规则手册。数据库只管存数据,本体只管定规则,知识图谱是规则+数据结合体。区别于普通开源本体工具,这款国产商用本体平台核心优势:业务沙盘推演、可控业务数据写回、全链路字段级数据血缘审计,适配企业生产级业务落地。

驽马不舍 367

eclipse、idea安装阿里云代码规范插件

一、插件源码地址:https://github.com/alibaba/p3c?spm=5176.10731542.0.0.481c52bbmDrzkc 二、eclipse离线安装 Alibaba Java Coding guide 1、下载zip包地址:https://p3c.alibaba.com/plugin/eclipse/update 点击蓝色字体: Zip File 下载离线安装包 2、打开eclipse,在顶部菜单栏选择Help->Install...

海米一枚 1934

在游戏开发中如何使用Unity3D引擎开发麻将游戏

总体来说使用Unity3D引擎开发麻将游戏需要开发人员熟练掌握Unity3D的各种功能和API,并且需要深入了解麻将游戏的规则和背景,以便实现一个质量高、玩法丰富的游戏。在测试的过程中我们需要检查游戏是否符合规则,保证游戏逻辑的正确性,并检查游戏的UI是否和设计图一致,保证游戏的可玩性。Unity3D引擎是一个高度集成的游戏开发工具,可以为开发人员提供很多强大的工具和功能,包括3D建模、物理模拟、粒子系统、动画等等,在游戏开发中可以提高开发效率和游戏质量。在开始开发之前我们需要明确游戏的需求和功能。

a272857154的专栏 1891

软件工匠,码出高效

一个优秀工程师和一个普通工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上

重视代码质量也想码到80岁的程序猿笔记 578

C++软件异常分析概述

本文将详细讲述Windows系统中软件异常的分类以及常用的排查方法,给大家提供一个借鉴与参考。

dvlinker的技术专栏 4万+

核磁共振常用的文件格式介绍:NIfTI volume 格式 (*.nii), GIFTI 格式 (*.gii), CIFTI 格式 (*.nii)

NIfTI volume 格式 (*.nii)GIFTI 格式 (*.gii)CIFTI 格式 (*.nii)Scene file文件 (*.scene)规格文件 (*.spec)解剖 (*.annot)一个场景文件包含一个或多个场景;每个场景实际上是保存时 wb_view 内部状态的快照。这包括有关加载哪些文件、如何显示、如何配置选项卡的信息(选择了哪些表面、在每个层中选择了哪些文件、打开了哪些层、哪些视图旋转、调色板设置、平铺选项卡等),以及在它们上面添加了哪些注释(文本、箭头、圆圈等)。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 3044

阿里巴巴代码规范插件

这是一个比较好用的java代码规范扫描插件,用它主要是帮助我们开发,有助于我们的代码更加规范。 下面,我们说说怎么使用他们吧。 第一步:下载安装阿里巴巴代码规范插件 idea-file-settings-plugins 搜索alibaba ,下载alibaba java coding guidelines 下载后安装,安装完毕之后重启idea。 若果你下载并且安装完毕,重启idea后,一个阿里巴巴java代码规范插件就可以使用了 第二步:使用代码规范插件 tools-阿里编码规约-编码规约扫

Mar.三月 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

团队项目之代码规范

1. 平台环境搭建 1.1安装apicloud 下载APICloud Studio2(可点击https://www.apicloud.com/devtools 下载) 点击下载,然后解压,然后就可以看到apicloud-studio-2的应用程序,右键——发送到——桌面快捷方式(一般以后使用) 然后就可以在桌面上看到应用程序的图标了。 1.2搭建番茄时钟项目 先注...

weixin_30847271的博客 239

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

开发代码规范和通过规范避坑

开发代码规范和通过规范避坑。重点是代码块的编写规范。

mufengluoyu的博客 431

Alpha代码规范、冲刺任务与计划

Alpha代码规范、冲刺任务与计划 团队名称: 云打印 作业要求: Alpha代码规范、冲刺任务与计划 作业目标:代码规范、冲刺任务与计划。 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长 221600411 陈迎仁 https://www.cnblogs.com/yinen/ ...

weixin_33835690的博客 161

阿里巴巴代码规范资源文件:助您提升代码质量,遵循最佳实践

阿里巴巴代码规范资源文件:助您提升代码质量,遵循最佳实践 【下载地址】阿里巴巴代码规范资源文件 阿里巴巴代码规范资源文件为开发者提供了Java和前端代码的权威指南,涵盖命名规则、代码结构及编程约定等核心内容。通过遵循这些规范,开发者能够显著提升代码质量,确保项目的高效性与可维护性。无论是Java开发者还是前端工程师,都能...

gitblog_06754的博客 386

STM32NBIOT连阿里云串口通信资料:让物联网开发更简单

STM32NBIOT连阿里云串口通信资料:让物联网开发更简单 去发现同类优质开源项目:https://gitcode.com/ 在物联网(IoT)技术日益发展的今天,开发一款具备远程数据传输功能的智能设备变得尤为重要。今天,我们为您推荐一个开源项目——STM32NBIOT连阿里云串口通信资料,它将帮助您轻松实现STM32+NBIOT与阿里云的串口通信。 项目介绍 STM32NBIOT连阿里云串口通...

gitblog_06799的博客 915

eclipse集成阿里代码规范工具p3c

1、开发团队的代码问题 开发中一个团队中不同的人有着不同的习惯,并且团队中有部分人员离职后写出来的代码会有交接的人员去自习看上一个人员写出来的代码,如果代码很不规范,这样就很难让人看懂。 2、解决代码规范而产生的工具 阿里代码规范工具p3c就是为了解决上述等问题而产生的,一些变量的命名规范,注释,没有用到的对象以及资源等,都会被阿里代码规范工具扫描出来,规范我们的代码以及团队代码,养成好的代...

笙箫的博客 1652

Sonarqube篇-sonarqube接入阿里巴巴代码规范

1 引言

鬼刺 4918

Android Studio代码质量检查方式--阿里云插件加SonarQube,亲测可用

Android Studio代码质量检查方式--阿里云插件加SonarQube,亲测可用Java代码规范和质量检查插件-阿里编码规约Android 代码检查工具SonarQube Java代码规范和质量检查插件-阿里编码规约 打开 Settings >> Plugins 搜索Alibaba Java Code Guidelines 安装重启后,可在编写过程中进行代码质量检测 And...

qq_39366076的博客 1276

【阿里云高校计划】学习分享:学习心得分享

主题 今天的主题是个人项目 主要内容 还是以昨天那个为主吧,说一下设计思路. 首先我们来看一下文件结构 D:. ├─.vscode // vscode配置文件 ├─bin // 执行脚本 ├─config // 配置文件 ├─public // 页面文件 ├─routes // 路由文件 ├─services // 业务逻辑目录 ├─test // 测试目录 ├─upload // 上传文件的零时文件夹 │ └─images └─utils // 工具函数目录 思路 约束

qq_43583234的博客 594
上一篇: BiliBili视频下载
下一篇: String拼接问题
Low_KeyLEI
博客等级 码龄6年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值