归纳:编写Java程序最容易犯的21种错误

java错题集(有超详细答案解析) 平时个人做题时收集的一些题目,对理解java基础很有帮助,这个版本不是很全,多态数组方面的知识比较齐全一点。 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 1.Duplicated Code   代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。   2.Long method   它是传统结构化的“遗毒”。一个方法应当具有自我独立的意图,不要把几个意图放在一起。   3.Large Class   大类就是你把太多的责任交给了一个类。这里的规则是One Class One Responsibility.   4.Divergent Change   一个类里面的内容变化率不同。某些状态一个小时变一次,某些则几个月一年才变一次;某些状态因为这方面的原因发生变化,而另一些则因为其他方面的原因变一次。面向对象的抽象就是把相对不变的和相对变化相隔离。把问题变化的一方面和另一方面相隔离。这使得这些相对不变的可以重用。问题变化的每个方面都可以单独重用。这种相异变化的共存使得重用非常困难。   5.Shotgun Surgery   这正好和上面相反。对系统一个地方的改变涉及到其他许多地方的相关改变。这些变化率和变化内容相似的状态和行为通常应当放在同一个类中。   6.Feature Envy   对象的目的就是封装状态以及与这些状态紧密相关的行为。如果一个类的方法频繁用get 方法存取其他类的状态进行计算,那么你要考虑把行为移到涉及状态数目最多的那个类。   7.Data Clumps   某些数据通常像孩子一样成群玩耍:一起出现在很多类的成员变量中,一起出现在许多方法的参数中,这些数据或许应该自己独立形成对象。   8.Primitive Obsession   面向对象的新手通常习惯使用几个原始类型的数据来表示一个概念。譬如对于范围,他们会使用两个数字。对于Money,他们会用一个浮点数来表示。因为你没有使用对象来表达问题中存在的概念,这使得代码变的难以理解,解决问题的难度大大增加。好的习惯是扩充语言所能提供原始类型,用小对象来表示范围、金额、转化率、邮政编码等等。   9.Switch Statement   基于常量的开关语句是OO 的大敌,你应当把他变为子类、state或strategy.   10. Parallel Inheritance Hierarchies   并行的继承层次是shotgun surgery的特殊情况。因为当你改变一个层次中的某一个类时,你必须同时改变另外一个层次的并行子类。   11. Lazy Class   一个干活不多的类。类的维护需要额外的开销,如果一个类承担了太少的责任,应当消除它。   12. Speculative Generality   一个类实现了从未用到的功能和通用性。通常这样的类或方法唯一的用户是testcase.不要犹豫,删除它。   13. Temporary Field   一个对象的属性可能只在某些情况下才有意义。这样的代码将难以理解。专门建立一个对象来持有这样的孤儿属性,把只和他相关的行为移到该类。最常见的是一个特定的算法需要某些只有该算法才有用的变量。   14. Message Chain   消息链发生于当一个客户向一个对象要求另一个对象,然后客户又向这另一对象要求另一个对象,再向这另一个对象要求另一个对象,如此如此。这时,你需要隐藏分派。   15. Middle Man   对象的基本特性之一就是封装,而你经常会通过分派去实现封装。但是这一步不能走得太远,如果你发现一个类接口的一大半方法都在做分派,你可能需要移去这个中间人。   16. Inappropriate Intimacy   某些类相互之间太亲密,它们花费了太多的时间去砖研别人的私有部分。对人类而言,我们也许不应该太假正经,但我们应当让自己的类严格遵守禁欲主义。   17. Alternative Classes with Different Interfaces   做相同事情的方法有不同的函数signature,一致把它们往类层次上移,直至协议一致。   18. Incomplete Library Class   要建立一个好的类库非常困难。我们大量的程序工作都基于类库实现。然而,如此广泛而又相异的目标对库构建者提出了苛刻的要求。库构建者也不是万能的。有时候我们会发现库类无法实现我们需要的功能。而直接对库类的修改有非常困难。这时候就需要用各种手段进行Refactoring.   19. Data Class   对象包括状态和行为。如果一个类只有状态没有行为,那么肯定有什么地方出问题了。   20. Refused Bequest   超类传下来很多行为和状态,而子类只是用了其中的很小一部分。这通常意味着你的类层次有问题。   21. Comments   经常觉得要写很多注释表示你的代码难以理解。如果这种感觉太多,表示你需要Refactoring。
达内java易错题集 立即下载

相关推荐

fastadmin云快充充电桩系统部署文档uniapp

多商户 嘎嘎快充V1.0部署文档 一、服务器环境: 服务器配置4核心8GB内存5M带宽以上配置 VX next1402 只支持linux环境 nginx1.22 php7.2 开启redis、fileinfo扩展,关闭禁用workerman gatewayworkerman需要的函数,如pcntl相关的函数 mysql5.7 supervisor redis 注意: 1.站点必须配置https、websocket配置wss 2.注意开放直连服务端口:2024,并添加到安全组 二、必

itholiday2014的博客 1629

