编码规范及其代码_第1页
编码规范及其代码_第2页
编码规范及其代码_第3页
编码规范及其代码_第4页
编码规范及其代码_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、兰州理工大学课程设计 项目编号20160624文档编号4密 级内部学生公寓管理系统编码规范及其代码说明兰州理工大学评 审 日 期: 2016年1月15日第 30 页 共 30 页目 录1.导言31.1目的31.2范围31.3缩写说明31.4术语定义41.5引用标准41.6参考资料42. 编码格式规范42. 1缩进排版42. 2行长度42. 3断行规则:52. 4空行63.命名规范63. 1包(Packages)73. 2类(Classes)73. 3接口(Interfaces)73. 4方法(Methods)73. 5变量(Variables)73. 6实例变量(Instance Variab

2、les)83. 7常量(Constants)84声明规范84.1每行声明变量的数量84.2初始化84.3布局84.4包的声明94.5类和接口的声明95语句规范95.1简单语句95.2复合语句106.注释规范106. 1注释的方法106. 2开头注释116. 3类和接口的注释127. 代码范例128.目录规范121.导言1.1目的该文档的目的是描述学生公寓管理系统项目的编码规范和对代码的说明,其主要内容包括:l 编码规范l 命名规范l 注释规范l 语句规范l 声明规范l 目录设置l 代码说明本文档的预期的读者是:l 开发人员l 项目管理人员l 质量保证人员1.2范围该文档定义了本项目的代码编写规

3、范,以及部分代码描述和所有代码的说明。1.3缩写说明MVC(模式视图控制)的缩写,表示一个三层的结构体系。EJB(企业级)的缩写。1.4术语定义ClassJava程序中的一个程序单位,可以生成很多的实例。Packages 由很多的类组成的工作包。 1.5引用标准1 企业文档格式标准 2 Java语言编写规范1.6参考资料1 实战 美机械工业出版社 2 软件重构 清华大学出版社2. 编码格式规范2. 1缩进排版4个空格作为缩进排版的一个单位。2. 2行长度尽量避免一行的长度超过80个字符,用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。2. 3断行规则:当一个表达式无法容纳在一行内

4、时,可以依据如下一般规则断开: l 在一个逗号后面断开 l 在一个操作符前面断开 l 宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开(见下面的例子) l 新的一行应该与上一行同一级别表达式的开头处对齐 l 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格以下是两个断开算术表达式的例子。前者属于更高级别的断开,因为断开处位于括号表达式的外边。longName1 = longName2 * (longName3 + longName4 - longName5)+ 4 * longname6; /推荐longName1

