静态分析的教育方面

加入我们项目的新程序员经常会问我们是否具有自动格式化工具,以使Java代码看起来完全符合Qulice的期望。 (Quili是我们使用的静态分析器。)我总是回答说,拥有这样一个自动代码抛光器只会有害,不会帮助项目及其成员改进和成长。 这就是为什么我这么认为。

菲利普·诺伊斯(1989)

静态分析是我们与只读master分支结合使用的方式,它是对请求请求的完全自动化的不妥协的检查,主要用于发现代码格式错误。 假设我们希望整个存储库中的Java代码如下所示:

final class Doc {private final File file;public void remove() {if (this.file.exists()) {this.file.delete();}}
}

但是,您将其重构为更大的任务的一部分,并提交如下的拉取请求:

class Doc {private File f;public void remove(){if (f.exists())f.delete();}
}

对于你们中的某些人来说,这似乎没有太大的区别,因为两个代码段都可以毫无问题地编译,并且工作方式完全相同。 但是,对于我们(存储库维护者)而言,这很重要。 我们确实希望我们的类始终是final ,我们确实希望它们是不可变的(因此所有属性也应该是final ),我们想为此添加所有属性引用前缀this. ,并且我们希望代码采用相同的格式,因为我们认为代码的统一性会大大提高其可维护性。

当然,我们可以创建一个工具,然后您可以使用该工具重新设置代码的格式,使其看起来像我们想要的样子。 但是在那种情况下,您将永远无法了解项目想要您做什么以及为什么要这么做

您将不知道我们规则背后的原因。 您永远不会考虑它们。 您将不会真正在乎它们。 但是,它们不仅涉及空格和方括号的格式。 Qulice中有900多个 ,其中一些是专门针对我们正在讲授的面向对象的哲学而设计的。

因此,简而言之,我们不希望您轻松进行静态分析阶段。 我们希望您为了学习而受苦。

翻译自: https://www.javacodegeeks.com/2018/01/educational-aspect-static-analysis.html

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

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

相关文章

2020-08-14 光纤通信第三章知识点整理

目录 3.1 光接收机 2 3.1.1 光接收机的分类与性能指标 2 3.1.2 直接检测光接收机的构成及功能 2 3.2 光电检测器 3 3.2.1 PN结的光电效应 4 3.2.2 PIN光电二极管 4 3.2.3 雪崩光电二极管(APD) 6 3.3 放大电路及其噪声 7 3.3.1 噪声的数学处理 8 3.3.2 放…

2020-08-21 光纤通信第四章知识点整理

第四章 光纤通信系统 目录 4.1 模拟光纤通信 2 4.2 数字光纤通信系统和总体设计 3 4.2.1 数字光纤通信系统基本组成 3 4.2.2 数字光纤通信系统总体设计 4 4.3 数字光纤传输系统的性能指标 7 4.3.1 误码性能 7 4.3.2 抖动、漂移性能 8 4.3.3 可用性 8 4.4 光纤放大器及其在光纤通…

2020-08-24 光纤通信第五章知识点整理

第五章 无源光器件和WDM技术 目录 5.1 无源器件的几个常用性能参数 1 5.2 光纤和波导型无源光器件 2 5.2.1 光连接器和光耦合器 2 5.2.2 偏振控制器 3 5.2.3 光纤布拉格光栅 4 5.2.4 Mach-Zahnder滤波器 5 5.2.5 非线性环路镜 5 5.3 光学无源器件 6 5.3.1 偏振分束器 6 5.3.2 光…

使用Java 9向Javadoc搜索添加术语

有一个相对较旧的网页,称为“ Proposed Javadoc Tags ”,最初似乎是与Javadoc 1.2一起编写的,其中列出了“ Sun有朝一日可能会在Javadoc中实现的标签”。 在此列表中的标签是category , example , tutorial &#xff0…

Java语言学习概述

