代码规范器,你们能搞定吗?


一、 代码规范器功能简介

代码规范器根据统一的配置文件,对指定的程序文件进行规范化调整。

配置文件体现了代码规范器的功能,描述了需要对程序文件进行何种统一规范化操作。由于配置文件是统一的,而程序文件却是不确定的,因此不需要把被规范化的程序文件标识放在配置文件中。

随着代码规范器功能的完善,配置文件也将随之更改其格式与填写规范。因此,配置文件应有版本号,以识别其不同的格式与填写规范。

配置文件的形式,可以是XML文件、纯文本文件、数据库等各种形式。但为了扩展性和小巧易用性,建议采用XML文件。配置文件的文件名由代码规范器的设计人员确定,固定不可变更。代码规范器中有且只有一个配置文件。

程序文件类型:JAVA源程序、目标程序。

规范化调整操作分为两类:

 正调整

根据配置文件的设置,在程序文件中的指定位置增加指定的内容。如果程序文件中的指定位置已经有指定的内容,代码规范器不再做增加动作。

 反调整

根据配置文件的设置,在程序文件中的指定位置删除指定的内容。如果程序文件中的指定位置没有指定的内容,代码规范器不再做删除动作。

二、 代码规范器0.1版功能清单

 增加类属性

在程序文件类内增加新的属性。

例如:

程序文件原来面貌:

public class DBCon {

private ResultSet rs;

……

}

增加后的程序文件:

public class DBCon {

private Connection con;

private ResultSet rs;

……

}

 增加类方法及代码

在程序文件类中增加新方法及代码。

例如:

程序文件原来面貌:

public class DBCon {

private ResultSet rs;

……

}

增加后的程序文件:

public class DBCon {

private ResultSet rs;

public DBCon() throws Exception {

connection();

}

……

}

 在类方法内指定位置增加代码

在程序文件类中指定的方法内的指定位置,增加代码。

在方法内的指定位置,分为两种:方法内的最前部和最后部。

三、 代码规范器使用方法

代码规范器的使用方法有两种:

 命令行方式

格式:代码规范器 程序文件 调整操作分类

其中,调整操作分类  “+”表示正调整

“-”表示负调整

例如,代码规范器的文件名为BUILD.EXE,程序文件的文件名TEST.JAVA,准备进行正调整,则命令行执行方式为:“BUILD TEST.JAVA +”。

 接口调用方式

接口调用方式是提供给应用程序调用的方式。应用程序通过实例化代码规范器封装好的一个类,然后调用其中的指定方法,将需要进行调整的程序文件文件名和调整操作分类传递给该方法,实现对程序文件的调整。

四、 要求

编写、提交设计文档、源代码、目标代码。另需附一个通过接口调用方式的例子代码。







一家公司笔试的题目,各位可以给点意见吗?

我的想法是,换个公司面试。
这么变态的题目,比MS还BT。
如果真要做,建议用正则表达式。

拿这个作笔试? 是不是想到处找思想来了。 可是看看 很多open source的代码。 很多的。

[quote]配置文件的形式,可以是XML文件、纯文本文件、数据库等各种形式。但为了扩展性和小巧易用性,建议采用XML文件。配置文件的文件名由代码规范器的设计人员确定,固定不可变更。代码规范器中有且只有一个配置文件。
程序文件类型:JAVA源程序、目标程序。[/quote]

[quote]编写、提交设计文档、源代码、目标代码。另需附一个通过接口调用方式的例子代码。 [/quote]

感觉有些象找兼职的笔试题。

如果使用XML,可以使用DOM或者SAX解析,需要定义一些正调整或者负调整,包括属性值和位置等

[quote]正调整
根据配置文件的设置,在程序文件中的指定位置增加指定的内容。如果程序文件中的指定位置已经有指定的内容,代码规范器不再做增加动作。
 反调整
根据配置文件的设置,在程序文件中的指定位置删除指定的内容。如果程序文件中的指定位置没有指定的内容,代码规范器不再做删除动作。 [/quote]

至于实现,我想并不是很难,只是需要确认代码规范器的规模,如果只是在指定的位置增加指定的内容,删除指定的内容并不是很难。

另外问一下,如何确定指定位置没有指定的内容呢?是给定开始位置和结束位置以及希望的字符串吗?