联系我们:010-88559646

  老师群

170086145

  学生群

179326524

209318323

215410234

客服电话:010-88559646

代码结构及流程重构

时间:2019-01-31        来 源:中国软件杯

第八届大赛--A组赛题


初赛作品提交内容:源代码;可运行程序或可部署程序;相关文档(系统设计文档、README.md文档)

README.md文档应该有以下内容:简介、目录介绍、快速开始、测试、开发者、讨论

测试代码:即被扫描代码(请将测试代码打成zip包,或者在相关文档中给出github测试代码库地址);

演示视频(格式不限,时间尽量控制在7分钟以内)


赛题名称:代码结构及流程重构

组类: A 本科及以上  

赛题简介:介绍整个赛题的思路和整体要求

代码重构,即通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。而遵循某种约定好的编码规范则是代码重构过程中的基本约束条件。

编码规范可以因企业、部门、具体项目而异,并没有太多的好坏之分,但统一的编码规范有助于规范编码的风格,使代码具有更好的可读性,否则不利于我们对代码的维护和传承。

一般来说,编码规范的主要内容包括:

1、试图对编程风格、排版等作出约定,使不同的程序员能写出风格一致的程序;

2、试图指出常见的编程陷阱,帮助程序员提高程序质量;

3、试图指出晦涩罕用的语法,提醒程序员避免使用;

4、试图给出编程实践的一些建议,以便于程序员改善自己的程序设计。

赛题业务场景:描述赛题相关的真实企业业务背景。从真实场景中,适当简化或者提炼出适合比赛的赛题场景

大多数集成开发环境(IDE),如Eclipse系列、IDEA系列,Visual Studio系列等都内置了厂商提供的专有的编码规范格式化插件,也可在默认规则基础上进行简单的修订。主要实施方式为:本地校验 + 本地修改,即开发人员在本地格式化后,再提交到代码库。适合采用统一开发套件的中小型企业项目开发,或个人项目开发。

对于大型企业来说,因开发活动频繁,代码库数量巨大,同时应管理的需要,主要实施方式为:服务端校验 + 本地修改。即在代码评审、合并入库之前,通过服务端部署的编码规范检查器进行分析,在发现问题后,及时驳回提交通知修改。

作为代码准入的第一门槛,这种方式的缺点在于对开发效率的影响比较大,因为即使很小的规范问题也会阻塞后续流程的进行。同时,编码规范的实施作为一种周期性的开发活动,长期积累下来,因反复提交、修改造成的时间消耗也是很客观的。

故在此基础上,我们需要一种实现代码结构及流程重构的方法,使得可以检测并修复不符合规范的代码,以达到提高开发效率的目的。

功能性需求

1、实现代码格式重构(必做):根据给定的代码规范,实现不满足格式规范的代码,对其格式自动重构,重构后正确率需在99%以上。以Java为例,包括不得省略花括号、换行、空白、表达式圆括号等;

2、实现特定类型命名重构(必做):根据给定的代码规范,实现不满足命名规范的代码,对其命名自动重构,重构后,命名正确率需在99%以上。Java为例,包括:包命名,类命名,方法命名,常量命名,成员变量命名,参数命名,局部变量命名等;

3、等价语句互转(必做):根据给定的代码规范,实现不满足结构规范的代码,对其结构自动重构,重构后,结构正确率需在99%以上。如多条件单if语句/单条件多if互转,for/while互转,多if/switch互转等;

4、程序正确性性检测及自动修复(选做):修复形式不限,如空指针检测,可以通过在出现空指针的位置,增加判断、注释,显式的抛出异常等。

d非功能性需求

1)以敏捷开发的思想、过程和方法为指导;

2)所有代码以通过版本管理工具留存。

其他限制条件:开发环境、实验平台、开发语言、数据库、编译器等限制条件(请尽量明确)

  1. 支持主流编程语言,如C、C++、Java、Go、Python等等,任选一种语言即可;

  2. 考虑到适用范围及性能等原因,应尽可能减少要修复的目标代码对开发环境的依赖,如无需编译,不使用或下载外部依赖等。

 

测试数据或平台:提供给参赛者的测试环境和测试数据。(可提供电子档)

1、编码规范

Java为例https://google.github.io/styleguide/javaguide.html

其他语言可在该网址中查找:https://google.github.io/styleguide/

 

2GitHub上有潜在问题的工程代码。

开发所需设备及设备指标需求说明

其他要求

出题企业:百度在线网络技术(北京)有限公司

答疑老师联系方式:李老师 010-58001804

                                 liyancheng@baidu.com

 

主办单位

工业和信息化部

教育部

江苏省人民政府

承办单位

中国电子信息产业发展研究院

江苏省工业和信息化厅

江苏省教育厅

教育部高等学校计算机类专业教学指导委员会

信息技术新工科产学研联盟

执行单位

中国信息化周报

中国(南京)软件谷

江苏软件产业人才发展基金会

南京航空航天大学

关于我们

客服电话:010-88559646

邮编:100048

联系地址:北京市海淀区紫竹院路66号赛迪大厦18层

网站备案/许可证号:京ICP备05039896号-10     京公网安备 11010802020860号