md:创建新的文件夹 上面这行作用:将name:Tom,age12写入到文件1.doc中,也就是说先建个文档,再把这句话写进去。 del *.txt 作用:删除以txt结尾的所有文件 rd team2 作用:删除team2文件夹(且这…

小狐狸ChatGPT付费创作系统 前端对话提示undefined index:temperature解决方法

很多会员使用着ChatGPT付费创作系统,特别是新安装系统后前端输入对话时提示错误undefined index:temperature,检查了反代、检查了KEY均正常,这问题主要是因为后台设置里新用户免费送对话次数为空,没设置赠送次数原因,导…

第二章 Java基本语法(一)

本文主要内容: 关键字、标识符、变量、类型转换、进制转换、运算符 一、关键字 二、标识符 比如:类名,变量名,方法名,接口名,包名。。。 小技巧:直接在我的电脑输入cmd,就可以打开…

第二章 Java基本语法(二)

本文主要内容&#xff1a; 运算符、if-else、switch-case 一、位运算符 运算符之五&#xff1a;位运算符 每左移一位&#xff0c;相当于是在原来的基础上乘2. int i 21; System.out.println(“i<<2:”(i<<2)); 输出&#xff1a;i<<2:84 结论&#xff1a; …

第二章 Java基本语法(三)

本文主要内容&#xff1a; 循环结构、特殊关键字break和continue的使用&#xff0c;质数问题的优化 循环结构&#xff1a;Boolean类型 程序编写&#xff1a; 从键盘输入两个正整数m和n&#xff0c;找出他们的最大公约数和最小公倍数。 import java.util.Scanner; public clas…

Matlab入门(一)

MATLAB学习笔记 本系列主要内容来源&#xff1a;matlab官方付费课程的学习笔记 截图较多&#xff0c;之后更新会尽量增加文字说明 matlab简单常用的命令 数组 round:四舍五入函数。

MATLAB入门(二)

可以使用 plot 函数在一张图上绘制两个相同长度的向量。 plot(x,y)plot 函数接受一个附加参数。使用该参数&#xff0c;您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。 plot(x,y,"r--o")以上命令将会绘制一条红色 虚线 (–)&#x…

Spring @Lazy批注用例

Spring框架几乎可以毫不费力地为您解决许多常见的编程问题&#xff0c;但是它的某些功能比其他功能鲜为人知。 在本文中&#xff0c;我们将仔细研究属于该组的Lazy批注。 阅读了几个示例之后&#xff0c;您应该能够将注释应用于日常开发任务。 1. 懒豆初始化 Spring的默认行为…

MATLAB入门(三)

求平均值 两种方法生成列向量 读取文件 将数据保存到小数点后两位 result round(M,2);将矩阵中的每个元素都三次方 x3 x.^3将矩阵中的数据按照升序排序 sort(data)创建一个行变量计算每一个列变量的平均值 avg mean(data)diff函数 Y diff(X) 计算沿大小不等于 1…

Java学习 第三章 数组(一)一维数组

第三章 数组 3-1 数组的概述 数组&#xff1a;多个相同类型数据按一定的顺序排列的集合&#xff0c;并使用一个名字命名&#xff0c;并通过编号的方式对这些数据进行统一管理。 数组相关概念&#xff1a; 数组名、下标&#xff08;索引、角标&#xff09;、元素、数组的长度 数…

几个有用的word小技巧,保准提升效率~

这几天改报告改到头秃。年底了&#xff0c;实验室各种项目在结项&#xff0c;作为一名研一新生&#xff0c;理所应当地承担起了体力活的工作。主要负责项目报告的研究背景调研、报告汇总、格式调整等。 格式调整&#xff0c;看起来非常简单的一项工作&#xff0c;却是最费时费…

Java学习 第三章 数组(二)多维数组

多维数组的使用 由数组构成的数组 二维数组&#xff1a; ① 二维数组的声明和初始化 ② 如何调用数组的指定位置的元素 ③ 如何获取数组的长度 ④ 如何遍历数组 ⑤ 数组元素的默认初始化值 &#xff1a;见ArrayTest1.java 数组元素是整形&#xff1a;0 数组元素是浮点型&…

Spring Boot 2中的功能切换

无论您是否喜欢&#xff0c;软件开发都是一项协作活动。 整合工作一直被妖魔化&#xff0c;并被视为必不可少的邪恶。 有几种方法可以解决有效集成的挑战。 功能切换开关属于该组。 在本文中&#xff0c;您将在实践中看到如何在Spring Boot应用程序中使用功能切换&#xff08;也…

Java学习 第三章 数组(三)排序算法

** Java学习 第三章 数组&#xff08;三&#xff09;排序算法 ** 主要内容&#xff1a;排序算法、排序算法横向比较、Arrays工具类的使用、数组常见异常 1.数组中涉及到的常见算法&#xff1a;排序算法 1.1 排序算法分类&#xff1a;内部排序和外部排序 1.2 十大内部排序算…

xmx java_为什么我的Java进程比Xmx消耗更多的内存?

xmx java你们有些人去过那里。 您已经在启动脚本中添加了-Xmx选项&#xff0c;并放松了下来&#xff0c;因为您知道Java进程将不会消耗比经过微调的选项所允许的更多的内存。 然后&#xff0c;您感到非常讨厌。 要么自己检查开发/测试框中的过程表&#xff0c;要么事情真的变坏…

卫星通信系统概述

卫星通信系统指通过在轨人造卫星作为中继站对无线电信号进行转发&#xff0c;实现地面及空间等用户之间信息传输的系统。卫星通信系统组成包括空间段及地面段&#xff0c;系统组成如图所示。其中空间段主要指在轨卫星、对在轨卫星进行操控的地面站&#xff0c;这些地面站主要实…