Java编程学习助手系统中编码规则学习功能的建议外文翻译资料

 2022-04-29 21:15:48

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


2016第十届复杂,智能和软件密集系统国际会议

Java编程学习助手系统中编码规则学习功能的建议

Nobuo Funabiki,Takuy​​a Ogawa,Nobuya Ishihara,Minoru Kuribayashi电气与通信工程系

冈山大学,日本冈山电子邮件: funabiki@okayama-u.ac.jp

高文中电气工程系

台湾台北师范大学电子邮件: jungkao68@gmail.com

摘 要 - 由于Java具有可靠性,可移植性和可伸缩性,所以Java 已 经在许多大学和专业学校开授课程。 但是,由于 Java 编程 课程的时间有限,编码规则很少被教授。结果,学生编写的代码不是很通顺。 在本文中,我们提出了一种使用 Java 编程学习助理系统(JPLAS)中的静态代码分析器的编码 规则学习功能,针对那些已经完成语法学习并将要编写实用 代码的学生。 该功能的编码规则由命名规则,编码风格和潜在问题组成。 我们评估通过此功能重新编写的四个代码使可读性提高,以及通过学生完成的调查问卷提高可用性。在未来的研究中,我们预计这个函数将被用于Java 编程课程。

关键词 Java 编程 JPLAS 编码规则可读代码 Checkstyle PMD 教

介绍

于其在各种学习环境中的高可靠性,可移植性和可伸缩性,Java已被选为最流行的编程语言[1]。 因此,它已被广泛应用于各种工业实用系统。 因此,业界对Java编程教育有强烈的需求。 事实上,有很多大学和专业学校提供Java编程课程来应对这一挑战。 Java编程课程通常由课堂讲座的语法指令和计算机操作中的编程练习组成。

为了帮助老师和学生进行Java编程练习,我们开发了基于Web的Java编程学习助理系统(JPLAS)[2] - [5]。 JPLAS已经在Tomcat和MySQL上使用JSP / Servlet实现[6]。 JPLAS提供了编写代码的问题[2],以支持学生编写代码的自学。 一方面,它通过减少评估代码的负担并给予学生反馈来支持教师。 另一方面,它通过快速回答答案提供复杂的学习环境来激发学生的兴趣。

代码编写问题是基于测试驱动开发(TDD)方法[7],使用开源框架JUnit [8]实现的。 JUnit自动测试服务器中的代码,以验证学生提交时的正确性。 因此,学生可以重复写作,测试,

978-1-5090-0987-9/16 $31.00 copy; 2016 IEEE DOI 10.1109/CISIS.2016.94

修改和重新提交代码,直到他们可以完成分配的正确代码。

通常,可编程代码在编程阶段非常关键,以提高软件开发/管理项目的效率[9]。 据观察,通过遵循为每种编程语言定义的编码规则,可以提高代码可读性[10]。 例如,它们包括任何变量名必须从小写字符开始并且一个语句最多只能有80m字符的条件。 由于遵循编码规则的代码保持一致,因此人们很容易阅读和理解代码。 编码规则通常由命名规则,编码风格规则和潜在问题组成。

但是,在JPLAS中的代码编写问题中,学生提交的大部分代码都不能遵循编码规则,这使得它们远离可读代码。 这是由于Java编程课程的时间有限,学生尚未研究编码规则。 作为解决方案,可以有效地验证学生的代码是否遵循JPLAS服务器中的编码规则。

在本文中,我们提出了一种使用Java编程学习助理系统(JPLAS)中的静态代码分析器的编码规则学习功能,针对学习Java语法并将为最终项目编写大型实用代码的学生。 作为初步评价,通过本小组的5名学生回答的调查表,确认通过这个功能提炼的4个代码的可读性的提高。 在未来的研究中,我们将通过应用程序向Java编程课程中的学生评估所提议函数的可用性。

