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

java错题集(有超详细答案解析) 平时个人做题时收集的一些题目,对理解java基础很有帮助,这个版本不是很全,多态数组方面的知识比较齐全一点。 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 归纳:编写Java程序最容易犯的21种错误 阅读次数3301 出处 CodeLab -------------------------------------------------------------------------------- 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易错题集 立即下载

相关推荐

零、HarmonyOS应用开发者基础学习总览

零、HarmonyOS应用开发者基础学习总览

weixin_45029825的博客 1455

Java100例常见错误及解决方案

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

qq_41365496的博客 4391

游戏开发实战:5种AOI算法对比(九宫格 vs 灯塔 vs 十字链表)

本文深入对比了游戏开发中五种主流AOI算法(九宫格、灯塔、十字链表等)的性能与适用场景,帮助开发者根据项目规模选择最优解决方案。通过详细的技术分析和实战数据,揭示不同算法在万人同屏等极端场景下的表现差异,为MMORPG等大型多人在线游戏提供关键性能优化指南。

weixin_29268385的博客 476

JAVA集合易忘易错整合

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

weixin_45776349的博客 305

9 海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例

海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例 快速入门 工业机器视觉 机器视觉

HuangGong2022的博客 7180

Cisco Packet Tracer实战:三层交换机链路聚合配置全流程(附常见错误排查)

本文详细解析了在Cisco Packet Tracer环境中配置三层交换机链路聚合的全流程,包括基础网络设置、LACP协议配置、路由协议集成及高级优化技巧。通过实战案例和常见错误排查指南,帮助网络工程师和CCNA备考学员掌握这一提升带宽利用率和实现链路冗余的核心技术。

grafana6viz的博客 233

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

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

自律使我自由 1269

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2240

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

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

暴力扬 693

Parasoft C++Test软件单元测试_操作指南

本文主要为使用C++TEST进行单元测试的流程性操作讲解,后续文章将以专题形式进行详细讲解,以及用一些被测函数作为示例进行实例讲解。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1577

LVGL core disp显示设计(lv_disp.c)

lv_disp.c当前显示页面的配置scr_act在原始的LVGL是以screen的概念存在,但我们还是习惯叫它为一个页面提供获取top_layer、sys_layer、prev_scr图层接口配置主题管理默认的主题管理是递归查找的,实际项目中因此页面的复杂性,虽然也兼容了此主题管理的方案,但还是推荐使用单页面自行管理主题的方案壁纸设置多页面切换的动画支持计算无用户操作时间清理显示缓存。

Bigan(安)的博客 2331

java基础易错整理

A:两个或者一个都有可能B:两个C:一个D:三个选A创建了几个String Object?本题的一种解释两个。第一个对象是字符串常量"xyz" 第二个对象是new String()的时候产生的,在堆中分配内存给这个对象,只不过这个对象的内容是指向字符串常量"xyz" 另外还有一个引用s,指向第二个对象。这是一个变量,在栈中分配内存。变形①:String s = "xyz"创建了几个String对象?

qq_52988841的博客 280

android 蓝牙通讯demo

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

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 控制[手册]

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

1347

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

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

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的博客 1844

Java学习总结归纳

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

eyes______的博客 1243

java编程容易犯的10个错误

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

weixin_34273479的博客 125
上一篇: Java日期选择控件
下一篇: 正则表达式测试工具JRegexpTester 0.36 发布
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值