浅谈如何设计更好的java方法

java篇章之浅谈设计模式 一个好的程序不仅要考虑当下,还要考虑将来的发展等,所以在我们对程序的设计时就要运用各种设计原则来使我们的程序更好,更强,更美。为其他对象提供一个代理类来控制对一个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。一个好的程序不仅要考虑当下,还要考虑将来的发展等,所以在我们对程序的设计时就要运用各种设计原则来使我们的程序更好,更强,更美。所以只要类a,b,c,d 等他们在多层继承下,其实就是父类A的子类,所以类a创建的对象小莉。 阅读详情

浅谈如何设计更好的java方法

方法的设计好坏,直接影响方法的可读性、重用性和可扩展性。在一个小项目中,似乎还看不出方法设计的作用,但对于一个大型项目,它有成千上百个方法(并且有的方法耦合紧密),这时如果不考虑这样的问题,等项目上线维护时,必然会造成巨大的维护成本,真是得不偿失啊。

笔者有两个目的,一:方法的设计需要引起读者的注意了,不能再被忽视;二:在方法设计上为读者提供一种思路,未必最好,仅供参考


方法的设计,我以为不外乎四点:

方法名、参数、返回类型和访问权限


方法名

在方法名的定义上,当然是要可读性好了。比如读文件的方法名为 readFile 写文件的方法名为 writeFile ,如果写成 fileRead 和 fileWrite 就不是很好了,这里要注意命名规范,第一个词首字母小写,其余词的首字母大写。方法命名一般第一个词为动词(有例外,如监听器,listener),可千万不要小看方法名的定义。


参数

参数选取有规律,但首先有一条,那就是方法得能完成你最初想要完成的事情。参数选择分为逻辑选择和实际选择。所谓逻辑选择,也就是说,逻辑上它应该包括什么。如读写文件,那就应该包括文件对象(这两个文件对象的区别是,前者是文件源,后者是归属文件)即readFile(new File(“文件路径”)) 和 writeFile(new File(“文件路径”)) ;又如洗衣服,那就应该包括衣服对象,即washClothes(new Clothes(衣服需要的参数)) 。 这里的实际选择和语言有关系,如java语言不可以操作指针,则要操作数组时,就不止传入数组对象,还包括他的索引标识,可以参考我的 实现数组元素互换位置(乘机理解java参数传递)。


返回类型

这个是我比较纠结的问题,因为我们可能返回不止一个类型,这个时候会有一些难点:

  1. 返回一种类型的值

    public void function1() {
    “功能实现”
    }

    或者

    public int function1() {
    “功能实现”
    }

  2. 返回多值同类型的值

    public List function1() {
    “功能实现”
    }
    这里的返回值就是可以返回多值同类型的集合,如数组,列表等。

  3. 返回多值不同类型的值

    public Map<Integer, Object> function1() {
    "功能实现"
    }

    返回类型不一定要和上面一样,只是举例而已。


访问权限

访问权限有四种:public 、protected、private和默认不写。
这个设计的时候要注意它的作用范围,如果它只是类内部使用,当然设计成private最好;如果是都可能使用,用成public。不管怎样,一定要从面向对象思想入手设计。

至于是否使用static,则要看不同实例是否通用,如果所有实例都这么用,则设计为static合适。

这里仅是参考,不可尽信啊 - - -

最后还是那句老话: 实事求是 。

浅谈设计模式 设计模式 1、常见的设计模式 我们常见的设计模式有工厂模式、代理模式、单例模式、策略模式、观察者模式、包装设计模式、模板方法模式等等。 我们在项目代码编写中手写代码用的比较多,一般就模板方法模式、责任链模式,策略模式、单例模式这些,像工厂模式、代理模式这一类模式手写的代码反而不多。 这一类手写的不多但是大部分我们使用的Spring框架情况下对其还是能够了解,像我们使用的打印日志方法LoggerFactory,还有我们的时间方法DateFormat在我们的框架底层已经是给我们设计好了的经常直接拿来使用的 1. 阅读详情

相关推荐

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

ACGkaka的博客 2万+

掌握8条方法设计规则,设计优雅健壮的Java方法

方法中不检查入参会导致运行时异常或错误结果,考虑在方法中检查入参,增加代码健壮性依赖的可变对象逃逸被修改会导致错误结果,可使用不可变对象或保护性拷贝(入参、响应)解决设计方法时需要见名知意、避免参数过长、定义参数类型为接口而不是类、boolean类型考虑泛型,并且API中不要追求大量便利的方法,这种方法应该在工具类中重载编译时就能够确定,为了避免转换类型调用错重载方法,可以使用具体类型命名的方法代替重载,如果一定要使用重载可以让实现一致。

关注菜菜的后端私房菜,获取更多技术干货~ 1279

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 304

java方法的设计_Java语言基础之方法的设计

