首页
学习
活动
专区
工具
TVP
发布

翻译Java局部变量类型推断的代码风格规范

但是译者发现,如果滥用此特性,代码的可读性不升反降,这显然与Java引入该特性的初衷相悖。...由于译者水平有限,翻译错误在所难免,若发现错误还请及时指出。 引言 Java SE 10 引入了局部变量类型推断。...局部变量类型推断在消除冗余信息,使代码更具可读性的同时,也去除了一些有用的信息,反而降低了代码的可读性。此外,还有一些人担心这个特性会被滥用,以至于人们编写出更多差的Java代码。...即便只需要片刻,但是这样的等待也会影响代码阅读的连贯性。 说到底,代码本身就应该可被理解,而这并不需要借助其他工具。 P4. 显式声明类型需要权衡利弊 Java过去要求局部变量声明时必须显式指定类型。...不要过度关心局部变量的接口编程 Java编程中一个很普遍的习惯是,构造一个具体类型的实例,但是将其赋值给一个接口类型的变量。这使代码得以与抽象而不是具体实现相关联,从而给未来代码的维护保留了灵活性。

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

翻译】Kotlin致简代码之路

翻译】Kotlin致简代码之路 2017-06-30 by Liuqingwen | Tags: Kotlin 翻译 | Hits 一、前言 挺适合新手的一篇建议性博文。...原文链接:Clean Code with Kotlin 因本人水平有限,翻译不好之处还请多包涵,文章中 “ Clean Code ” 我喜欢翻译成“致简代码”,但是这个名字的书一般是被翻译成“整洁代码”...他们删除了一大堆语法噪点和形式主义,最终写出更易读的代码。 更少的形式主义 减少语法噪点 相对于 Java , Kotlin 降低了语法噪点并且更加富有表现力。 访问构造函数不需要 new 关键字。...流行的 Java 习惯和内建模式 在 Java 中有很多惯用方式和模式都需要一大堆的模板代码。比方说,在 Java 中实现单列模式,观察者模式或者代理模式,代码都很冗余。...Kotlin 翻译

1.4K30

Java调用百度翻译API和调用有道翻译API进行翻译

目录 界面编写 调用百度API 调用有道API 源代码 界面编写 我们首先需要设计出这个翻译程序的GUI界面,我们写一个类继承自JFrame类,用来展示程序的主窗口,设置好窗口的名称和大小,设置在关闭窗口时终止程序...根据官方文档通用翻译API接入文档的教程,我们需要拼接出请求参数加密,这里可以借助百度写好的DEMO,下载Java版本的demo。 解压后将包com放到我们的项目源码目录下。...Java中并没有内置JSON的解析,如果要处理JSON必须要借助第三方库,我们这里可以简单的使用正则表达式来提取翻译结果。 再次运行程序,这个可以输出我们想要的翻译结果了。...然后把pom.xml也放到项目目录下,点击加载maven项目,将软件包里面的TranslateDemo.java拉出来放到项目源代码目录下,重命名为YouDaoAPI.java,我们将修改这个程序。...源代码 TranslationDemo.java import javax.swing.*; import java.awt.*; import java.io.UnsupportedEncodingException

28210

Atom飞行手册翻译: 2.6 代码

代码代码段是一个非常有效的工具,可以从一个快捷方式中快速生成常用的代码语法。...选择其中一个之后会执行光标所在的代码段(或者多个光标所在的代码段)。 创建你自己的代码段 所以说这样太爽了。但是,如果语言包中没有包含一些东西,或者你的代码中要编写一些自定义的东西,那会怎么样呢?...例如,你想要添加在Java文件中工作的代码段,我们应该先在我们的设置视图中寻找language-java包,然后我们看到了Scope是“source.java”,代码段最顶层的键就应该是它前面加上一个点...下一层的键是代码段的名字,用于在代码段菜单中,以一个更具可读性的方式来描述代码段。通常来说,这里最好使用对人来说具有可读性的字符串。...在每个代码段的名字下面是prefix,用于触发代码段,以及body,当代码段被触发后用于插入。 每个后面带有数字的$是tab的停止位置。在代码段被触发之后,通过按下tab键来遍历它们。

53620

神经机器翻译代码(上)

目录 机器翻译 统计机器翻译 神经机器翻译 编码器 解码器 注意机制 训练 为翻译德语短语英译的Keras完整代码 机器翻译 机器翻译是将一种语言的源文本自动转换成另一种语言的文本的任务。...统计机器翻译 统计机器翻译(Statistical machine translation,简称SMT)是使用统计模型,学习将文本从源语言翻译成目标语言,给出大量实例的语料库。...神经机器翻译 神经机器翻译,简称NMT,是利用神经网络模型来学习机器翻译的统计模型。...与传统的基于短语的翻译系统不同,基于短语的翻译系统由许多单独调整的小的子组件组成,神经机器翻译试图建立和训练一个单一的、大的神经网络,它可以读取一个句子并输出正确的翻译。...——联合学习对齐和翻译的神经机器翻译,2014 因此,神经机器翻译系统被称为端到端系统,因为翻译只需要一个模型。 NMT的优点在于它能够以端到端方式直接学习从输入文本到相关输出文本的映射。