Java100例常见错误及解决方案

另外,文件的读取(FileInputStream,FileChannel,FileDescriptor,File)没法指定超时时间,而且 IO 操作均涉及到本地方法调用,这个更操作了 JVM 的控制范围,在分布式文件系统中,对 IO 的操作内部实际上是网络调用。Rollableinterface 里的 ball 是 publicstaticfinal 的,final 的 object 是不能被改变 reference 的。这是 EJB3 的一个查询操作,可能出现异常的原因是:结果不唯一;

qq_41365496的博客 4386

OpenCV+ArUco实战:如何用Python实现高精度二维码测距(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现基于ArUco标签的高精度单目视觉测距。通过相机标定、标签检测和三维位置估算,结合完整代码示例,帮助开发者在机器人导航、工业自动化等场景中实现厘米级距离测量,并探讨了精度优化与三维可视化等进阶应用。

weixin_29052717的博客 475

【Java常见错误案例】List集合的操作

【Java常见错误案例】Lis集合的操作

自律使我自由 1269

SAP 运费处理方式

从直接的处理方式上看,情况1/2/3可以将运费记账到物料成本中,但情况4/5/6是直接记账到成本对象中,具体是要体现在损益表中,还是要结转到物料成本中,可依据业务要求进行好处理。如果体现在损益表中,不需要多过多额外的操作,如果要体现在物料成本中心,则需要再进行一系列的处理,最终将金额结转到物料成本中。因为在创建采购订单时不知道具体运费,可以不维护运费,只需要维护材料价格。:创建采购订单时,运费是由供应商承担,很多时候是包含在材料报价中,这种情况不需要专门针对运费进行处理,材料价格中已包含运费。

weixin_44506537的博客 3371

Java集合框架练习以及常见问题处理方法②

文章目录练习一练习二练习三 练习一 使用泛型定义一个 Queue, 加入 5 个商品对象 演示先进先出 使用泛型定义一个 Stack, 加入 5 个 Dog 对象 演示先进后出 import java.util.*; public class work { public static void main(String[] args) { //1. 使用泛型定义一个 Queue,, 加入 5 个商品对象 //演示先进先出 Queue<Good

暴力扬 692

大模型系列——Ollama简明教程

在这篇文章中,我们将了解如何使用 Ollama、如何在 Ollama 中创建自己的模型 以及如何使用 Ollama 构建聊天机器人。这是深入研究 Ollama 的第一部分,以及我所学到的有关本地 LLM 的知识以及如何将它们用于基于推理的应用程序。在这篇文章中,你将了解——

2401_84052244的博客 1万+

JAVA集合易忘易错整合

@JAVACollection JAVA集合类的特点 提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变 集合类的体系图 Iterator 不可在迭代过程中修改原有list值而 ListIterator 可以边迭代边修改 为什么数组查找快增删除慢? Java中,ArrayList、LinkedList就是分别用数组和链表做内部实现的。而数组是以一块连续开辟的内存块作为储存空间,以及最小单位作为储存单位的,有编号,因而修改后,所有的数组元素都是挪动一下位置。 而链表则就是在地址空间中不相邻的位置

weixin_45776349的博客 305

题解:洛谷 P14357 [CSP-J 2025] 拼数

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。小 X 给了小 R 一个字符串。输出一行一个正整数,表示小 R 能拼成的正整数的最大值。中的任意多个数字,按任意顺序拼成一个正整数。,表示小 X 给小 R 的字符串。#普及-# #其他排序#洛谷:[P14357。

团爸讲算法 1394

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 700

Java面试题(高频易错题)

默认方法抽象类可以有默认的方法实现;而接口类在JDK1.8之前版本,不存在方法的实现。实现方式抽象类子类使用extends关键字来继承抽象类,如果子类不是抽象类,子类需要提供抽象类中所声明方法的实现;而接口类子类使用implements来实现接口,需要提供接口中所有声明的实现。构造器抽象类中可以有构造器;而接口中不能有构造器。和正常类区别抽象类不能被实例化;而接口是完全不同的类型。访问修饰符抽象类中抽象方法可以有public、protected、default等修饰;

Aa132135的博客 234

Python爬虫教程:抓取地方政府网站的公开文件与政策信息

Web爬虫是指一种自动化脚本,用于模拟人类浏览器访问网页、提取网页内容的数据抓取工具。发送请求到目标网页;获取网页内容;解析网页内容,提取所需数据;将数据保存或进一步处理。爬虫可以抓取各种形式的数据,如文本、图片、文件等。本教程将重点展示如何抓取地方政府网站上公开的政策文件、公告等信息。许多政府网站都会采取一定的反爬虫措施,防止大量数据被爬取。IP封锁:如果短时间内大量请求来自同一IP,可能会被封锁。验证码:一些网站会使用验证码来验证访问者是否为机器人。动态加载。

2201_76125261的博客 1981

java编写代码时易出错_归纳:编写Java程序最容易犯的21种错误

1.Duplicated Code代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。2.Long method它是传统结构化的“遗毒”。一个方法应当具有自我独立的意图,不要把几个意图放在一起。3.Large Class大类就是你把太多的责任交给了一个类。这里的规则是One C...

weixin_42304604的博客 577

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

c++程序中可能出现的内存错误做一些间单的归纳

<br />这篇文章主要是针对c++程序中可能出现的内存错误做一些间单的归纳。是看了Rational Purify的使用和分析之后做的提炼。相信很多初级的c++程序员也像我一样曾被这些问题困惑,希望对各位看官有所帮助。<br />    <br />一、内存错误的分类<br />a.内存访问错误<br />对内存进行读或写时发生的错误,可能是读未被初始化的内存单元,也可能是读写错误的内存单元。   <br />b.内存使用错误<br />主要是在动态请求内存之后没有正确释放产生的错误。<br />二、内存剖

1347

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java基础知识归纳

Java 简介 Java 开发环境配置 Java 基础语法 Java 对象和类 Java 基本数据类型 Java 变量类型 Java 修饰符 Java 运算符 Java 循环结构 Java 条件语句 Java Number类 Java Character类 Java String类 Java StringBuffer Java 数组 Java 日期时间 Java 正...

qq_42448560的博客 5万+

java中static归纳总结

在《Java编程思想》P86页有这样一段话:  “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”  这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:  方便在没有...

qq_41457412的博客 2万+

JAVA |日常开发中常见问题归纳讲解

JAVA |日常开发中常见问题归纳讲解,以下是 Java 日常开发中常见问题的归纳讲解:语法错误相关问题,数据类型相关问题,面向对象编程相关问题,集合类相关问题,文件操作和输入输出相关问题等详解,内有代码示例。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 2044

java10大低级错误,你肯定也犯过!

Java十大低级错误 互联网发展如此迅猛,编程语言不断壮大,java作为互联网的一份子,在编程语言中有很重的分量。 随着学java的人越来越多,技术也越来越参差不齐,以下是我归纳10个java常见错误! 1、方法和变量命名随意而不规范,没有类注释、方法注释或注释不规范,代码修改后,不同步修改注释,导致注释与代码不符。 2、数据类不重载toString()方法,编程规范要求“所有的数据类必须重载to...

Tyloo_wdnmd的博客 840

Android Ndk 编译时出现java.lang.UnsatisfiedLinkError: Native method not found:问题归纳

用eclipse编写Android NDK程序时,会出现 java.lang.UnsatisfiedLinkError: Native method not found:问题 错误排除一:严格按照以下步骤编写程序:a:建立引用外部函数的java类

snow_1216的专栏 2892

Java初学者容易犯的错误,Java程序员必须知道的学习路线

万事开头难,java 编程的初学者常常会遇到各种各样的问题。对于自学的读者来说,则是需要花费更多的时间、精力来解决这些问题,而且一旦遇到的问题几天都得不到解决,往往会带来很大的挫败感。所以本节介绍一些初学者经常出现的错误,以便减少读者在学习中的障碍。

weixin_42673574的博客 149

关于牛客网的JAVA面试题错题总结以及归纳(1)

前言今天在掘金看到一篇关于讲解的Spring框架的文章,文章提到了牛客网的面试题。于是乎我就下载了牛客网app,发现面试题目很丰富。我就挑了java方面的面试题做了一下。10个题目为一组面试题,做完后,我发现了自己错了好多,大多数都是基础题。俗话说:基础的深度决定未来的高度。我感觉自己必须要做一个错题的归纳和总结,把之前学习java过程中遗漏的知识点重新回顾一遍,正好借这一次机会。同时我也觉得理论知

cmazxiaoma的博客 1843

java编程容易犯的10个错误

在Java编码中,我们容易犯一些错误,也容易疏忽一些问题,因此笔者对日常编码中曾遇到的一些经典情形归纳整理成文,以共同探讨。1. 纠结的同名现象很多类的命名相同(例如:常见于异常、常量、日志等类),导致在import时,有时候张冠李戴,这种错误有时候很隐蔽。因为往往同名的类功能也类似,所以IDE不会提示warn。解决写完代码时,扫视下import部分,看看有没有不熟悉的。替换...

weixin_34273479的博客 125

Java学习总结归纳

1.1.1 计算机编程语言发展史编程语言从早期的机器语言,逐步发展到汇编语言,再到高级语言。机器语言是二进制代码,直接由计算机硬件执行,但可读性和可维护性极差;汇编语言使用助记符代替二进制指令,一定程度上提高了可读性;高级语言如 Java 则更接近人类语言,提高了开发效率。例如,机器语言可能是一串010101,而汇编语言会使用MOV AX, 10这样的指令,Java 则使用。1.1.2 java 语言发展史Java 最初由 Sun 公司开发,旨在解决跨平台编程问题。

eyes______的博客 1242
上一篇: 再译:使用struts spring hibernate 组装web应用
下一篇: 如何使用JBookMaker制作Java电子书
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值