首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【译】送给你的代码审查问题手册

下面这份列表足够帮助你提出好的代码审查反馈了。 实现 此代码更改会执行它应该做的事情吗? 这种解决方法是最简单的吗? 这个更改有引入一些不需要的编译时或运行时的依赖吗?...你能想到任何可能破坏代码的输入或外部事件吗? 错误处理和日志 错误都被正确处理了吗? 是否有需要增加或删除的日志/debug信息? 错误消息对用户是否友好?...从外部API或库中获得的数据是否进行了相应的检查? 性能 这段代码修改是否会对系统性能产生负面影响? 是否可以进一步提升代码性能? 可读性 代码是否容易理解? 哪一部分使你困惑,为什么?...因为这是在代码库中实施唯一性的唯一方法。并且一致性会使代码审查更快,使人们可以轻松地更改项目,并保持您代码的可读性和可维护性。...例如使用静态检查来代替部分人工审核。这是值得为之努力的。 完整问题列表 原文链接 https://www.michaelagreiler.com/code-review-checklist/

1.2K10

代码覆盖率VS测试覆盖率

测试范围:包括测试作为功能需求规范,软件需求规范和其他必需文档的一部分而实现的功能。例如,如果要对Web应用程序执行跨浏览器测试,以确保应用程序可以在其他浏览器流畅运行。...测试套件中是否有足够数量的测试方案?我们应该添加更多测试吗?代码覆盖率是所有这些问题的重要衡量标准。 随着产品开发的进行,新功能以及BUG修复补丁将添加到发布周期中。...工具可用于监视性能,插入跟踪信息以及诊断源代码中的任何类型的错误。 仪器分为三种主要类型 代码检测:这里的源代码是在添加检测语句之后编译的。编译应使用常规工具链完成,编译成功将导致生成检测装配。...例如,为了检查在代码中执行特定功能所花费的时间,可以在功能的“开始”和“结束”中添加检测语句。 运行时检测:与代码检测方法相反,此处的信息是从运行时环境(即在执行代码时)收集的。...PITest:这是一个突变测试框架。它有快、可扩展,并与当前测试和构建工具集成好的优点。传统的测试覆盖率(即行,语句,分支等)仅衡量测试执行的代码。它不会检查测试是否真正能够检测到所执行代码中的错误。

