【日常】一名开发人员总结的好习惯,欢迎补充

文章目录

  • 前言
  • 首先需要考虑(重要)
    • 设计和架构
    • 代码质量
    • 测试和调试
    • 性能优化
  • 编程的好习惯
    • 代码可读性
    • 模块化和重用性
    • 单一职责
    • 异常处理
    • 注释和文档
    • 常见的Java编码规范的例子
    • 下面是一个示例代码,展示了一些编码规范的应用
    • 还有一些其他的编码规范值得注意
    • 下面是一个继续展示编码规范的示例代码
  • 总结

前言

程序员对代码注释可以说是又爱又恨又双标……你是怎么看待程序员不写注释这一事件的呢?

首先需要考虑(重要)

设计和架构

在开始编码之前,要对系统进行良好的设计和架构规划。这包括设计模式的应用、模块化设计、分层架构等。这样可以确保系统的可扩展性和可维护性。

代码质量

编写高质量的代码是每个Java开发工程师应该关注的重要问题。要遵循编码规范,保持良好的命名习惯、代码缩进、注释规范等。同时,要进行代码重构,消除重复代码、提高代码的可读性和可维护性。

测试和调试

编写单元测试和集成测试是保证代码质量的重要手段。要确保代码的正确性和健壮性,以及对错误情况的处理。同时,要能够进行有效的调试,快速定位和解决问题。

性能优化

Java开发工程师需要关注系统的性能,尽量减少资源的占用和提高系统的响应速度。这包括优化算法、减少内存泄漏、避免频繁的IO操作等。

编程的好习惯

代码可读性

良好的命名习惯、代码缩进和注释规范可以使代码更易读懂,便于他人理解和维护。

模块化和重用性

将代码拆分为模块,提高代码的复用性和可维护性。可以通过面向对象的设计原则来实现。

单一职责

每个类和方法应该只负责单一的功能,遵循单一职责原则。这样可以使代码更加清晰和易于维护。

异常处理

合理处理异常,避免抛出未捕获的异常,保证系统的稳定性和可靠性。

注释和文档

良好的注释和文档可以帮助他人理解代码的意图和使用方法,提高代码的可维护性。

常见的Java编码规范的例子

  1. 命名规范:
    • 类名使用首字母大写的驼峰命名法,如:MyClass。
    • 方法和变量名使用首字母小写的驼峰命名法,如:myMethod。
    • 常量名使用全大写,多个单词使用下划线分隔,如:MY_CONSTANT。
  2. 代码缩进规范:
    • 使用四个空格进行代码缩进,不使用制表符。
    • 在代码块之间添加空行,以增加可读性。
  3. 注释规范:
    • 使用Javadoc注释方式对类、方法和字段进行注释,提供清晰的文档说明。
    • 在代码中添加必要的行内注释,解释代码的意图和特殊处理。
  4. 异常处理规范:
    • 不要捕获异常后不做处理,至少应该记录日志或者抛出更具体的异常。
    • 尽量使用特定的异常类型,而不是使用通用的Exception。

下面是一个示例代码,展示了一些编码规范的应用

public class ExampleClass {// 常量名使用全大写,多个单词使用下划线分隔private static final int MAX_COUNT = 100;// 类名使用首字母大写的驼峰命名法public void myMethod() {// 使用四个空格进行代码缩进for (int i = 0; i < MAX_COUNT; i++) {// 在代码块之间添加空行if (i % 2 == 0) {// 在代码中添加必要的行内注释,解释代码的意图和特殊处理System.out.println("Even number: " + i);}}}/*** 方法的Javadoc注释,提供清晰的文档说明* @param name 参数的说明* @return 返回值的说明* @throws IllegalArgumentException 异常的说明*/public String greet(String name) throws IllegalArgumentException {if (name == null || name.isEmpty()) {// 不要捕获异常后不做处理,至少应该记录日志或者抛出更具体的异常throw new IllegalArgumentException("Name cannot be null or empty");}return "Hello, " + name;}
}

以上示例代码展示了一些常见的编码规范,包括命名规范、缩进规范、注释规范和异常处理规范。这些规范能够提高代码的可读性、可维护性和可靠性,使团队合作更加高效,并为后续的代码扩展和维护提供了便利。

还有一些其他的编码规范值得注意

  1. 包名规范:
    • 包名应该以小写字母开始,多个单词使用点号分隔,如:com.example.myproject。
    • 避免使用Java关键字或常见的类库名称作为包名。
  2. 导入规范:
    • 避免使用通配符导入,尽量明确导入需要使用的类。
    • 将导入语句按照规定的顺序进行分组,如:Java标准库、第三方库、自定义库等。
  3. 并发编程规范:
    • 在多线程编程中,使用线程安全的数据结构或加锁机制来保护共享资源。
    • 避免使用过多的锁或不必要的同步,以提高性能和避免死锁。
  4. 性能优化规范:
    • 避免频繁的对象创建和销毁,尽量重用对象。
    • 使用StringBuilder或StringBuffer来拼接字符串,而不是使用"+"操作符。

