java编写p_如何编写可怕的Java代码?

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

如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!

1|0对一切使用异常

你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误的一种)很容易犯。当你迭代一个集合时,很容易出错。让我们看看如何使用 Java 异常处理来解决该问题,而不用担心这些讨厌的差一错误!public static void horribleIteration(String [] words){    int i = 0;    try {        while(true){

System.out.println(words[i]);

i++;

}

} catch (IndexOutOfBoundsException e){        //iteration complete

}

}

2|0不用担心访问修饰符

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

Field f = System.class.getDeclaredField("lineSeparator");

f.setAccessible(true);    String separator = (String) f.get(System.class);

System.out.println("Line separator is " + separator + ".");

}

我们在这里读取 lineSeparator,这并没有什么。但是修改 lineSeparator 会带来更多乐趣!在我们修改代码中的 lineSeparator 之后,看看 System.out.println 发生了什么:public static void readWritePrivate() throws NoSuchFieldException, IllegalAccessException {    Field f = System.class.getDeclaredField("lineSeparator");

f.setAccessible(true);    String separator = (String) f.get(System.class);    System.out.println("Line separator is " + separator + ".");

f.set(System.class ,"!!!");    System.out.println("Line one");    System.out.println("Line two");    System.out.println("Line three");

}

输出为:Line separator is WARNING: All illegal access operations will be denied in a future release.Line one!!!Line two!!!Line three!!!

看起来不错!

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

一些开发人员认为他们通过将 final 关键字放在变量前面来以说明不会去更改这个值。事实是——有时候你真的想要改变一个 final 字段的值,所以这是如何做的:public static void notSoFinal() throws NoSuchFieldException, IllegalAccessException, InterruptedException {

ExampleClass example = new ExampleClass(10);

System.out.println("Final value was: "+ example.finalValue);

Field f = example.getClass().getDeclaredField("finalValue");

Field modifiersField = Field.class.getDeclaredField("modifiers");

modifiersField.setAccessible(true);

modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);

f.setInt(example, 77);

System.out.println("Final value was: "+ example.finalValue);

}

public static class ExampleClass {    final int finalValue;

public ExampleClass(int finalValue){        this.finalValue = finalValue;

}

}

注意,在构造函数中提供最终值时,这对我很有用。如果你在类中设置了 final 值,那么它将不起作用。(可能是一些编译器级别的优化破坏了所有的乐趣)

4|0使用 Java 序列化,干就对了

这很简单,用 Java 序列化,玩得开心,好好享受。

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

5|0将对象用于一切

你知道类吗?浪费时间!你是否想看到代码重用的巅峰之作?你去!public static void printThings (List things){    int i = 0;    try {        while(true){

System.out.println(things.get(i));

i++;

}

} catch (IndexOutOfBoundsException e){        //iteration complete

}

}

List superList = new ArrayList();

superList.add(7);

superList.add("word");

superList.add(true);

superList.add(System.class);

printThings(superList);

您可以相信我们一直以来都拥有这种力量吗?另外,组合两个模式还有额外的好处!

这只是你使用 Object 进行操作的开始。如果有疑问,请记住-使用对象。如果需要,你随时可以使用这种惊人的模式进行回退!public static void printThingsUppercaseStrings (List things){    int i = 0;    try {        while(true){            Object o = things.get(i);

System.out.println(o);            if(o.getClass() == String.class){                String so = (String) o;

so = so.toUpperCase();

System.out.println(so);

}

i++;

}

} catch (IndexOutOfBoundsException e){        //iteration complete

}

}

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

6|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 最好)!

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

一个程序员最重要的品质就是对自己有信心。相信自己什么都懂,没有什么可学的!

考虑到这一点,请确保不要学习:新类库

新语言

新框架

这样可以节省你的时间!你永远都不应学习任何新知识,因为你已经是最好的了。你有能力去做这件事,并不代表你应该做

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

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

相关文章

“预习-上课-复习”:达摩院类人学习新范式探索

简介: 预习时关注重点,上课时由易到难,复习时举一反三,能否让机器也按照“预习-上课-复习”的学习范式进行学习呢? 达摩院对话智能(Conversational AI)团队对这个问题进行了研究探索&#xff0c…

西门子Mendix发低代码最新报告趋势:客户体验先行、智能化和全渠道化

88%的受访者将提供高质量的客户体验(CX)作为一项重要目标,38%的受访者期望通过实现这一目标来增长收入 90%的受访者因 “数据孤岛” 问题和技术过时等原因无法顺利提供数字化客户体验 近一半的受访者希望改善他们在移动端的体验,这…

云上虚拟IDC(私有池)如何为客户业务的确定性、连续性保驾护航

简介: 企业业务上云后,还面临特定可用区购买云上特定计算产品实例失败的困境?云上私有池pick一下 Why 云上业务为什么需要资源确定性、服务连续性 云计算正朝着像水电煤一样的基础设施演进,支持用户按需使用、按量付费。目前&am…

Gartner发布2022年七大安全和风险管理趋势

编辑 | 宋慧 出品 | CSDN云计算 Gartner表示,安全和风险管理领导者必须应对七大趋势,才能保护现代企业机构不断扩张的数字足迹免受2022年及以后新威胁的影响。 Gartner研究副总裁Peter Firstbrook表示:“全球企业机构正面临着复杂的勒索软件…