本文的其余部分组织如下:第II节介绍可读代码的编码规则。 第三节和第四节分别给出了可读的代码学习功能及其实现。 第五部分展示了提案的评估结果。 最后,第六节结束本文与未来的研究。

  1. 可读代码的编码规则

在本节中,我们简要介绍可读代码的编码规则。

  1. 可读代码的重要性

可读代码可以通过遵循编码规则来实现

已经为相应的编程定义

561

语言。 通过遵循编码规则,代码变得易于人们理解其结构和功能。 因此,可读代码可以避免引入功能错误或潜在错误并帮助发现它们。 而且,它可以提高代码的可维护性和可伸缩性。 因此,可读代码能够导致高质量系统的开发。 任何倾向于从事IT相关工作的学生应该掌握编写可读代码的技巧。

  1. 编码规则

编码规则表示用于生成高质量源代码的一组规则或约定。 通过遵循编码规则,将保持代码的一致性,这增强了可读性,可维护性和可扩展性。 在本文中,我们认为编码规则由命名规则,编码风格和潜在问题组成。

    1. 名规则:命名规则描述了在源代码中查找命名错误的规则。 这里,采用Camel案例[11]作为通用的Java命名规则。 对于表示变量,方法或方法参数的标识符,顶部字符应该是小写字母,其中两个单词之间的分隔符应该是大写字母。 对于代表一个类的标识符,它们都应该是大写字母。 对于表示常量的标识符,任何字符都应该是大写字母。 一个完整拼写的英文单词应该用于标识符名称,而日语或罗马日语不应该被使用。
    2. 编码风格:编码风格表示检测源代码中布局错误的规则。 它们包括缩进或托架的位置以及空白的存在。 通过遵循编码风格,源代码的布局将变得更加一致和可读。
    3. 潜在问题:潜在问题说明了用于发现源代码中可以通过编译的部分的规则,但可能导致功能错误或具有高可能性的错误。 它们包括死码和重叠码。 死代码表示源代码中根本不执行的部分,重叠代码表示源代码中具有相似结构和功能的多个部分。 通过解决潜在的问题,代码不仅可以提高可维护性和可伸缩性,而且可以加快执行速度。
  1. JPLAS中编码规则学习的动机

目前,编程课程由课堂中的语法课程和实验室中使用个人计算机(PC)编程练习组成。 由于分配给课程的课程时间有限,编码规则很少受到任何一方的教育。 因此,学生编写的大部分代码都不遵循编码规则。 他们经常使用不正确的名称作为标识符,将缩进或括号放在错误的位置,并且缺乏解释意义或意图的重要注释。 基于上述原因,这些代码远离可读代码。 如果学生在这种情况下开始编写最终项目或实际系统的代码,他们可能无法及时完成正确的编程。 此外,

他们可以在向其他项目成员解释代码集成或向初级成员移交他们的代码时遇到困难或麻烦。 因此,JPLAS应该为学生提供自己学习编码规则的功能。

  1. 编码规则学习功能的建议在本节中,我们将介绍编码规则学习功能

在JPLAS。

  1. 使用流程

该功能的使用流程如下所示:

    1. 输入一个Java源代码。
    2. 测试代码的命名规则。
    3. 测试代码的编码风格。
    4. 测试代码的潜在问题。

在这里,我们假设(2) - (4)测试彼此不同的编码规则。 因为(3)测试包含类名称和方法名称的Javadoc注释,(2)首先对它们进行测试。

  1. 命名规则测试

对于命名规则测试,我们在提议的函数中实现了一个Java程序,因为没有合适的工具可用于此测试。 首先,1)我们测试代码中的每个标识符是否遵循骆驼案例。 如果某些标识符不遵循它们,则会突出显示。 然后,2)在英语词典[12]的支持下,我们测试每个标识符是否描述了正确的英语。 最后,3)我们测试标识符名称的长度是否在一定范围内。 使用太长或太短名称的标识符通常很难用于编码或理解其作用。

  1. 骆驼案例测试:我们使用正则表达式来测试每个标识符是否遵循骆驼案例。 类名的正则表达式由[az] [a-zA-Z0-9]给出◆$,其中顶部和分隔符都必须是大写字母,并且只能使用字母或数字。 如果标识符名称不符合正则表达式的某些条件,则会输出错误。
  2. 英语词典测试:我们假设任何标识符都遵循骆驼案例。 因此,我们将大写字母前面的标识符名称分隔为常量标识符的单词集合。 对于常量标识符,我们将它们分开之前的下方吧。

