前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何编写可怕的 Java 代码?

如何编写可怕的 Java 代码?

作者头像
Java技术栈
发布于 2020-02-21 04:25:17
发布于 2020-02-21 04:25:17
1.1K00
代码可运行
举报
文章被收录于专栏:Java技术栈Java技术栈
运行总次数:0
代码可运行

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。

如果你正在寻找有关如何编写良好代码的建议,请点击查看这篇文章。

对一切使用异常

你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误的一种)很容易犯。

当你迭代一个集合时,很容易出错。让我们看看如何使用 Java 异常处理来解决该问题,而不用担心这些讨厌的差一错误!

代码语言:javascript
代码运行次数:0
运行
复制

不用担心访问修饰符

你说什么?Java 中的访问修饰符,这不是浪费时间嘛!你是否知道将属性/方法等设为私有只是一个建议?如果你想修改它,那就去做吧!没什么能阻止你(除了缺乏知识之外)。

如果是这种情况,请看如下代码。

代码语言:javascript
代码运行次数:0
运行
复制

我们在这里读取 lineSeparator,这并没有什么。但是修改 lineSeparator 会带来更多乐趣!在我们修改代码中的 lineSeparator 之后,看看 System.out.println 发生了什么:

代码语言:javascript
代码运行次数:0
运行
复制

输出为:

代码语言:javascript
代码运行次数:0
运行
复制

看起来不错!

在 Java 中没有什么是真正的 final

一些开发人员认为他们通过将 final 关键字放在变量前面来以说明不会去更改这个值。推荐:为什么要加 final 关键字了?事实是——有时候你真的想要改变一个 final 字段的值,所以这是如何做的:

代码语言:javascript
代码运行次数:0
运行
复制

注意,在构造函数中提供最终值时,这对我很有用。如果你在类中设置了 final 值,那么它将不起作用。(可能是一些编译器级别的优化破坏了所有的乐趣)关注微信公众号:Java技术栈,在后台回复:java,可以获取我整理的 N 篇最新Java教程,都是干货。

使用 Java 序列化,干就对了

这很简单,用 Java 序列化,玩得开心,好好享受。好吧,我想你想要一些理由。我看到 Java 平台首席架构师 Mark Reinhold 表示,他们后悔将序列化引入到 Java。显然,Java 中大约 1/3 的安全漏洞仅来自于序列化

将对象用于一切

你知道类吗?浪费时间!

你是否想看到代码重用的巅峰之作?你去!

代码语言:javascript
代码运行次数:0
运行
复制

您可以相信我们一直以来都拥有这种力量吗?

另外,组合两个模式还有额外的好处!这只是你使用 Object 进行操作的开始。如果有疑问,请记住-使用对象。如果需要,你随时可以使用这种惊人的模式进行回退!

代码语言:javascript
代码运行次数:0
运行
复制

这还是类型安全的,多么健壮的解决方案。

充分拥抱便捷编程的艺术

你知道比尔·盖茨更喜欢懒惰的开发人员吗?比尔·盖茨说过:

"I will always choose a lazy person to do a difficult job...because, he will find an easy way to do it. --Bill Gates" "我总是会选择一个懒人去完成一份困难的工作...因为,他会找到捷径。" -- 比尔盖茨

因此,有了比尔·盖茨(Bill Gates)的大力支持,我们可以完全接受我们的懒惰。你准备好了吗?那就开始吧!

  • 永远不要编写测试,只是不要编写错误!
  • 将所有都定义为 public -方便访问!
  • 支持全局变量–您可能需要它们!
  • 大型接口优于小型专用接口–可以使用的方法越多越好!
  • 支持继承而不是合成(使用接口中的默认方法从未如此简单)!
  • 始终使用装箱类型–它们也可以用作对象!
  • 尽可能使用最短的名字(a, b, n 最好)!

不要学习任何新知识–你总是最了解

一个程序员最重要的品质就是对自己有信心。相信自己什么都懂,没有什么可学的!考虑到这一点,请确保不要学习:

  • 新类库
  • 新语言
  • 新框架

这样可以节省你的时间!你永远都不应学习任何新知识,因为你已经是最好的了。

作者:武培轩

