开头
学习Android有一段时间,断断续续做过一些小的东西,涉及小的应用和2D游戏。做一个引擎的想法由来已久,呵呵,觉得原因有两个 一是可以实现,什么都做不出来的可能性比较小;二是实现起来不那么容易,在不断完善的过程中对Android的认识也能够得到进一步提高。
如果说有大一点的私心,大学生活马上过半,想为自己为团队留下好的回忆。学生团队,精力和经验都有限,不缺的是热情,牛人多指教:)。
首先介绍我们的七人团队,六程序一美工,六位程序员均为软件工程专业,三个大二下,两个大三下,母语都是java,美工大三下,数字媒体专业,熟悉opengl,本项目参加编码工作。
在此用本篇以及后续笔记记录我们引擎的诞生。
第一次会议
21日晚,开学的第二天,晚上8:30,会议室
本次会议是关于项目的第一次会议,由于大家都是第一参与这样的项目,联想到前期作出来的程序大都实现了功能但难以维护,大家在编码的过程中都有自己的风格,编写的代码注释不全,可读性差,而且大家毕竟都是学生,在学期内进行项目不得不考虑时间等问题,所以首先对今后的工作模式进行了确定。
1.成功的要素:时间、热情、意见交流、资源共享、进度的协调、代码的规范
2.以周为工作的时间单位,由于大家平时学习时间不相同,所以以周为单位,大家在每个周中完成周工作目标,工作时间自由确定。
3.代码优劣的评定角度:功能是否实现,效率是否满足要求,风格是否符合规范,是否较少冗余
4.代码周审,在项目早期就能够发现代码中的BUG; 分享经验,达到知识共享;避免开发人员犯一些很常见,很普通的错误;保证项目组人员的良好沟通; 使项目代码更容易维护;
5.代码的版本管理采用CVS
6.代码风格使用CheckStyle管理,代码风格约束如下所示
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"> <module name="Checker"> <!-- 重复代码的检查,超过10行就认为重复--> <module name="StrictDuplicateCode"> <property name="min" value="10"/> <property name="charset" value="UTF-8"/> </module> <module name="TreeWalker"> <!-- 需要包声明,不允许默认包 --> <module name="PackageDeclaration"/> <!-- 不允许import * --> <module name="AvoidStarImport"/> <!-- javadoc的检查 --> <!-- 检查所有的interface和class --> <module name="JavadocType"/> <!-- 检查所有方法的javadoc,可以不声明RuntimeException --> <module name="JavadocMethod"> <property name="allowUndeclaredRTE" value="true"/> </module> <!-- 检查某个变量的javadoc --> <module name="JavadocVariable"/> <!-- 命名方面的检查,它们都使用了Sun官方定的规则。 --> <!-- 类名(class 或interface) 的检查 --> <module name="TypeName"/> <!-- 变量的检查 --> <module name="MemberName"/> <!-- 方法名的检查 --> <module name="MethodName"/> <!-- 方法的参数名 --> <module name="ParameterName "/> <!-- 常量名的检查 --> <module name="ConstantName"/> <!-- 如果变量可以设为final,则设置成final --> <module name="FinalLocalVariable"/> <!-- java方式的数组风格 如String[] args --> <module name="ArrayTypeStyle"/> <!-- 长度方面的检查 --> <!-- 文件长度不超过1500行 --> <module name="FileLength"> <property name="max" value="1500"/> </module> <!-- 每行不超过120个字--> <module name="LineLength"> <property name="max" value="120"/> </module> <!-- 方法不超过35行 --> <module name="MethodLength"> <property name="tokens" value="METHOD_DEF"/> <property name="max" value="35"/> </module> <!-- 方法的参数个数不超过6个。 --> <module name="ParameterNumber"> <property name="max" value="6"/> </module> <!-- 多余的关键字 --> <module name="RedundantModifier"/> <!-- 对区域的检查 --> <!-- 不能出现空白区域 --> <module name="EmptyBlock"/> <!-- 所有区域都要使用大括号。 --> <module name="NeedBraces"/> <!-- 多余的括号 --> <module name="AvoidNestedBlocks"> <property name= "allowInSwitchCase" value="true"/> </module> <!-- 编码方面的检查 --> <!-- 不许出现空语句 --> <module name="EmptyStatement"/> <!-- 每个类都实现了equals()和hashCode() --> <module name="EqualsHashCode"/> <!-- 不许内部赋值 --> <module name="InnerAssignment"/> <!-- 不允许魔法数 --> <module name="MagicNumber"/> <!-- 循环控制变量不能被修改 --> <module name="ModifiedControlVariable"/> <!-- 多余的throw --> <module name="RedundantThrows"/> <!-- 不许使用未被简化的条件表达式 --> <module name="SimplifyBooleanExpression"/> <!-- 不许使用未被简化的布尔返回值 --> <module name="SimplifyBooleanReturn"/> <!-- String的比较不能用!= 和 == --> <module name="StringLiteralEquality"/> <!-- if最多嵌套3层 --> <module name="NestedIfDepth"> <property name="max" value="3"/> </module> <!-- try最多被嵌套1层 --> <module name="NestedTryDepth"/> <!-- clone方法必须调用了super.clone() --> <module name="SuperClone"/> <!-- finalize 必须调用了super.finalize() --> <module name="SuperFinalize"/> <!-- 不能catch java.lang.Exception --> <module name="IllegalCatch"> <property name="illegalClassNames" value="java.lang.Exception"/> </module> <!-- JUnitTestCase 的核心方法存在。 --> <module name="JUnitTestCase"/> <!-- 一个方法中最多有4个return --> <module name="ReturnCount"> <property name="max" value="4"/> </module> <!-- 不许对方法的参数赋值 --> <module name="ParameterAssignment"/> <!-- 不许有同样内容的String --> <module name="MultipleStringLiterals"/> <!-- 同一行不能有多个声明 --> <module name="MultipleVariableDeclarations"/> <!-- 各种量度 --> <!-- 布尔表达式的复杂度,不超过3 --> <module name="BooleanExpressionComplexity"/> <!-- 类数据的抽象耦合,不超过7 --> <module name="ClassDataAbstractionCoupling"/> <!-- 类的分散复杂度,不超过20 --> <module name="ClassFanOutComplexity"/> <!-- 函数的分支复杂度,不超过10 --> <module name="CyclomaticComplexity"/> <!-- NPath复杂度,不超过200 --> <module name="NPathComplexity"/> <!-- 杂项 --> <!-- 禁止使用System.out.println --> <module name="GenericIllegalRegexp"> <property name="format" value="System\.out\.println"/> <property name="ignoreComments" value="true"/> </module> </module> <!-- 检查翻译文件 --> <module name="Translation"/> </module>