1K10

JavaTPoint Java 中文教程【翻译完成】

——《两次全球大危机的比较研究》 在线阅读 在线阅读(Gitee) ApacheCN 学习资源 目录 Java 基础 控制语句 Java 类与对象 Java 继承 Java 多态 Java 抽象 Java...封装 Java 数组 Java OOPs 杂项 Java 字符串 正则表达式 异常处理 Java 内部类 Java 多线程 Java I/O 教程 Java 网络 Java AWT & 事件 Swing...JavaFX 教程 java Applet Java 反射 Java 8 日期时间 Java 转换 Java 集合 Java JDBC Java 9 特性 Java 8 特性 Java 7 特性 Java...请您勇敢地去翻译和改进翻译。...虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。

51430

Java并发-JUC-AQS论文翻译

1.引言 Java5版本引入了java.util.concurrent包,改包是通过JAVA社区(JCP)规定的JSR-166规范编写的支持并发操作的类集合....包还定义了接口Condition,以支持监视样式的await/signal操作,这些操作可能与互斥锁类相关联,其实现在本质上与互斥锁类关联在一起. 2.2 性能目标 Java内置锁(使用同步方法和同步代码块访问...但是,这类研究的主要重点是减少空间开销(因为任何Java对象都可以充当锁)和在单线程单处理器上下文使用时的减少时间开销。...虽然这些方法相对于阻塞原语来说比较快,但它们在Java和JVM运行时和或操作系统之间的边界交叉时遇到了可以避免的开销。...J2SE1.5发行版的源代码文档中描述了一些更小的调优,包括CLH队列在第一次争用时所需的初始虚拟节点的延迟初始化。

50120

谷歌Python代码风格指南,翻译版来了!

非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了《谷歌Python代码风格指南》 ,大家这样相互帮助,感觉真是太好了。...2020.01.31 Translator: shendeguize@github Link: https://github.com/shendeguize/GooglePythonStyleGuideCN 本翻译囿于水平...(此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式...(译者:这段翻译可能不准确) The six, future, or past libraries 当项目需要支持Python2和3时,根据需求使用six,future和past. 2.21 带有类型注释的代码...相关的类和顶级函数放在同一个模块内,不必像是Java一样要一个类放在一个模块里.

1.4K20

翻译】200行代码讲透RUST FUTURES (2)

我们只需为每个要完成的任务生成一个新的操作系统线程,并像通常那样编写代码。 我们用来处理并发性的运行时就是操作系统本身。...典型的流程是这样的: 运行一些非阻塞代码 对某些外部资源进行阻塞调用 跳转到main”线程,该线程调度一个不同的线程来运行,并“跳转”到该栈中 在新线程上运行一些非阻塞代码,直到新的阻塞调用或任务完成...下面的代码非常不安全,只是为了展示一个真实的例子。这绝不是为了展示“最佳实践”。这样我们就能达成共识了。 #!...如果上面的代码很难理解,不要感到沮丧。如果不是我自己写的,我可能也会有同样的感觉。你随时可以回去读,稍后我还会解释。...Java script的承诺是立即执行(early evaluated)的。这意味着一旦它被创建,它就开始运行一个任务。与此相反,Rust的Futures是延迟执行(lazy evaluated)。

68710

翻译】200行代码讲透RUST FUTURES (6)

目前还没有严重的错误,但是您可以想象,使用这些代码很容易创建严重的错误。 我创建了一个图表来帮助可视化正在发生的事情: ? 图1: 交换前后 正如你看到的,这不是我们想要的结果....("a: {}, b: {}", Test::a(test2.as_ref()), Test::b(test2.as_ref())); } 正如您从运行代码所得到的错误中看到的那样,类型系统阻止我们交换固定指针...固定到堆是安全的,这样用户不需要实现任何不安全的代码: use std::pin::Pin; use std::marker::PhantomPinned; #[derive(Debug)] struct...Unpin能够阻止API的使用者移动T,除非他写出unsafe的代码. Pinning对于内存分配没有什么特别的作用,比如将其放入某个“只读”内存或任何奇特的内存中。...不安全的代码并不意味着它真的“unsafe” ,它只是减轻了通常从编译器得到的保证。一个不安全的实现可能是完全安全的,但是您没有编译器保证的安全网。

62820
领券