java中img属性_如果html img的src属性无效,请输入默认图像?

回答(19)2 years ago你问过一个只有HTML的解决方案....../p>"http://www.w3.org/TR/html4/strict.dtd">Object Test由于第一个图像没有使用不支持object的旧浏览器,因此它将忽略该标记并使用 img 标记 . 有关兼容性,请参见caniuse网站 .…

阿里云日志服务SLS,打造云原生时代智能运维

2021年10月21日,阿里云针对企业运维难题,在云栖大会为大家带来了一场《智能运维论坛》的主题演讲。在会上,阿里云资深技术专家、日志服务技术负责人简志提出“云原生时代,企业业务数字化是对工程师们严峻的挑战。作为运维工程师&a…

实践分享丨企业上云后资源容量如何规划和实施

简介: 企业上云后,云上的预算直接影响上云的优先级、进度、深度。预算投入的多少,与业务发展和资源需求的容量评估紧密相关。精准的容量评估,可以使企业上云的预算规划更科学,同时也更贴合业务发展阶段的需要。本文分享…

如果让你来设计网络

作者 | 闪客sun 来源 | 低并发编程 你是一台电脑,你的名字叫 A 很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。 直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起…

【ESSD技术解读-01】 云原生时代,阿里云 ESSD 快照服务 助力企业级数据保护

简介:本文以云原生为时代背景,介绍了阿里云块存储快照服务如何基于高性能 ESSD 云盘提升快照服务性能,提供轻量、实时的用户体验及揭秘背后的技术原理。依据行业发展及云上数据保护场景,为企业用户及备份厂商提供基于快照高级特性…

java字节码文件加密_java 字节码加密源码

java 字节码加密源码java2021-2-16下载地址https://www.codedown123.com/73152.htmljava 字节码加密源码,实现对class加密解密资源下载此资源下载价格为2D币,请先登录资源文件列表JvmitPrj/Common.h , 703JvmitPrj/Debug/cl.command.1.tlog , 1870JvmitPrj/Debug/CL…

又居家办公了,要签合同怎么办?

作者 | CSDN 来源 | CSDN云计算 本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动,寻访一百零一个数字化转型场景,聚…

【ESSD技术解读-03】阿里云块存储企业级特性之异步复制

简介: 在大数据时代,数据就是企业的核心资产,是企业的生命线。在现实世界中,灾难时有发生,当发生灾难时,容灾能力成为企业能否生存的关键。云上容灾服务,通常称为 DRaaS(灾难恢复即服…

【ESSD技术解读-04】ESSD Auto PL规格,引领IO性能弹性新方向

简介: 阿里云 ESSD 为云服务器 ECS 提供低时延、持久性和高可靠的块存储服务,成为云厂商全闪块存储的业界标杆。存储团队推出了 ESSD Auto PL 新的云盘规格,把性能与容量解耦,提供 IO 性能按需供给两大关键特性。AutoPL 具备的灵活…

全民营销时代,让私域流量变成业务增量需要几步?

本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动,寻访一百零一个数字化转型场景,聚合呈现并开通评选通道&#xff0…

php 模板解析,关于模板的原理和解析

PHP – 关于模板的原理和解析将PHP代码和静态HTML代码进行分离,使代码的可读性和维护性得到显著提高。使用模板引擎:我们所说的模板是web模板,是主要由HTML标记组成的语言来编写的语言,但也有如何表示包含动态生成内容的方式(解析…

跨越行业绊脚石,阿里云函数计算发布 7 大技术突破

简介: 2021 云栖大会现场,阿里巴巴研究员、阿里云智能云原生应用平台总经理 丁宇(叔同)重磅发布了函数计算的 7 大技术创新和突破,加速现代应用架构的革新。 Serverless 的本质是通过屏蔽底层的计算资源,来…

业内首款云原生技术中台产品云原生 Stack 来了

简介: 云原生 Stack 满足了各种典型场景下客户对于线下高集成平台的诉求,让企业数字话转型不受技术约束,专注业务本身,加速企业数字化迭代。 今天,企业数字化转型依然面临很大的挑战,虽然有很多新技术不断…

从质疑到成为必选项,低代码技术发展及 2022 展望

2022年,CSDN 「低代码产品开发者使用与体验」线上调研,正式开启!现在完成调研,就可参与抽奖活动,还有机会获得线下活动门票一张,和更多行业人士一起交流的机会。 前言 2022年低代码已经不是一个新鲜概念&am…

php魔术方法 效率,PHP常用魔术方法的性能探究

性能往往是衡量代码很重要的一个标准。我们日常编码中经常会用到一些魔术方法,这些PHP提供的魔术方法是否会影响我们程序的性能呢?是否需要减少魔术方法 的使用呢?本文将通过测试对比来了解魔术方法对性能的影响。疑惑魔术方法真的性能比较差…

一图速览 | DTCC 2021大会,阿里云数据库技术大咖都聊了些什么?

简介: 3天9场干货分享,快来收藏吧! 10月18日~10月20日, 由国内知名IT技术社区主办的数据库技术交流盛会——DTCC 2021 (第十一届中国数据库技术大会)在京圆满落幕。大会以“数造未来”为主题,重点围绕数据架构、人工智…