5、= longName2 * (longName3 + longName4 -longName5) + 4 * longname6; /避免 以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格。 /规范的缩进someMethod ( int anArg, Object anotherArg, String yetAnotherArg,Object andStillAnother)/以8个空格来缩进,以避免非常纵深的缩进private static synchronized horkingLongMethodName(int

6、 anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如: /不可取的缩进方法if ( ( condition1 && condition2) | (condition3 && condition4)| ( condition5 && condition6) doSomethingAboutIt(); /可取的缩进方法一if ( ( condition1 &&

7、amp; condition2) | ( condition3 && conditin4 )| ! (condition5&& condition6) doSomethingAboutIt();/可取的缩进方法二if (condition1 && condition2) | (conditin3 && condition4) | ! ( condition5 && condition6 ) doSomethingAboutIt();三种可取的三元运算符的缩进格式:alpha = ( aLongBooleanExpr

8、ession) ? beta : gamma;alpha = ( aLongBooleanExpression) ? beta : gamma;alpha = ( aLongBooleanExpression) ? beta : gamma;2. 4空行 空行将逻辑相关的代码段分隔开,以提高可读性。 下列情况应该总是使用两个空行: l 一个源文件的两个片段(section)之间 l 类声明和接口声明之间 下列情况应该总是使用一个空行: l 两个方法之间 l 方法内的局部变量和方法的第一条语句之间 l 块注释或单行注释之前 l 一个方法内的两个逻辑段之间,用以提高可读性 3.命名规范 命名规范使

9、程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码。3. 1包(Packages) 一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com, edu, gov, mil, net, org, 或1981年ISO 3166标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(login names)。如:com.sun.eng com.apple.quicktime.v2 e

10、du.cmu.cs.bovik.cheese 3. 2类(Classes) 类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)。3. 3接口(Interfaces) 大小写规则与类名相似。3. 4方法(Methods) 方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 3. 5变量(Variables) 采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于

11、描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。3. 6实例变量(Instance Variables) 大小写规则和变量名相似,除了前面需要一个下划线,如:int _students.3. 7常量(Constants) 类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。4声明规范4.1每行声明变量的数量 推荐一行一个声明,因为这样以利于写注释。亦即:int level; / indentation level int size; / si

12、ze of table 要优于:int level, size; 不要将不同类型变量的声明放在同一行,例如: int foo, fooarray; /WRONG! 注意:上面的例子中,在类型和标识符之间放了一个空格。空格可使用制表符替代。4.2初始化 尽量在声明局部变量的同时初始化。唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算。 4.3布局 只在代码块的开始处声明变量。(一个块是指任何被包含在大括号""和""中间的代码。)不要在首次用到该变量时才声明之。这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性。 void myM

13、ethod() int int1=0;/beginning of method block if(condition) int int2=0;/beginning of "if" block . 该规则的一个例外是for循环的索引变量 for (int i = 0; i < maxLoops; i+) . 4.4包的声明在多数Java源文件中,第一个非注释行是包语句。我们的学生公寓管理系统包的声明采用如下规范:package com.entity.struts.form; / form包package com.manager.struts.action; /actio

14、n包4.5类和接口的声明 当编写类和接口是,应该遵守以下格式规则: l 在方法名与其参数列表之前的左括号"("间不要有空格 l 左大括号""位于声明语句同行的末尾 l 右大括号""另起一行,与相应的声明语句对齐,除非是一个空语句,""应紧跟在""之后 l 方法与方法之间以空行分隔 5语句规范5.1简单语句 每行至多包含一条语句,例如: argv+; /推荐argc-; /推荐argv+; argc-; /避免 5.2复合语句 复合语句是包含在大括号中的语句序列,形如" 语句 "

15、;。遵循原则如下:l 被括其中的语句应该较之复合语句缩进一个层次 l 左大括号""应位于复合语句起始行的行尾;右大括号""应另起一行并与复合语句首行对齐。l 大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。这样便于添加语句而无需担心由于忘了加括号而引入bug。 6.注释规范Java程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释使用/*.*/和/界定的注释。文档注释(被称为"doc comments")

16、是Java独有的,并由/*.*/界定。,描述Java的类、接口、构造器,方法,以及字段(field)。一个注释对应一个类、接口或成员。若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释或紧跟在声明后面的单行注释。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。 注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息。注释应该仅包含与阅读和理解在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息。6. 1注释的方法程序可以有四种实现注释的风格:块注释、单

17、行注释、尾端注释和行末注释。 块注释 块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。块注释之首应该有一个空行,用于把块注释和代码分割开来,比如: /* Here is a block comment. */ public class Example . 注意顶层(top-level)的类和接口是不缩进的,而其成员是缩进的。描述类和接口的文档注释的第一行(/*)不需缩进;随后的文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在

18、内,其文档注释的第一行缩进4格,随后每行都缩进5格。 单行注释 短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见"块注释")。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子: if (condition) /* Handle the condition. */ . 尾端注释 极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。以下是一个Java代码中尾端注释的例子: if(input=2) return TR

19、UE;/*特殊处理*/ else return isMine(input);/*调用函数isMine */ 行末注释 注释界定符"/",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。注意:l 频繁的注释有时反映出代码的低质量。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰。 l 注释不应写在用星号或其他字符画出来的大框里。注释不应包括诸如制表符和回退符之类的特殊字符。6. 2开头注释所有的源文件都应该在开头有一个类似C语言风格的注释,其中列出类名、版本信息、日期、作者以及版权声明。我们的学生公寓管理系统采用

20、的头注释统一为: /* System: Online CV System* Version:1.0 * Copyright (C) 2016 by XXX, Inc. All Rights Reserved. * Class: ValidateSessionTag * Summary:对用户的身份验证 * Create: 2016.1.15 程亚崇 * Update: 2016.1.15 程亚崇*/6. 3类和接口的注释类/接口文档注释(/*/):该注释中所需包含的信息,参见"LogonAction.java" 类/接口实现的注释(/*/):如果有必要的话,该注释应包含任何

21、有关整个类或接口的信息,而这些信息又不适合作为类/接口文档注释。7. 代码范例/* * System: Online CV System * Version: 1.0 * Copyright (C) 2016 by XXX, Inc. All Rights Reserved. * Summary: 循环打印用户信息 * Create: 2016.1.16 程亚崇 * Update: */8.目录规范开发环境是eclipse,所以开发环境的目录结构与运行环境的目录结构是一致的,只是在部署的运行环境中,可以不设置源代码的目录。开发目录如图。编码过程应该按照详细设计的规划进行,在伪代码的基础上,按照

22、编码标准和规范进行分模块编码。开发环境是eclipse,首先开发人员在开发过程中按照开发的目录将相应的文件存放在指定的目标下,进行调试,各个目录的说明如下:1)目录中存放所有的JAVA公用的模块1. 包entity中Student.java中是学生信息管理模块的方法package entity;public class Student private Integer id;private String name;private Integer suSheId;public Integer getId() return id;public void setId(Integer id) this.

23、id = id;public String getName() return name;public void setName(String name) = name;public Integer getSuSheId() return suSheId;public void setSuSheId(Integer suSheId) this.suSheId = suSheId;2. 包entity中Sushe.java中是宿舍信息管理模块的方法package entity;import java.util.List;public class SuShe private In

24、teger id;private List<Student> students;public Integer getId() return id;public void setId(Integer id) this.id = id;public List<Student> getStudents() return students;public void setStudents(List<Student> students) this.students = students;3. 包manage中StudentManage.java中是学生信息管理模块的具体

25、操作package manager;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.

26、IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.imageio.stream.FileImageInputStream;import entity.Student;public class StudentManager File file = new File("E:/xuesheng.txt");BufferedReader br = null;BufferedWriter bw=null;public List<

27、Student> getAllStudents()try br = new BufferedReader(new FileReader(file); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();List<Student> students=new ArrayList<Student>();String studentStr = null;while (true) try studentStr = br.readLine(); catch (

28、IOException e) e.printStackTrace();if(studentStr=null)return students;if(studentStr.trim().equals("")continue;Student student = trans(studentStr);students.add(student);public Student getStudentById(int id) try br = new BufferedReader(new FileReader(file); catch (FileNotFoundException e) /

29、TODO Auto-generated catch blocke.printStackTrace();String studentStr = null;while (true) try studentStr = br.readLine(); catch (IOException e) e.printStackTrace();if(studentStr=null)return null;if(studentStr.trim().equals("")continue;Student student = trans(studentStr);if (student.getId()

30、= id) return student;public Student getStudentByName(String name) try br = new BufferedReader(new FileReader(file); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();String studentStr = null;while (true) try studentStr = br.readLine(); catch (IOException e) e.print

31、StackTrace();if(studentStr=null)try br.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return null;if(studentStr.trim().equals("")continue;Student student = trans(studentStr);if (student.getName().equals(name) return student;public List<Student> ge

32、tStudentBySuSheId(int suSheId) try br = new BufferedReader(new FileReader(file); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();List<Student> students=new ArrayList<Student>();String studentStr = null;while (true) try studentStr = br.readLine(); catc

33、h (IOException e) e.printStackTrace();if(studentStr=null)return students;if(studentStr.trim().equals("")continue;Student student = trans(studentStr);if (student.getSuSheId()=suSheId) students.add(student);public void add(Student student2) List<Student> students=getAllStudents();stude

34、nts.add(student2);String str=""for(Student student:students)str+=(student.getId()+","+student.getName()+","+student.getSuSheId()+"n");try bw=new BufferedWriter(new FileWriter(file); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();try

35、 bw.append(str);bw.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void delete(Student student) deleteById(student.getId();public boolean deleteById(int id) List<Student> students=getAllStudents();boolean flag=false;for(int index=0;index<students.s

36、ize();index+)if(students.get(index).getId()=id)students.remove(index);flag=true;break;if(flag=false)return false;String str=""for(Student student:students)str+=(student.getId()+","+student.getName()+","+student.getSuSheId()+"n");try bw=new BufferedWriter(new F

37、ileWriter(file); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();try bw.append(str);bw.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return true;public Student trans(String sstr) Student student = new Student();String str = sstr.split(

38、",");student.setId(Integer.parseInt(str0);student.setName(str1);student.setSuSheId(Integer.parseInt(str2);return student;4. 包manage中SusheManage.java中是宿舍信息管理模块的具体操作package manager;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReade

39、r;import java.io.IOException;import entity.SuShe;public class SuSheManager File file = new File("E:/sushe.txt");BufferedReader br = null;public boolean contains(String suSheId) try br = new BufferedReader(new FileReader(file); catch (FileNotFoundException e) / TODO Auto-generated catch blo

40、cke.printStackTrace();String suSheStr=null;try suSheStr=br.readLine(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();String suShes=suSheStr.split(",");for(String id:suShes)if(id.equals(suSheId)return true;return false;public String getAllSuSheId() try br = new

41、BufferedReader(new FileReader(file); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();String suSheStr=null;try suSheStr=br.readLine(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return suSheStr.split(",");5. 包view中Main.jav

42、a中是宿舍宿舍管理系统的main方法操作package view;import java.awt.BorderLayout;import java.awt.EventQueue;import javax.sound.midi.MidiDevice.Info;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import java.awt.Font;import java.awt.Color;import javax

43、.swing.JTabbedPane;import javax.swing.JScrollPane;import javax.swing.JButton;import javax.swing.JTextField;import javax.swing.JTextPane;import entity.Student;import manager.StudentManager;import manager.SuSheManager;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.u

44、til.List;import javax.swing.JTextArea;public class Main extends JFrame private JPanel contentPane;private JTextField id;private JTextField name;private JTextField suSheId;private JTextField id2;private JTextField name2;private JTextField suSheId2;private JTextField id3;private JTextField suSheId3;/*

45、 * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try Main frame = new Main();frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* * Create the frame. */public Main() setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE

46、);setBounds(100, 100, 650, 532);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);tabbedPane.setBounds(10, 10, 638, 474);contentPane.add(tabbedPane);JPanel pan

47、el = new JPanel();tabbedPane.addTab("学生信息管理", null, panel, null);panel.setLayout(null);JLabel lblNewLabel = new JLabel("u5B66u751Fu4FE1u606Fu7BA1u7406");lblNewLabel.setForeground(Color.RED);lblNewLabel.setFont(new Font("微软雅黑", Font.BOLD, 44);lblNewLabel.setBounds(153, 2

48、6, 316, 44);panel.add(lblNewLabel);JTabbedPane tabbedPane_1 = new JTabbedPane(JTabbedPane.TOP);tabbedPane_1.setBounds(37, 106, 546, 294);panel.add(tabbedPane_1);JPanel panel_2 = new JPanel();tabbedPane_1.addTab("添加", null, panel_2, null);panel_2.setLayout(null);JLabel lblNewLabel_4 = new J

49、Label("u5B66u53F7");lblNewLabel_4.setBounds(173, 54, 54, 15);panel_2.add(lblNewLabel_4);JLabel lblNewLabel_5 = new JLabel("u59D3u540D");lblNewLabel_5.setBounds(173, 104, 54, 15);panel_2.add(lblNewLabel_5);JLabel lblNewLabel_6 = new JLabel("u5BBFu820Du53F7");lblNewLabel_

50、6.setBounds(173, 158, 54, 15);panel_2.add(lblNewLabel_6);id2 = new JTextField();id2.setBounds(271, 51, 66, 21);panel_2.add(id2);id2.setColumns(10);name2 = new JTextField();name2.setBounds(271, 101, 66, 21);panel_2.add(name2);name2.setColumns(10);suSheId2 = new JTextField();suSheId2.setBounds(271, 155, 66, 21);panel_2.add(suSheId2);suSheId2.setColumns(10);JButton submit = new JButton("u786Eu8BA4u6DFBu52A0");submit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) if(id2.getText().equals("")|name2.get

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论