然后,我们测试每个分词是否包含在英语词典[12]中。 如果包含,我们认为它是一个正确的英语单词。 否则,它会输出错误。 这个测试的优点是避免拼写错误是有帮助的。 此外,通常具有大小,停止或制造等多种含义的抽象词被提取以改变。 为此,我们准备收集这些抽象词的词典。

  1. 长度测试:我们测试标识符名称的长度是否存在于3到17之间。 如果标识符不符合规则,则会输出错误。 但是,此测试中排除了循环计数器的标识符,因为在那里经常使用一个字符。
  2. 编码风格测试

在函数中,我们使用Checkstyle [13]来测试源代码的编码风格,Checkstyle是一种代表性的静态代码分析器。 Checkstyle提供了测试Java开发人员定义的Java的标准编码规则的函数[14]。 Checkstyle分析源代码并将违规报告给规则。 在函数中,我们使用了与Checkstyle中的编码风格相关的以下规则,尽管它有一些命名规则:

  • Javadoc评论:

Javadoc评论的存在以及对每个类,方法和变量的有效性(如果存在)进行测试。

  • 大小违规:

测试每种方法中的陈述数量和一个陈述的长度。

  • 编码:

编码问题,例如深层嵌套和幻数的使用被测试。

  • 课堂设计:

对类设计问题进行测试,比如没有公共构造函数的类的最终定义。

  • 进口:

导入语句的存在性和有效性(如果存在的话)进行测试。

  • 空格处:

在一个单词,一个符号或一个数字之前和之后的空格或标签的存在被测试。

  • 头:

源文件的标头内容(如许可证声明)已经过测试。

  • 块检查:

测试每个括号的位置和空块的存在。

  • 修饰符:

测试访问修饰符的出现顺序和冗余度。

  • 指标:

测试了几个代码度量标准,例如一个类中生成的对象的数量和代码的圈数。

  1. 潜在的问题测试

在函数中,我们使用另一个常见的静态代码分析器PMD [15]来测试源代码的潜在问题。 PMD分析源代码并将违规情况报告给Checkstyle等规则。 在我们的实施中,我们使用以下与PMD中潜在问题相关的规则

  1. 尽管它有与命名和编码风格相关的其他规则。
    • Java记录:

测试源代码中的日志输出函数。

    • 优化:

代码优化已经过测试。 它包括所分配变量的最终声明的存在

一个值只有一次,并在一个循环内生成对象。

    • 耦合:

对象和包装之间的耦合被测试。

    • 争议:

测试了源代码中不必要的构造函数和标识的存在。

    • 严格例外:

测试源代码中抛出异常的部分。

    • 设计:

测试了不适当代码设计的使用。

  1. 测试结果示例

在本小节中,我们展示了使用程序1中的Bubble排序代码的建议函数中的测试结果示例

,

,

程序1

01:class BubbleSort

02: {

03: public static void bubble_sort(int [] arr)04: {

05: int size=arr.length;

06: for(int i = 0; i lt;size-1; i ){07: for(int j = size-1; jgt; i; j - ){

08: 如果(ARR [J-1]gt; ARR [J]){

09: int t=arr[j];

10: arr[j]=arr[j-1];

11: arr[j-1]=t;

12: }

13: }

14: }

15: }

\16: } J

  1. 命名规则测试:表I显示程序1命名规则测试的结果。方法名称bubble_sort不遵循骆驼案例,该案例应该转换为bubbleSort。

    全文共7764字,剩余内容已隐藏,支付完成后下载完整资料


    资料编号:[13055],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版