首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

代码审查|这段代码为什么复制文件夹总是“成功”?

最近开始一个人负责整个项目的全栈开发和维护,工作中没了和同事交叉 code review 的环节,所以就打算,如果工作中遇到一些比较典型的代码,包括好味道和坏味道,就拿出来分析下,与大家一起交流,作为另一种形式的...这天遇到这样一个问题:在 Android 手机上复制 assets 里的文件夹到手机里,实际并没有拷贝完成,但代码总是显示成功,看了下代码,使用的是阿里云播放器 Android SDK 的 Demo 里的一个工具类...工具类里的相关代码经过简化后示意如下: public class Commen { private static Commen instance; private volatile boolean...isSuccess = true; } catch (Exception e) { isSuccess = false; } } } 这段代码使用起来若不谨慎...如果由我来写这段代码,我会做这样的修改: 将类改为工具类,公开的方法都是静态方法,不需要单例控制; 方法执行是否成功,由返回值、是否抛出异常来表示,不使用成员变量记录; 拷贝过程中,记录拷贝成功的文件列表

9510

为什么学了那么多门语言,我还是编不好这段代码

对于工程师来说,学习第一门编程语言只是万里长征的第一步,只要你还在这个领域,就不可能只学一种语言,只会一种语言的工程师根本就不能称之为工程师。...2 如果你不能用一种编程语言的基本特性写出好代码,那换成另外一种语言也无济于事,你会写出同样差的代码。比如,你的 Java 代码写得很糟糕,那么换成 Go、Ruby,你的代码也会一样糟糕,甚至更差。...5 SQL 是一门非常非常重要并且应该熟练掌握的语言(虽然它不能被称为程序语言),我在这里用了两个非常,因为很多工程师有些过于轻视 SQL 了,并为此付出了惨重的代价。...6 无论使用什么语言,工程师都应该能够基于这种语言搭建测试框架,写好测试代码和写业务代码一样重要,甚至更重要。...因为竞争条件或者并发中的不确定因素(比如调用顺序)导致的 Bug,仅仅理解语言的基本特性,根本不能解释。

32410

我说我为什么抽不到SSR,原来是这段代码在作祟...

我说我为什么抽不到SSR,原来是加权随机算法在作祟 ★阅读本文需要做好心理准备,建议带着深究到底的决心和毅力进行学习! ” 灵魂拷问 为什么有 50% 的几率获得金币?...为什么有 40% 的几率获得钻石? 为什么只有 9% 的几率获得装备? 为什么才有 1% 的几率获得极品装备? 是人性的扭曲,还是道德的沦丧,请和我一起走进今日说法 !...代码如下。...内联:编译器的一个名词。我们的代码最终都是经过编译系统转换成可执行二进制文件。汇编阶段读取的是词法、语法单元输出的结果。...而内联是编译器对词法、语法分析器对源代码做出的分析,然后产生二进制代码这个过程叫内联。 源代码 https://github.com/guowei-gong/weighted-random

1.3K20

Scala中的语言特性是如何实现的?

我们将这段Scala编译为Java bytecode,然后反编译为Java,会发现编译器为HowIsObjectImplementedInScala这个object生成了两个类: image.png 第一个类只包含一个静态方法...同样,我们可以把这段代码编译为CIL,然后反编译为C#: image.png 和Java代码大同小异,除了静态构造和某几个关键字外,基本一样。...这段Scala代码: image.png 定义了两个字段一个var,一个val,方法中定义了两个局部变量,一个var,一个val。...结果还是有意外收获,我在反编译后的代码中发现了三个有趣的问题: 在Scala中被声明为val的v4为什么在反编译的Java中不是final的呢?...在Scala中被声明为val的v2为什么在反编译的C#中不是readonly的呢? 为什么编译出来的C#代码中的实例级公开方法都是标有override的呢? 为什么呢?为什么呢?为什么呢?

1K70

协变、逆变与不变

这段代码显然错了,看一下刚刚做了什么。...事实上,这段代码可以编译通过,Java 并不会因此报编译错误,而是在运行 persons[0] = new Teacher(); 时抛出一个 java.lang.ArrayStoreException。...extends test.Person>) in List cannot be applied // to (int, test.Teacher) persons.set(0, new Teacher()); 这段代码无法编译通过...为什么数组是不变的?因为数组上的每个单元都相当于包含了两个方法,当写下 T value = arr[3] 这样的代码时,概念上可以理解为 T value = arr3.get()。...在 Scala 中,如果进行了协变或者逆变的标记,编译器就会对这个类型参数的使用进行检查,如果它出现在了错误的位置上,编译器就会提示错误,防止了开发者因此而犯错。

1.8K30

一周播报|东厂小情报:同为P6,阿里资深与蚂蚁高级工程师的差别竟然是这样……

最近正在研究scala,这个语法套路好深啊。 刚开始使用scala加1,话说elasticsearch有scala写的吧,最近打算看看。 ? 养码人B 养码人A ?...写的时候加锁就可以了,为什么还要复制一份原来的数据再改,为什么不能直接改呢? copyonwrite只复制修改部分吧,并不是所有数据都拷贝一份。 ? 养码人B 养码人A ?...哦,应该是我这段代码的问题,我这段代码场景是数组,所以用了copy,如果int型,应该写锁就好了。 ?...C++编译后的产物不是运行效率已经很高了吗…C级别的语言编译后不是二进制吗?...养码人B:以后农药打不好,不能再怪小学生多了哦。那还有啥理由可以甩锅?在线等,有点急。 养码人C:我们这些18周岁以上的沉迷游戏的怎么办...

1.3K10

为什么我建议线上高并发量的日志输出的时候不能带有代码位置

如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~ 本文是“为什么我建议”系列第二篇,本系列中会针对一些在高并发场景下,我对于组内后台开发的一些开发建议以及开发规范的要求进行说明和分析解读...往期回顾: 为什么我建议在复杂但是性能关键的表上所有查询都加上 force index 在业务一开始上线的时候,我们线上日志级别是 INFO,并且在日志内容中输出了代码位置,格式例如: 2022-03...我们接下来测试下,模拟在不同堆栈深度下,获取代码执行会给原本的代码带来多少性能衰减。...模拟两种方式获取调用打印日志方法的代码位置,与不获取代码位置会有多大性能差异 以下代码我参考的 Log4j2 官方代码的单元测试,首先是模拟某一调用深度的堆栈代码: 然后,编写测试代码,对比纯执行这个代码...由此,我建议:对于微服务环境,尤其是响应式微服务环境,堆栈深度非常深,如果会输出大量的日志的话,这个日志是不能带有代码位置的,否则会造成严重的性能衰减。

1.4K20
领券