https://www.cnblogs.com/wupeixuan/p/12014765.html

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何编写可怕的Java代码?
我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。
武培轩
2019/12/12
9660
如何编写可怕的 Java 代码?
我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。
芋道源码
2020/03/02
9510
Java之类与对象基本使用
2) 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)。比如前面定义猫类 的 int age 就是属性
兮动人
2021/06/29
3730
Java之类与对象基本使用
Java记事本编写HelloWorld程序[通俗易懂]
javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。 该命令用于将 java 源文件编译为 class 字节码文件,如: javac HelloWorld.java。
全栈程序员站长
2022/08/25
7190
Java记事本编写HelloWorld程序[通俗易懂]
2023最新java面试题库
JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序的运行环境,它在计算机中负责将 Java 代码转换成计算机可执行的指令,实现了 Java 代码跨平台的特性。JVM 主要由类加载器、Java 核心类库、字节码校验器、解释器、即时编译器等多个组件构成。
jack.yang
2025/04/05
810
Java 中文官方教程 2022 版(三)
一个典型的 Java 程序会创建许多对象,正如您所知,这些对象通过调用方法进行交互。通过这些对象之间的交互,程序可以执行各种任务,比如实现 GUI、运行动画,或者在网络上传输和接收信息。一旦一个对象完成了它被创建的工作,它的资源就会被回收以供其他对象使用。
ApacheCN_飞龙
2024/05/24
3770
Java 中文官方教程 2022 版(三)
有效提高java编程安全性的12条黄金法则
安全性是软件开发中最复杂,最广泛和最重要的考量之一。Java是具有许多内置安全性功能的开发平台,java在长期的发展过程中,已经经过了很多高强度的安全测试,并经常更新安全漏洞。并且Java生态系统还包括用于分析和报告安全性问题的各种工具。 
字母哥博客
2020/09/23
7260
有效提高java编程安全性的12条黄金法则
过去一百年那些“被打脸”的科技预言
大数据文摘作品,转载要求见文末 作者|Ilya Pestov 编译团队|Aileen,杨捷,孙雅姗 新年伊始,科技圈有个预测未来的传统。 区块链究竟是一种主流科技 还是一个流行语? 机器人和应用软件 谁会是最后的赢家? 我们还有许多这类的疑问, 也有不少大咖据此做出来自己的预言。 而预测未来是一件有风险的事, 如果所预测是临近的未来,更是如此。 在过去的一百年中,科技界的很多预言被证明是不太可靠的。虽然他们是梦想者,并且曾经对市场份额、科技进步及其应用率做出过严肃的预测,然而这些深入人心的预测,常常却被证明
大数据文摘
2018/05/24
9840
关于Java里面的嵌套类,你了解多少?
最近在看《Core Java for the Impatient》这本书,当然为了方便我看的是英文电子版的PDF格式(有需要的朋友,可以后台留言给我),期间又重新认识或升级了不少Java相关的知识,今天我们来聊一聊Java里面的内嵌类,又称嵌套类。
我是攻城师
2018/06/02
1K0
关于Java里面的嵌套类,你了解多少?
最近在看《Core Java for the Impatient》这本书,当然为了方便我看的是英文电子版的PDF格式(有需要的朋友,可以后台留言给我),期间又重新认识或升级了不少Java相关的知识,今天我们来聊一聊Java里面的内嵌类,又称嵌套类。
我是攻城师
2018/07/23
4950
关于Java里面的嵌套类,你了解多少?
Java 回顾 ( Revisiting Java )
最近在看一些工程代码,于是看了看设计模式,看设计模式之前发现Java是先修知识,又重新补了一遍Java,温故知新,获得一些新的体会。 本文不打算作为“Java知识点详细梳理”,“10分钟学会Java”之类的文章,仅作为博主自己的一个回顾,涉及的内容也无定法。
哲洛不闹
2018/09/14
1.6K0
Java 回顾 ( Revisiting Java )
Effective Java(第三版)——条目十五:使类和成员的可访问性最小化
“ Effective Java(第三版)翻译已经进入到第四章:类和接口。(第一章是引言),在第二章条目一到条目九我们讲的是对象的创建和消亡,在第三章条目十到条目十四我们讲到所有对象的公用方法,那么这一章我们会说到类和接口”
每天学Java
2020/06/01
9730
Effective Java(第三版)——条目十五:使类和成员的可访问性最小化
Java基础面试题
① 重写发生在父类子类中,若子类方法想要和父类方法构成重写关系,则它的方法名、参数列表必须与父 类方法相同。 ② 返回值要小于等于父类方法,抛出的异常要小于等于父类方法,访问修饰符则要大 于等于父类方法。 ③ 若父类方法的访问修饰符为private,则子类不能对其重写。
杨校
2022/12/09
3190
Java基础面试题
菜鸟教程 Java 学习笔记 (基础教程)
Java作为一种面向对象的语言,支持以下基本概念:多态、继承、封装、抽象、类、对象 实例、方法、重载。
全栈程序员站长
2022/07/21
1.2K0
菜鸟教程 Java 学习笔记 (基础教程)
Java基础语法
java 基 础 语 法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类:类是一个模板,它描述一类对象的行为和状态。 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。 java第
用户1667431
2018/04/18
8870
Effective Java通俗理解(上)
  这篇博客是Java经典书籍《Effective Java(第二版)》的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约会持续1个月左右。 第1条:考虑用静态工厂方法代替构造器   通常情况下我们会利用类的构造器对其进行实例化,这似乎毫无疑问。但“静态工厂方法”也需要引起我们的高度注意。   什么是“静态工厂方法”?这不同于设计模式中的工厂方法,我们可以理解它为“在一个类中用一个静态方法来返回这个类的实例”,例如: public st
用户1148394
2018/01/12
1.5K0
Effective Java通俗理解(上)
《Java从入门到放弃》JavaSE入门篇(八):面向对象语法二
想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧。
良月柒
2019/03/19
3500
Java程序设计(面向对象)- 相关内容[通俗易懂]
当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体。 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那该怎么办呢? 分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
全栈程序员站长
2022/08/04
1930
Java程序设计(面向对象)- 相关内容[通俗易懂]
Java基础小结(一)
1、default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
WindCoder
2018/09/19
6540
关于Java基础你不得不会的34个问题
12. String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的
乔戈里
2019/03/30
9680
相关推荐
如何编写可怕的Java代码?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验