开发遵循原则之一:DRY原则:Don't Repeat Yourself(不要重复你自己的代码)原因:重复意味着维护成本的增大public static voidmain(String[] args) {System.out.println("代码片段A");doWork();System.out.println("代码片段B");doWork();System.out.println("代码片段...

weixin_39596835的博客 310

Win11实时字幕还能这么玩?手把手教你打造专属‘AI字幕机’,告别视频网站无字幕困扰

本文详细介绍了如何利用Win11的实时字幕功能打造全平台通用的AI字幕系统。通过C#抓取程序、Node.js中转服务和前端展示界面的组合,实现自动抓取系统字幕并实时推送到任意网页视频的方案,有效解决在线视频无字幕的困扰。

weixin_33735077的博客 391

单细胞分析进阶:sctransform标准化在Seurat中的实战解析

本文深入解析了sctransform标准化方法在Seurat单细胞分析中的实战应用。通过对比传统对数标准化,sctransform能更有效地建模并剔除技术噪音,提升数据质量。文章提供了从环境配置、数据准备、核心参数解析到完整流程整合的详细指南,并针对常见问题给出解决方案,帮助研究者获得更清晰的细胞分群和更可靠的差异表达结果。

weixin_29248313的博客 151

java类的设计技巧

java类的设计技巧

m0_54010212的博客 285

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关 1、首先是怎么读取数据 读取的API是:http://api.heclouds.com/devices/datapoints?devIds=629063002 其中devids这个指的是你的设备ID 然后在我们的headers里面添加一些必要参数,就可以调用了 其中api-key的是你产品里面的master-apikey 把我们的参数写好就可以调用了,选择get方式,点击发送 这个value就是我们需要获取到的参数值了,

zyh960的博客 2万+

java方法的设计_Java程序的方法设计

Java程序的方法设计本文关键字:Java、方法定义、方法设计、方法调用、方法重载一、方法的定义我们在学习Java编程以后接触到的第一个程序就是"Hello World”,在这当中涉及到两个主要的结构:类和main方法,当时我们只是说明了main方法是程序的入口,那么当我们想要自己定义一个方法时应该如何下手呢?1. 概念与作用首先我们要明确方法的概念和作用,从名称上来说,方法也可以被称为函数,是用...

weixin_36393239的博客 540

【AUTOSAR-E2E】-1.4-详述E2E Transformer解决方案

共13页精讲 目录 1“Data Transformation”介绍 1.1 基于SOME/IP Transformer 1.2 基于COM Based Transformer 2 ComXf(COM Based Transformer)介绍 2.1 ComXf(COM Based Transformer)功能规范 2.2 ComXf(COM Based Transformer)提供的服务 2.3 配置注意事项 3 E2EXf(E2E Transformer)介绍 3.1 E2EX...

「汽车电子助手」的博客 4700

【020】C++ 动态内存管理解析:new 和 delete 的正确使用

C++中的动态内存分配是在程序运行时根据需要进行内存空间的分配和释放,与静态内存分配相比,具有更大的灵活性和适应性。动态内存分配可以通过new和delete或者malloc()和free()等函数实现。在程序运行时无法确定所需的内存大小。需要在多个函数之间共享数据,并且数据可能被频繁地创建和销毁。静态数组无法满足需求,例如需要支持可变长度数组。如果在动态分配内存后忘记了释放它,则会导致内存泄漏。为避免内存泄漏,可以使用智能指针或手动管理内存的方式来释放动态分配的内存。

Lion_Long的博客 1470

Java-如何设计方法

注:本文思维导图完全按照任小龙老师的讲课思路,进行整理绘制.参考视频:点击打开链接

Tommy的博客 1797

学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

amy_mhd的博客 397

浅谈Java设计模式

前言:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对

比较喜欢、笑的博客专栏 2939

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

浅谈JAVA8引入的接口默认方法

浅谈JAVA8引入的接口默认实现 JAVA接口基础 接口定义 在JAVA中,接口的作用主要是定义该类型实例具有的功能,也就是定义必须执行那些工作,而不关心如何进行这些工作。所以,在接口中定义的方法没有方法体,并且接口不允许定义实例变量。以下代码中定义名为MyInterface的接口,并且在该接口中定义了getInt方法,如果有类实现了该接口,则根据JAVA语法,该类必须实现getIn

行者 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

浅谈 Java 8 接口默认方法和静态方法的设计

前言 默认方法 compare with class 设计目的与优势 注意 静态方法 compare with class 设计目的与优势 注意 jdk 中的实现 前言Java 8 对接口设计了默认方法和静态方法,但是好像并不是特别的引人注目,笔者在面试的过程中也时常被面试官一笔带过这个问题,国内深入探究其原因的文章也并不多见,知乎上关于这方面的有两个回答比较好—— Java8中拥有默认方法实现

joker 2208

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

浅谈Java中的接口和抽象类