2.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 开发者 | 应用兼容性注意事项

    如果您在 dex 文件中写入自定义的内容,很可能这些自定义的写入操作与系统优化发生冲突,以致自定义的内容被擦除或覆盖,甚至导致优化后的 dex 在执行时直接崩溃。...DexFile 在应用开发中的使用暴露了很多问题,导致应用崩溃或错误结果。...比如,当多个类加载器试图使用同一个 DexFile 对象来定义某个类时,Android 系统会抛出 InternalError,其错误信息为 “Attempt to register dex file...这是因为运行环境将 DexFile 与一些附加的内部状态信息进行关联,而这些内部状态信息不能在类加载器之间进行共享。 所以,请不要在应用代码中再使用 DexFile 类型。...我们也开始与一些常见的 SDK 提供商合作(并计划覆盖更多),在 Android 新的预览版本中尽早解决兼容性问题。

    1.4K40

    使用 Kotlin 构建的常见问题解答 | Kotlin 迁移指南 (下篇)

    Google 正在与 JetBrains 开展合作,确保开发者在整个开发过程中 (从语言到框架再到工具) 都能获得出色的体验。...我可以在 Kotlin 中调用 Android 或其他 Java 语言库的 API 吗? 可以。Kotlin 与 Java 语言具有互操作性。...要了解详情,请参阅 Kotlin 互操作文档。 你们有 Android API 的 Kotlin 参考文档吗? 有!我们正努力使所有 Android API 文档都包含惯用 Kotlin 参考。...Kotlin 运行时会导致您的调试 APK 增加大约 7,000 个方法和约 1MB 的大小。如果您使用 Kotlin 替换项目中的另一个库 (例如 Guava 或 RxJava),净影响可能会降低。...例如,在新的集合实例间重复复制会影响 GC 性能,调用允许非空类型的方法会导致调用空值检查方法 (当然,您可以在编译器中使用 -Xno-param-assertions 停用运行时空值检查)。

    4.4K20

    Carbon vs Rust | 你想要了解的

    Carbon 将在编译时进行尽可能多的安全检查,也将提供动态运行时检查和强大的测试方法,从单元测试到集成和系统测试,一直到覆盖导向的模糊测试。...在编译时无法证明安全性的情况下,将启用运行时检查,无论是错误检测还是安全强化。...两者的关键区别在于,模板参数只能在实例化过程中完成类型检查,而可检查泛型则指定了一个接口,参数可以在没有实例化的情况下完成类型检查。...后者的好处是: 泛型函数的类型检查错误更早发生,使编译器更容易产生有用的诊断。 泛型函数可以产生较少的编译输出,使有许多用途的编译变得更快。...愿意将 C++ 的惯用语暴露在 Carbon 代码中,反之亦然,必要时最大限度地提高互操作性层的性能。 使用包装器和泛型编程(包括模板)来最小化或消除运行时开销。

    1.6K11

    2013年12月12日 Go生态洞察:深入Go Playground的内部实现

    这是一个编译并执行任意Go代码的网络服务,让我们深入其背后的技术实现,解析它如何与各种服务整合,以及它如何安全地执行任意用户代码。准备好了吗?让我们一起揭开Go Playground的神秘面纱吧!...正文 Playground服务概览 Go Playground服务包含三个部分: 后端:运行在Google服务器上,接收RPC请求,使用gc工具链编译用户程序,执行用户程序,并将程序输出或编译错误作为...前端:运行在Google App Engine上,接收客户端的HTTP请求,并将相应的RPC请求发送到后端。它还执行一些缓存操作。...为了隔离用户程序,后端在Native Client(或“NaCl”)下运行它们,这是Google开发的一项技术,用于在Web浏览器中安全执行x86程序。...我们的要求是您首先联系我们,在您的请求中使用独特的用户代理(以便我们可以识别您),并且您的服务对Go社区有益。 总结 Go Playground已成为我们Go文档故事的重要组成部分。

    12310

    01 . Go语言简介及语言特征

    但是它通过接口(interface)的概念来实现多态性。Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说Go语言是一门混合型的语言。...在 Google I/O 2012 的 Go 设计小组见面会上,Rob Pike 是这样说的: 我们做了大量的 C++ 开发,厌烦了等待编译完成,尽管这是玩笑,但在很大程度上来说也是事实。...Go语言吉祥物 Go语言有一个吉祥物,在会议、文档页面和博文中,大多会包含下图所示的 Go Gopher,这是才华横溢的插画家 Renee French 设计的,她也是 Go 设计者之一 Rob Pike...最关键的是,标准库有升级和修复保障,还能从运行时获得深层次优化的便利,这是第三方库所不具备的。 Go 标准库虽称不得完全覆盖,但也算极为丰富。...Go 在此做得相当不错,无论是编译、格式化、错误检查、帮助文档,还是第三方包下载、更新都有对应的工具。其功能未必完善,但起码算得上简单易用。

    2.1K60

    谷歌搜索秘籍泄漏:揭秘内部工程文档

    根据变更历史,这一错误已在 5 月 7 日得到修正,但相关的自动化文档依然可以访问。...虽然我所审查的文档中没有谷歌评分算法的具体细节,但它提供了关于存储内容、链接和用户互动数据的丰富信息,以及关于这些数据如何被操作和保存的详尽描述,从而揭示了一系列的特征。...这表示所有的代码都汇集于一处,任何网络中的机器都可能成为谷歌系统的一部分。 泄漏的文件详细描述了 API 的各个模块,并把它们按照摘要、类型、函数和属性进行分类。...这是一串讨论的一部分,获得了 36 个赞、一个奖项以及其他 24 条回复。帖子的文本内容如下:garyillyes OP • 5 年前 嘿 Lyndon!...SegIndexer – 这个系统负责在索引中对文档进行分层。 TeraGoogle – 这是一个为长期存于硬盘的文档设立的次级索引系统。

    14310

    什么是java的多态

    运行时多态是在父类引用指向子类对象时产生的。一个父类的引用可以指向多种子类对象,那么运行时对于同一个消息应该如何做出响应呢?这就由实际的被引用的对象的类型来决定。 b. 为什么要有重写呢?...要理解这是为什么,我们要先理解下面这句话: 当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法...当运行 a2.show(b) 的时候,实际是要调用一个 show(B obj) 的方法,但是 A 中有这样一个方法吗?没有!...它说:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。...但是为什么跟前面的分析得到的结果不相符呢?!问题在于我们不要忽略了蓝色字体的后半部分,那里特别指明:这个被调用的方法必须是在超类中定义过的,也就是被子类覆盖的方法。

    55920

    TypeScript: 请停止使用 any

    我们看到的大多数用法都表明我们正在处理 TypeScript 中的基本类型。在文档中我们可能会找到: (…)来不使用 TypeScript 或第3方库编写的代码的值。...这听起来像是选择退出类型检查器,有了它,就不能轻易地放弃对类型系统的所有安全性和信心。我们应该使用它来与无类型的第三方(或第一方) Javascript 代码交互,或者当我们只知道类型的一部分时。...但是等等我还有很多其他原因 TypeScript 不会转换为 Javascript 吗?Javascript 不是动态的吗?那我为什么要考虑我的类型呢? 是的!...但是我们用 TypeScript 写代码,这是一种静态类型语言。有人可能会说静态类型语言不会比动态语言产生更少的 bug 。不过,在使用 any 之类的静态类型语言中,这是两种情况中最糟糕的。...我已经通过必要的运行时检查以防御性的方式编写了代码,以确保没有错误 现在可能没有错误,但是除非你有很好的测试覆盖率,否则以后来修改代码的人不会相信他们不是在错误中重构;就好像编译器不会帮你,因为我们说过它不会帮你

    1.2K21

    Anbox安卓apk应用安装及使用说明和常见问题

    在主机系统上安装adb后,可以安装以下应用程序: $ adb install path/to/my-app.apk 之后,您的应用程序应作为Anbox运行时的一部分安装,并可通过主机系统应用程序启动器启动...4  谷歌将Android应用程序引入Chrome操作系统的努力是否有任何关系? Google正在以与我们非常相似的方式在Chrome操作系统中为Android应用程序提供支持。...6  Anbox无法在我的设备上启动。我做错了什么? 最有可能的不是你的错。Anbox仍处于早期阶段,并且在各种不同的系统中没有太多的测试覆盖率。...如果Anbox没有为您启动,请按照 此处的说明进行操作并提交错误报告,以便开发人员可以查看问题。 7  你说Anbox是收敛的。它今天在手机上运行吗?...Anbox目前没有做的一件事是对快照使用适当的限制。现在它只有在安装在所谓的快照模式中时才可用,它会禁用任何限制。这是我们将在未来几个月与上游合作的事情,以使我们的快照完全受限。

    5.3K40

    你还有什么问题吗?

    您的开发人员是否使用 Skype 或 Google Hangouts 等视频聊天软件? 如果团队中的一部分人在办公室工作,您是否有专用计算机用于与远程员工进行视频聊天? 我必须通过 VPN 工作吗?...目前的测试覆盖率是多少?你满意吗? 您是否定期纠正技术债务? 从 0 到 10,你有多少 spaghetti code? 您的代码库的文档记录如何?...您是否使用像 PHPDoc 或 JSDoc 等自动化文档系统? 维护 wiki 吗? 纯 CSS,还是编译中间件(LESS, SASS, etc)? 您支持哪些浏览器和操作系统版本?...(ITIL 等) 您是如何组织系统管理、应用程序开发、应用程序部署和应用程序运维,使它们有序结合的? 是否有服务器文档/操作指南/最佳实践的 wiki?...您的应用程序是针对水平扩展还是垂直扩展而构建的? 服务器的平均正常运行时间是多少? 您认为正常运行时间是系统可靠性的一个很好的指标吗? 你如何测试容错能力?你有某种“Chaos Monkey”吗?

    41410

    BATJ面试必会之常见Java基础面试题(附答案)

    Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。...而在 Java 7,String Pool 被移到堆中。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。...这是一道更好的泛型面试题。泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如List 在运行时仅用一个List来表示。...(3)什么是泛型中的限定通配符和非限定通配符 ? 这是另一个非常流行的Java泛型面试题。限定通配符对类型进行了限制。...这是上一道面试题的延伸。面试官可能会要求你用泛型编写一个类型安全的类,而不是编写一个泛型方法。关键仍然是使用泛型类型来代替原始类型,而且要使用JDK中采用的标准占位符。

    89620

    现已推出 Android 8.1 和 Android Oreo Go 版本 —— 为所有人打造由 AI 驱动的全覆盖移动平台

    昨天 Google 在印度正式发布 Android 8.1 Oreo,这是 Google 向实现 “为所有人打造由 AI 驱动的全覆盖移动平台” 这一愿景迈出的一大步。...Android 8.1 Oreo 同时引入神经网络 API,为应用提供了一个利用机器学习加速硬件的运行时。...该 API 在支持设备上,能够在多个关键使用场景下(例如基于视觉的对象分类)实现快速高效的推理(inference)操作。 何不从今天起就开始使用 Android 8.1 Oreo?...Google Play: 届时所有应用都可以安装在 Android Oreo(Go 版本)设备上,Google Play 还会给部分经过专门优化的应用提供额外宣传,将这些案例写在《为数十亿用户打造产品指南...大部分开发者可以优化现行 APK 或者使用 Google Play 提供的 “多 APK 功能 (Multiple APK feature)” 为低内存设备选择特定 APK,从而为自己 App 在 Android

    1.3K40

    C++最佳实践 | 1. 工具

    在可能需要按位操作的地方使用逻辑操作时发出警告(仅在GCC中) -Wnull-dereference 如果检测到空解引用将发出警告(仅在GCC >= 6.0中) -Wuseless-cast 如果执行强制转换到相同的类型...吗?...运行时检查 代码覆盖率分析 覆盖率分析工具应该在测试执行时运行,以确保整个应用程序都被测到。不幸的是,覆盖率分析需要禁用编译器优化,这将导致测试执行时间大大延长。...堆分析 https://epfl-vlsc.github.io/memoro —— 一个详细的堆分析器 忽略警告 如果团队一致认为编译器或分析器对不正确或不可避免的错误发出警告,则团队需要尽可能只在最小的范围内禁用特定的错误警告...如果目标是100%的代码覆盖率,很明显这些错误场景也需要被覆盖的。 调试 uftrace uftrace[87]可以用来生成程序执行的函数调用图。

    3.4K10

    100 个基本 Python 面试问题第四部分(61-80)

    Q-5:Python 中可用的内置类型有哪些? Q-6:如何在 Python 应用程序中查找错误或执行静态分析? Q-7:什么时候使用 Python 装饰器?...Q-11:使用 python reg 表达式模块“re”编写一个 reg 表达式来验证电子邮件 ID? Q-12:你认为以下代码片段的输出是什么?代码中有错误吗?...Q-21:Python 中的文档字符串是什么? Q-22:Python 编程中的函数是什么? Q-23:Python 中有多少基本类型的函数? Q-24:我们如何用 Python 编写函数?...Q-58:Python 列表是链表吗? Q-59:Python 中的 Class 是什么? Q-60:Python 类中的属性和方法是什么? Q-61:如何在运行时为 Class 属性赋值?...键应该是不可变类型,也就是说,我们将使用不允许在运行时更改的数据类型。我们将从整数、字符串或元组中进行选择。 但是,我们可以采用任何类型的值。

    3K21

    Kotlin 语言入门宝典 | Android 开发者 FAQ Vol.5

    导语: 官方出的 FAQ ,kotlin是兼容 java 6.0 的 jvm 语言,此篇 FAQ 中,大概需要重点关注的大概是 APK 的影响吧: Kotlin 在运行时可能会在您的 debug APK...Kotlin 互操作文档”。...Google 和 Kotlin 的合作确保了使用Kotlin的过程是一个完整而美妙的故事 —— 从语言、框架到工具。我们非常高兴这样的合作能使 Kotlin 成为一个非盈利的工具来为广大开发者所用。...针对 Kotlin 也会提供(与 Java 相同)完整的对应文档、代码和模版吗? 我们正在努力的将我们的文档、代码、模版尽可能的同时覆盖于 Java 和 Kotlin。...比如说:在多个 collection 实例中,重复的复制操作会影响 GC 性能,调用一个接受非空类型的方法,会增加一个空检查的方法调用(但是您可以通过设置 -Xno-param-assertions 来禁用编译时运行空指针检查

    2.6K60

    AS中的minSdkVersion、compileSdkVersion、targetSdkVersion、buildTools

    当你修改了 compileSdkVersion 的时候,可能会出现新的编译警告、编译错误,但新的 compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译的时候使用。...他们就是你把应用发布到 Google Play 时的潜在用户。最终这是一个商业决策问题,取决于为了支持额外 3% 的设备,确保最佳体验而付出的开发和测试成本是否值得。...这允许你在适应新的行为变化之前就可以使用新的 API (因为你已经更新了 compileSdkVersion 不是吗?)。...targetSdkVersion 所暗示的许多行为变化都记录在 VERSION_CODES 文档中了,但是所有恐怖的细节也都列在每次发布的平台亮点中了,在这个 API Level 表中可以方便地找到相应的链接...来覆盖最大的人群,用最新的 SDK 设置 target 和 compile 来获得最好的外观和行为。

    89320

    grpc部署初体验

    grpc是google开源的RPC框架,基于http2协议和ProtoBuf序列化机制,关于它的使用实例在官方文档已经有比较详细的介绍,在此仅对安装部署过程作一番总结。...Protobuf Runtime,针对特定语言的运行时库,如java中即是protobuf-java前缀的jar包。 protoc-gen-grpc-java插件,生成通讯代码,如: ?...环境编译安装过程中会遇到一些缺少文件的错误,涉及一些编译,C语言库的知识,这是一个很不错的探索机会,但是生产使用过程中我们需要的是安全,简洁,高效,把一部分过程封装起来,使用一些工具来统一管理这一过程,...使用maven插件就是一个不错的方法,不需要很多步骤,只需要在pom.xml中加入一个配置即可,如你使用grpc v0.14.0: ...为false,是为了执行compile和compile-custom过程中不覆盖前一步骤生成的文件。

    2K80

    Go语言核心36讲(新年彩蛋)--学习笔记

    答:我们需要特别注意的是,当操作其中一个切片的时候是否会影响到其他指向同一个底层数组的切片。 如果是,那么问一下自己,这是你想要的结果吗?无论如何,通过这种方式来组织或共享数据是不正确的。...答:这一般会用到goto语句和标签(label),具体请参看 Go 语言规范的这部分。 complexArray1被传入函数的话,这个函数中对该参数值的修改会影响到它的原值吗?...请列举出你经常用到或者看到的 3 个错误类型,它们所在的错误类型体系都是怎样的?你能画出一棵树来描述它们吗? 答:略。这需要你自己去做,我代替不了你。...不过,由于覆盖度分析开启之后go test命令可能会在程序被编译之前注释掉一部分源代码,所以,若程序编译或测试失败,那么错误报告可能会记录下与原始的源代码不对应的行号。...关于保证并发安全字典中的键和值的类型正确性,你还能想到其他的方案吗? 答:这是一道开放的问题,需要你自己去思考。其实怎样做完全取决于你的应用场景。

    41601
    领券