下面是一个继续展示编码规范的示例代码

package com.example.myproject;import java.util.List;
import java.util.ArrayList;
import com.example.myproject.subpackage.MyClass;public class ExampleClass {private static final int MAX_COUNT = 100;public void myMethod() {List<String> myList = new ArrayList<>();for (int i = 0; i < MAX_COUNT; i++) {if (i % 2 == 0) {System.out.println("Even number: " + i);}}}public String greet(String name) throws IllegalArgumentException {if (name == null || name.isEmpty()) {throw new IllegalArgumentException("Name cannot be null or empty");}return "Hello, " + name;}public void concurrentMethod() {synchronized (this) {// 在需要同步的代码块中使用锁来保护共享资源}}public void performanceMethod() {StringBuilder sb = new StringBuilder();for (int i = 0; i < MAX_COUNT; i++) {sb.append("Number: ").append(i).append("\n");}String result = sb.toString();System.out.println(result);}public static void main(String[] args) {MyClass myObject = new MyClass();// ...}
}

以上示例代码展示了更多的编码规范,包括包名规范、导入规范、并发编程规范和性能优化规范。遵循这些规范可以提高代码的可读性、可维护性和性能,使代码更加规范、健壮和高效。

总结

作为一个Java开发工程师,以上是我对 好习惯 的一个较为浅显的理解,大家有更多的好习惯欢迎留言评论。

如果大家遇到类似问题,欢迎评论区讨论,如有错误之处,敬请留言。

在这里插入图片描述

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

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

相关文章

Ceph入门到精通-iptables 限制多个ip 的多个端口段访问

要使用iptables限制多个IP的多个端口范围的访问&#xff0c;可以使用以下命令&#xff1a; iptables -A INPUT -p tcp -m multiport --dports 端口段 -m iprange --src-range 起始IP-结束IP -j DROP上面的命令将添加一条规则到INPUT链中&#xff0c;该规则将禁止指定IP范围访问…

flutter 判断data是否是list类型,然后获取里面的值

///处理banner data_handlerBannerData(Response response) {if (response.code 0 || response.code 200) {List<BannerModel> list [];if (response.data is List) {//data本来是个对象的&#xff0c;后台返回了个数组&#xff0c;那就判断是否是列表(response.data …

基础架构开发-操作系统、编译器、云原生、嵌入式、ic

基础架构开发-操作系统、编译器、云原生、嵌入式、ic 操作系统编译器词法分析AST语法树生成语法优化生成机器码 云原生容器开发一般遇到的岗位描述RDMA、DPDK是什么东西NFV和VNF是什么RisingWave云原生存储引擎开发实践 单片机、嵌入式雷达路线规划 ic开发 操作系统 以C和Rust…

云原生Docker镜像管理

目录 Docker 概述 Docker是什么 Docker的设计宗旨 Docker的特性 Docker的特性 Docker与虚拟机的区别 容器在内核中支持2种重要技术 Linux 的namespace &#xff08;命名空间&#xff09; Docker核心概念 安装 Docker Docker 镜像操作 #搜索镜像 获取镜像 镜像加速下…

计算机竞赛YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快&#xff0c;YOLOv6还没用熟YOLOv7就来了&#xff0c;如果有同学的毕设项目想用上最新的技术&#xff0c;不妨看看学长的这篇文章&#xff0c;学长带大家简单的…

2023年软考网工上半年下午真题

试题一&#xff1a; 阅读以下说明&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸对应的解答栏内。 [说明] 某企业办公楼网络拓扑如图1-1所示。该网络中交换机Switch1-Switch 4均是二层设备&#xff0c;分布在办公楼的各层&#xff0c;上联采用干兆光纤。核心交换…

Jenkins对应java版本

官网地址&#xff1a;Java Support Policy 运行jenkins时,需要使用下列Java版本:

Linux 基本指令及 Xshell 常用热键操作

文章目录 Linux 基本指令入门指令文件/目录 相关文件操作文件基本操作文件处理文件压缩/解压压缩/解压 为 .zip 文件解压/压缩 为.tgz 文件 时间相关指令 Xshell 常用热键Linux系统关机 windows 和 Linux 文件互传/Linux 系统之间文件互传Linux 传入WindowsWindows 传入Linuxli…

【m98】视频帧的 jitterbuffer 1:

VCMJitterBuffer D:\XTRANS\m98_rtc\rtc-webrtc\src\modules\video_coding\jitter_buffer.h使用2个map和一个list管理VCMFrameBuffer 指针对象:UnorderedFrameList free_frames_ RTC_GUARDED_BY(mutex_);FrameList decodable_frames_ RTC_GUARDED_BY(mutex_);FrameList incomp…

导致 JVM 内存泄露的 ThreadLocal 详解

为什么要有 ThreadLocal 当我们在学习JDBC时获取数据库连接时&#xff0c;每次CRUD的时候都需要再一次的获取连接对象&#xff0c;并把我们的sql交给连接对象实现操作。 在实际的工作中&#xff0c;我们不会每次执行 SQL 语句时临时去建立连接&#xff0c;而是会借助数据库连接…

扩展表空间(PDB数据库):add_tbs.sh

#!/bin/bash source ~/.bash_profile export pdb_namepdb #PDB名称 export ts_namedefault_tbs #表空间 export inc_size_gb1 #需要增加的GB数,单位G #单次增长上限 inc_size_mb_threshold$((32 * 1024)) inc_size_mb$((${inc_size_gb} * 1024)) pdb_name$(ec…

学习css 伪类:has

学习抖音&#xff1a; 渡一前端提薪课 首先我们看下:has(selector)是什么 匹配包含&#xff08;相对于 selector 的 :scope&#xff09;指定选择器的元素。可以认为 selector 的前面有一个看不见的 :scope 伪类。它的强大之处是&#xff0c;可以实现父选择器和前面兄弟选择器…

常见工具指令【Vim | GIT | ZIP | UNZIP | IDEA】

VIM 快捷键说明Ctrl U (up)向上翻动半页Ctrl B (back)向上翻动一页Ctrl D (down)向下翻页半页Ctrl F (forward)向下翻动一页 GIT 指令解释git init 使用指定目录作为Git仓库git add filename向资源库添加文件filenamegit rm file从资源库中删除文件git branch 分支名称创…

linux系统部署jar脚本编译

一 shell脚本 #启动参数 START_OPTS=$3#AppName=biz-score-service ##!/bin/bash SpringBoot=$2#JVM参数 JVM_OPTS="-Dname=$SpringBoot -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX…

TWDS车辆轮对故障、尺寸动态检测系统

随着我国铁路的建设发展&#xff0c;客运专线网络形成&#xff0c;既有铁路的货运能力得到释放&#xff0c;货物运输向重载方向发展&#xff0c;运输组织呈现长交路、运转周期短、编组固定的特点。 跟踪调查表明重载车辆车轮磨耗较普通车辆更为严重。大秦线c80型车辆在不到1个…

sudo -i与sudo su的区别

sudo -i 和 sudo su 都用于以超级用户&#xff08;root&#xff09;的身份运行命令&#xff0c;但两者有以下区别&#xff1a; 参数&#xff1a; sudo -i 中的 -i 表示以交互式方式登录为超级用户&#xff0c;会执行超级用户的登录脚本&#xff08;例如.bashrc&#xff09;&…

mac(M1)安装anaconda3

首先下载 然后正常安装即可&#xff0c;之所以我现在测试了anaconda,因为我发现miniconda后&#xff0c;jupyter notebook的安装就出现问题&#xff0c;所以就直接卸载miniconda&#xff0c;而直接安装anaconda了 (base) yxkbogon ~ % pip list Package …

代码规范问题,“static“ base class members should not be accessed via derived types

代码规范问题,“static” base class members should not be accessed via derived types 例如在使用fastjson时 LinkedHashMap days JSONObject.parseObject(JSONObject.toJSONString(data.get(CommonConstant.AQIW)),LinkedHashMap.class);这里使用了JSONObject来调用parse…

汽车一键启动点火开关按键一键启动按钮型号规格

汽车点火开关/移动管家一键启动按键/汽车改装引擎启动按钮型号&#xff1a;YD828溥款开关 一键启动按钮&#xff08;适用于配套启动主机使用或原车一键启动开关更换&#xff09; 1.适合配套专用板板安装 2.开孔器开孔安装 3.原车钥匙位安装 外观&#xff1a;黑色 按钮上有3种不…

基于位置的前馈神经网络

目录 1、什么是前馈全连接层 2、前馈全连接层的作用 3、代码实现FFN 1、什么是前馈全连接层 在Transformers中前馈全连接层就是具有两层线性层的全连接网络 2、前馈全连接层的作用 考虑注意力机制可能对复杂过程的拟合程度不够&#xff0c;通过增加家两层网络来增强模型的能…