Java中接口Interface和抽象类abstract class的设计非常经典,二者在目的上很相似,都是实现了代码的抽象,而我们要编写出优秀的代码往往需要进行合理的抽象。虽然从语法上讲,接口可以简单看作是严格抽象的抽象类,但从设计的角度来讲,二者其实是缺一不可,相辅相成的。

进击的菜鸟 1246

java IO包 与 装饰设计模式 浅谈

在API中,应用最多的另一个集合类群,就是IO集合了。它是以流的概念提供了对,标准输入及输出、硬盘文件、网络数据信息、字符串流及对象流内存等资源进行读写等操作方式。 一、那么先来了解是什么是流?流的概念。 流是指一连串流动的数据信号,是以先进先出的方式发送和接受数据的通道。这是个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。而...

移动开发记录 228

浅谈一下软件 QA 方法论 和 工具

当谈到软件QA(质量保证)方法论和工具时,有几个重要的方面需要考虑。测试策略和计划:首先,制定一个明确的测试策略和计划,以确保覆盖所有关键功能和应用场景。这将帮助您确定测试的范围、目标和资源需求。测试设计技术:选择适合您项目的测试设计技术,如等价类划分、边界值分析、决策表等。这些技术帮助您设计有效的测试用例,从而提高测试覆盖率。自动化测试工具:考虑使用自动化测试工具来加速和增强您的测试活动。常见的自动化测试工具包括Selenium、Appium、JUnit、JUnit等等。选择适合您的技术栈和需求的工具。

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 1852

浅谈java的几种设计模式

java的几种设计模式

m0_58623578的博客 247

浅谈Java类的设计

需求: 有一个在线教育的系统一个练习题模块,需要在练习模块设计题目。题目有母题(每种类型题的典型题),重点题和普通的题目。 一道题可能是母题也可能是重点题,或者两者兼得;但如果某道题没有分配类型,那它就不可能是母题,因为类型题是根据母题来分配的。 分析: 母题、重点题、普通题都是题目的一种,那么题目就是他们仨的最高抽象,这么来看题目可以暂定为接口(因为接口比继承关系要好得多)。 母题和重点题不是相互排斥的关系,也不是相互包含的关系(如果使用聚合,那么到底是母题包含重点题?还是重点题包含母题?这肯定不对

weixin_44870613的博客 1376

java 大特性_浅谈Java三大特性

Java三大特性想必大家都不陌生:封装、继承以及多态。很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~首先,名词解释:封装,即是隐藏一切可隐藏的东西,对外界只提供最简单的编程接口。比如,在一个类中,把数据和操作方法绑定起来,对数据的访问只能通过这些 get/set 方法(又称为接口)来实现。为什么封装?比如,我是一个厨师,我...

weixin_28756347的博客 238

浅谈 Java Stack 类

Deque 是双端队列的意思。所谓的双端队列,就是能在线性数据结构的两段,进行插入和删除操作。大家可以想象,由于 Stack 的定义是在同一端进,同一端出。所以,如果 Deque 可以满足在两段进行插入和删除,自然也能在同一端进行插入和删除,也就是可以以此为基础,做成一个 stack。等等!这里有问题!很多同学应该能马上反应过来了。这里有问题!因为我们根据 Java 官方推荐的方法声明的这个 stack,虽然变量名称是 stack,但它实际上是一个 deque。

Sumuxi9797926的博客 1672

浅谈Java中的24种设计模式(详细完整版)

设计模式是很多程序员总结出来的最佳实践。曾经在刚开始写项目的时候学习过设计模式,在开发过程中,也主动或者被动的使用过。现在写代码虽说不会特意明确在用哪种设计模式,但潜移默化的写出来公认的最佳实践代码,毕竟看的比较清爽。为什么再看一遍设计模式,主要有几个原因:第一,很多优秀的源码基本都使用了设计模式,明确设计模式能够更好的看源码。第二,很多中间件设计理念也是基于设计模式的,还有其他的语言,都有自己的设计最佳实践。对于我来说,设计模式始于java,不止于java。第三,有了这种规范,可以更好的和他人沟通,言简意

u011634836的博客 2649

java本地hashcode实现_浅谈Java中的hashcode方法

一,基本概念Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值,即hashCode值.在Java的Object类中有一个方法:public native int hashCode();根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。有些朋友误...

weixin_31282705的博客 587

浅谈Kotlin语法篇之如何让函数更好地调用(三)

简述: 今天带来的是Kotlin浅谈系列第三弹,这讲来聊下函数调用和函数重载问题,看到标题就知道Kotlin在函数调用方面有优于Java的地方。先抛出以下几个坑(估计曾经的你踩过...),看我们怎么去一步步填坑,从中你会体验Kotlin这门语言魅力。 1、Java在函数调用方面存在怎样的坑? 2、Kotlin是怎样去解决函数调用的坑? 3、Java在函数重载方面存在怎样的坑? 4、Kotl...

android开发笔记 299
上一篇: Google word2vec 环境搭建
下一篇: 震惊!Python竟然是这样的修改全局变量
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值