项目开发中代码风格以及规范总结(持续更新...)

Google Guava 优雅的参数验证(Preconditions) 1、前言 在我们的日常开发中,经常要对入参进行校验,比如是否为空、参数的取值范围是否符合要求等等。如果我们单独进行参数校验的话,代码的重复率比较高,也不是很优雅。Guava提供了PreConditions类来统一校验我们的参数,同时可以抛出对应的异常信息,将参数校验的工作进行了统一。 前置条件: 让方法调用的前置条件判断更简单。 2、PreConditions类中的几种校验方法 checkArgu... 阅读详情

前言

相信许多人都将技术学习放在第一位,疯狂的学习框架、技术、原理,但是不要忘了代码coding,工程能力也要跟上,本文将总结工作中的“代码异味”,时刻提醒自己规范代码风格,本文将持续更新,希望有同感的小伙伴留言共同讨论,共同进步。

1. 长函数

在实际工作中,对于代码的业务开发有点“平铺直叙”的感觉,即1. a做了什么,2. b做了什么,3. c做了什么,balabala,结果代码写完一看一两百行,对于这列冗长的函数就属于“代码异味”。首先,代码过长不方便阅读,后期维护困难,其次也不方便对代码进行细致的Review,不利于发现代码潜在问题。所以对于长函数的拆解方式就是,将每一个功能模块单独划分成一个函数,如果步骤多且有关系依赖性,则将其封装在一个大的函数中,将每个小的函数聚合在一块即可,这样代码调用关系清晰,易于维护。

2. 重复代码

TODO

3. 工具类使用

3.1 ObjectUtil.checkNotNull的使用

对于checkNotNull的使用,

String nickName = getNickNameFromDB();
ObjectUtil.checkNotNull(nickName, "nickName");

目的是为了清晰的表达程序意图,并且精确控制出错的位置。

  1. 尽早抛出异常
    在方法的入口,或运算开始前,检查数据,而不是等到数据被传递到更深层的方法时被动的触发异常,有助于更精确的确定异常产生的原因。

  2. 断言该变量非空
    也就提醒了调用者,如果传入null肯定是错误的,直接去找为什么会是null的原因即可,不用再分析这里到底是要允许null,还是不允许null。

  3. 更精确的知道哪个变量是null
    被动抛出的NullPointerException只能定位到行,如果是类似于这种代码
    xxxx.get(0).getAddress().equals(yyyy.getAddress()),你不容易看出到底是哪个变量或中间结果是null的,需要调试或输出一下数据才能确定。

在Java中任由代码对空变量进行操作而导致空指针异常是一种低级错误。

往往很多时候同一段代码不是一个人维护的 或者你需要在时隔很久后去维护它 这个时候谁也不知道改动这些代码会带来哪些隐形bug 对于空指针的检查可以让你在开发过程中提前避免很多因为改动代码带来的以外因素 让问题尽量在开发时暴露而不是上线后暴露,因此要善于使用checkNotNull。

Java开发规范思维导图详细解析.zip 通过本章节的介绍,我们了解了Java代码风格与结构规范的重要性。命名规范能够确保代码的可读性和一致性;注释规范则是帮助代码维护者理解代码意图的关键。此外,代码格式规范如缩进、空格使用、大括号的风格以及行宽与换行处理,都有助于提高代码的整洁性与可维护性。在下一章节中,我们将继续探讨代码质量控制与优化的相关知识。在Java中,可以创建自定义异常来表示特定的错误情况。自定义异常可以包含更多的错误信息,有助于调试和错误处理。定义异常类:通过继承Exception或其子类来创建自定义异常。 阅读详情

相关推荐

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 303

google guava工具包 checkNotNull的作用

checkNotNull 源码如下: Preconditions.checkNotNull(object); public static T> T checkNotNull(T reference) { if (reference == null) { throw new NullPointerException(); } return reference; } 使用

Fairy_Z的博客 1万+

DPARSF高级版 vs 基础版怎么选?没有T1数据也能做fMRI分析吗?

本文深度对比了DPARSF高级版与基础版在fMRI分析中的核心差异与适用场景,特别针对无T1数据的情况提供了实战解决方案。高级版依赖T1像实现高精度配准,适合需要精确解剖定位的研究;基础版则无需T1数据,适用于功能连接等相对空间要求不高的分析。文章还提供了版本选择决策树和常见问题解决方案,帮助研究者根据实际需求做出最优选择。

weixin_42526087的博客 132

使用Preconditions工具类进行代码的校验

Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在 guava进行了大量方法的重载,组成了Preconditions工具类,里面有14个静态方法 <!-- https://mvnrepository....

底层码农 6568

单细胞实战之亚细胞分群从T/NK至CD4+T细胞——从入门到进阶(中级篇1)

亚细胞分群从T/NK至CD4+T细胞

zfyyzhys的博客 6387

用Python玩转Carla-Apollo联合仿真:手把手教你实现自动驾驶测试

