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

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

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

9510

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

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

32410

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

我说我为什么抽不到SSR,原来是加权随机算法在作祟 ★阅读本文需要做好心理准备,建议带着深究到底的决心和毅力进行学习! ” 灵魂拷问 为什么有 50% 的几率获得金币?...为什么有 40% 的几率获得钻石? 为什么只有 9% 的几率获得装备? 为什么才有 1% 的几率获得极品装备? 是人性的扭曲,还是道德的沦丧,请和我一起走进今日说法 !...方案二、略显聪明 由于总权重为 15(1+2+4+8),我们可以生成一个 [0,15) 的随机整数,然后根据这个数字返回索引。代码如下。...优化前 优化后 方案七、"偷鸡"取巧--轮盘赌 目前为止我们所有的方案都有一个共同点 —— 生成一个介于 0 和“权重之和”之间的随机数,并找出它属于哪个“切片”。 还有一种不同的方法。...我们的代码最终都是经过编译系统转换成可执行二进制文件。汇编阶段读取的是词法、语法单元输出的结果。而内联是编译器对词法、语法分析器对源代码做出的分析,然后产生二进制代码这个过程叫内联。

1.3K20

Unity3D中Isometric Tilemap功能实践「建议收藏」

导入图片生成纹理图片 如果将使用TileMap画地图比作给墙贴瓷砖,那么首先我们需要为瓷砖设置不同的花纹,所以我们要导入一张图片作为花纹。...导入图片生成纹理图片后,需要将其纹理类型设置为Sprite (2D and UI),因为Tilemaps不支持其它的纹理类型。...通过Assets > Create > Tile生成一个Tile文件,然后将之前导入的纹理图片与Tile文件关联。...如果拖动纹理图片到Tile Palette上,也会自动生成一个Tile文件,这样方便得多。 开始绘制Tilemap 贴瓷砖就是从瓷砖箱中选择瓷砖,然后贴到墙上。...以下是最终效果: 总结 不知道为什么最后一个那么大的坑在官方文档上完全没有提及,而且这个功能从这个角度来看,不像是完全做完了的样子。

2.2K10

我说我为什么抽不到SSR,原来是这段代码在作祟…丨技术创作特训营第一期

然后通过 rand.Intn() ,获取一个随机数,就完成了,代码如下。...方案一中的列表不是必须的,方案二避免生成大的列表。由于总权重为 15(1+2+4+8),我们可以生成一个 [0,15) 的随机整数,然后根据这个数字返回索引。代码如下。...{ return 1 } else if 3 < r && r <= 7 { return 2 } else { return 3 } } 方案三、神之一手 方案二避免了方案一中的生成列表...但是我们必须写很多的 if else 代码,这看起来太难看了,为了避免编写过多的 if else 代码,衍生出了方案三。 不必将 r 与所有的范围进行比较。...图片 图片 方案七、轮盘赌 目前为止我们所有的方案都有一个共同点 —— 生成一个介于 0 和权重之和之间的随机数,并找出它属于哪个“切片”。 还有一种不同的方法。

31650

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

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

1.4K20

dotnet 读 WPF 源代码笔记 为什么自定义的 UserControl 用户控件不能跨程序集继承

本文将从源代码的角度告诉大家 WPF 框架是如何阻止跨程序集继承 先来写一些演示使用的代码,新建一个 WpfLibrary1 项目用来存放自定义的用户控件。...pull origin 9bcae76c2910b4dfb4b1e0ba02d59876c614fbb1 以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源 git...而此 InitializeComponent 方法是 WPF 的生成代码,实际代码放在 xx.g.i.cs 文件里面,里面的代码大概如下 public void InitializeComponent...但实际的调用类型,却发现是继承的类型,放在另一个程序集,不符合框架设计的预期,抛出异常 这就是为什么自定义的 UserControl 用户控件不能跨程序集继承的原因 在 WPF 的 LoadComponent...方法是比较复杂的,本文只是将里面相关代码写出来,具体是如何调用的,我是通过调试的方法了解的 调试的方式我录了视频放在哔哩哔哩,请看 为什么自定义的 UserControl 用户控件不能跨程序集继承_哔哩哔哩

92410

制作简版消消乐(三):实现方块的生成与交换

前言 在上一篇文章中我们实现部分基础组件和管理脚本,那么本篇文章将和大家一起实现方块的生成与交换的逻辑。 温馨提醒:本文含有大量代码和注释,请提前做好心理准备并认真阅读。 话不多说,冲鸭!!!...根据 GameConfig 中的配置遍历生成类型表,然后再根据类型表生成方块: import Tile from ".....接下来有大量代码和注释,虽然我每个函数都加了注释,但是我还是建议你直接拉到底部阅读完整文件,那样会比较好理解: private selectedCoord: Coordinate = null; //...this.tileMap[x][y] : this.tileMap[x.x][x.y]; } /** * 设置组件表 * @param x 横坐标 * @param y 纵坐标 * @param...: Tile) { if (typeof x === 'number') this.tileMap[x][y] = tile; else this.tileMap[x.x

1.8K10

自学HarmonyOS应用开发(52)- 地图数据拼接和缓存

} } } 函数calculateOffset用于计算当前瓦片和画面中心之间的偏移量;getMapUrlString是一个工厂方法用于根据地图数据源,瓦片位置和当前的缩放级别生成瓦片数据...获取瓦片数据 下面是通过x,y两个方向循环获取足以覆盖整个表示区域的瓦片数据的代码。如果需要的数据已经存在则不再重新获取;如果存在新获取的地图数据,则触发画面更新。...@Override public void run() { //HiLog.info(LABEL, "TileMap.loadMapTile.run.TileMap.this.invalidate...canvas) { HiLog.info(LABEL, "TileMap.onDraw!")...参考代码 完整代码可以从以下链接下载: https://github.com/xueweiguo/Harmony/tree/master/StopWatch 参考资料 Slippy map tilenames

37330

Java游戏编程不完全详解-5

本章我们介绍怎样创建基本的地图、地图文件、碰撞侦测、加体力、简单的敌人,以及生成背景的视差滚动效果等。...我们创建地图时呼叫TileMap的addTile()方法和addSprite()方法,该方法的灵活性非常好,但是,这样编辑地图的级别比较困难,并且代码本身也不是很优雅。...如果我们需要下一个地图,只需要让代码去寻找下一个地图文件即可;如果没有找到,代码回装载第一个地图。也就是说,我们不需要新地图,只需要在这个目录中删除地图文件即可,也不需要告诉游戏有多少个地图存在。...比如坏蛋死亡、是否伤害到玩家,正在飞行的坏蛋不能下降等 最后collideVertical()和collideHorizontal方法当坏蛋碰到一个tile时被呼叫。...因为TileMap包含了所有的sprite列表,所以我们可以从这个列表中检查它们与否与玩家发生了碰撞。如下图 完整代码参见GameManager类中的getSpriteCollision方法。

1.6K30
领券