本文详细介绍了如何使用Python实现Carla-Apollo联合仿真,从环境搭建到自动驾驶算法测试的全流程。通过Carla提供的高逼真仿真环境和Apollo的自动驾驶算法栈,开发者可以高效验证感知、规划和控制模块。文章包含环境配置、Python API操作、桥接实现及实战测试,为自动驾驶开发提供完整解决方案。

wasm7browser的博客 266

【Kotlin】空安全 ⑥ ( 先决条件函数 | checkNotNull 函数 | require 函数 | requireNotNull 函数 | error 函数 | assert 函数 )

一、先决条件函数 1、先决条件函数概念 2、先决条件函数原型 3、先决条件函数代码示例

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1371

(第七章)FAST开发方法

摘要: FAST是一种轻量级、业务驱动的系统分析与开发框架,适用于中小型项目,强调快速交付和组件化开发。其核心包括8个阶段:范围定义、问题分析、需求分析、逻辑设计、决策分析、物理设计、构造测试和安装发布。特点为结构化、用户参与、迭代渐进,适合需求明确且需快速交付的项目。与RUP(重量级)、敏捷(极轻量)相比,FAST更侧重业务分析和模块化开发。软考中可通过口诀“范围问题求逻辑,决策物理构发布”记忆阶段,并掌握五大开发方法(瀑布、原型、FAST、RUP、敏捷)的核心区别及适用场景。

echo的博客 913

Guava学习笔记(三):Preconditions优雅的检验参数

在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示: import org.junit.Test; ...

liinux-Talk is cheap,show me the code. 782

Spring AI Alibaba实战训练营-13语音生成应用开发指南

本文介绍了如何基于Spring AI Alibaba创建DashScope语音应用,支持文本转语音(TTS)和语音转文本(STT)功能。主要内容包括:1)环境准备要求Java 17+、Maven 3.6+及阿里云DashScope API Key;2)通过Spring Initializr创建项目并配置相关依赖;3)设置API密钥的安全配置方法;4)实现语音合成的同步和流式功能,包括创建控制器类、调用API接口及保存语音文件。文章提供了详细的代码示例和配置说明,帮助开发者快速搭建语音处理应用。

program哲学 401

YOLOv11改进策略【模型轻量化】| 使用 MoblieOne 模块,引入结构重参数化,提高模型检测效率

本文记录的是基于MobileOne的YOLOv11骨干网络改进方法研究。MobileOne的基础模块通过重参数化,。在将其替换YOLOv11的骨干网络后,实现模型轻量化。

Limiiiing的博客 1424

终极编码规范指南:探索cscs项目如何统一全球开发者的代码风格

在软件开发的世界里,代码风格的统一始终是团队协作和项目维护的核心挑战。GitHub加速计划下的cscs项目(Coding Style Conventions and Standards)正是为解决这一难题而生。作为一个精心策划的编码规范集合,cscs项目汇集了全球主流编程语言的风格指南,为开发者提供一站式的编码标准参考,帮助团队消除风格分歧,提升代码质量与协作效率。 [![cscs项目标志:由多

gitblog_00551的博客 748

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

探索Web规范之美:Web-Norms - 构建更优质的前端项目

探索Web规范之美:Web-Norms - 构建更优质的前端项目 是一个由开发者iceyangcc创建的开源项目,旨在提供一套完整的前端开发规范和最佳实践,以帮助开发者构建更稳定、可维护且高效的Web应用。该项目不仅包括代码风格指南,还涵盖了项目结构、测试策略、性能优化等多个方面,是提升团队协作效率与代码质量的优秀工具。 技术分析 1. ES6+语法规范: Web-Norms 建议采用最新的Jav...

gitblog_00022的博客 507

jre9下载 jdk9

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OpenCode技能:Qwen3-TTS开源项目协作开发

本文介绍了如何在星图GPU平台上一键自动化部署Qwen3-TTS-12Hz-1.7B-Base镜像,实现高效的语音合成应用。该镜像支持多语言生成和3秒语音克隆,可广泛应用于有声内容创作、语音助手开发等场景,显著提升语音生成效率与质量。

weixin_42612804的博客 296

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

基于Vite2+Vue3的项目复盘总结

点击上方“前端开发博客”,选择“设为星标”回复“2”加入前端群1.项目背景与技术选型1.1 项目背景我们要做一个基于边缘计算的物联网管理平台雏形,流程大概是这样:数据(传感器收集通过串口传...

前端开发博客 1万+

spec-driven-development - SKILL

在编写任何代码之前,先编写结构化的规范。规范是你与人类工程师之间的共享事实来源——它定义了我们在构建什么、为什么构建,以及我们如何知道它已完成。没有规范的代码就是猜测。

小青蛙电气 58

Node.js Best Practices:10 万星标的 Node 开发指南

本文介绍了GitHub上Star数超10万的Node.js最佳实践仓库nodebestpractices,该仓库由Yoni Goldberg维护,系统整理了Node.js开发的100多条最佳实践建议。内容涵盖项目架构、错误处理、代码风格、测试、安全、Docker部署等8大主题,每条实践都包含摘要说明、问题分析和扩展阅读。仓库特点在于集中了散落的开发经验,按优先级和标签分类,2026年初进行了更新。文章重点推荐了组件化拆分、错误分类处理、TypeScript务实策略和Docker多阶段构建等实践,适合不同阶段

keshifudiao959的博客 386

Go语言开发规范指南:代码风格、命名与注释标准(持续更新)

本篇文章持续整理了Go语言开发中的常见规范,包括命名、注释、代码风格等核心要点。这些规范虽然不是语法强制要求,但在实际项目中至关重要,尤其对于团队协作和长期维护来说,有着不可替代的作用。后续将持续更新更多关于Go工程化实践、测试规范、性能优化等内容,欢迎关注订阅!

Landcc的博客 2004

Yuedu项目开发规范:代码风格与提交信息

在开源项目协作中,统一的代码风格和规范的提交信息是保证项目质量、提高团队协作效率的关键。Yuedu作为专注于网络小说书源管理的开源项目,其代码规范直接影响书源规则的可读性和维护性。本文将从代码风格指南、提交信息规范、协作流程三个维度,详解如何参与Yuedu项目开发。 ## 代码风格指南 Yuedu项目的核心是书源规则文件,主要采用JSON格式存储网站解析规则。保持JSON文件的格式一致性,能有...

gitblog_01095的博客 1017

Python 开发规范:代码风格 和 可读性优化 指南

本文介绍了Python开发规范的核心内容,强调代码可读性、规范化和自动化工具的重要性。主要内容包括: 代码风格规范 - 详细解读PEP8和Google Style规范,涵盖缩进、空行、空格、换行等格式要求 文档与注释 - 规范import语句、注释格式和文档描述,确保代码自解释性 命名规范 - 变量、函数、类的命名规则,强调语义清晰 代码分解技巧 - 通过合并重复、拆分嵌套、功能提取等方法优化代码结构 规范落地 - 通过代码评审和linter等自动化工具将规范融入开发流程 文章适用于Python开发者,特别

Balance 1035

前端开发规范:前端代码风格与流程优化

前端开发规范:前端代码风格与流程优化 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代Web开发中,前端开发规范的制定和执行是确保代码质量、提高团队协作效率的关键因素。今天,我们将向您推荐一个开源项目——前端开发规范,该项目旨在帮助开发者在编写前端代码时,遵循一系列明确的规则和最佳实践,从而提升代码的可读性、可维护性以及开发效率。 项目技术分析 前端开发规范项目涵...

gitblog_06793的博客 934

如何建立团队代码开发规范(包含常见问题及解决,持续优化)

建立代码开发规范是保障团队代码质量、提高协作效率的关键。

QiuMing 1065

GO的代码风格和规范

Go语言(又称Golang)以其简洁、高效和一致性的设计哲学著称,社区推崇统一的代码风格来提升可读性和维护性。官方规范主要基于《Effective Go》和《Go Code Review Comments》等文档。下面我将逐步介绍核心规范,确保结构清晰,并附上代码示例。工具自动格式化代码,确保所有项目保持统一风格。这是Go的核心原则,避免手动调整格式。遵循这些规范,能显著提升Go代码的质量和团队协作效率。Go强调显式错误处理,避免使用异常。注释用于解释“为什么”而非“什么”,并生成文档。

2501_93605496的博客 1679

ThinkPHP框架的代码风格:是否真正符合规范?

通过制定明确的代码规范、使用代码检查工具、加强代码审查以及持续学习和改进等措施,我们可以更好地确保ThinkPHP框架的代码风格符合规范,从而提高代码的质量、减少错误和bug、提高团队协作的效率以及便于维护和扩展。事实上,这里的“符合规范”并不是一个绝对的概念,因为不同的开发者、团队和项目可能对“规范”有着不同的理解和要求。开发者应该保持对新技术和新规范的学习和关注,以便更好地适应项目的需求和提高代码的质量。通过代码审查,可以发现并纠正不符合规范的代码,同时也可以学习和借鉴其他开发者的优秀代码风格。

2401_86114040的博客 516

OpenRocket项目开发指南:从代码规范到贡献流程详解

OpenRocket作为一款专业的火箭模拟软件,其开发过程需要遵循严格的规范以确保代码质量和项目可持续性。本文将深入解析OpenRocket项目的开发准则,帮助开发者快速融入项目开发工作。 ## 代码质量标准 ### 单元测试要求 在OpenRocket项目中,单元测试不是可选项而是必选项。每个新功能或修改都应配备相应的测试用例,这包括: 1. 正常情况测试:验证功能在标准输入下的表现 2

gitblog_00984的博客 1038
上一篇: Git通过配置config维护多个账号,区分个人账号和公司账号
下一篇: RocketMQ底层源码解析——事务消息的实现
CoderBruis
博客等级 码龄10年 4444粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值